Request Body의 필드마다 서명하지 않고, 데이터 전체에 대해 서명하도록 개선

This commit is contained in:
static
2024-12-31 09:32:37 +09:00
parent 5c535d1191
commit 0d00e2476a
10 changed files with 73 additions and 55 deletions

View File

@@ -1,18 +1,16 @@
import { error } from "@sveltejs/kit";
import { getAllUserClients, getClient, setUserClientStateToActive } from "$lib/server/db/client";
import { getAllUserClients, setUserClientStateToActive } from "$lib/server/db/client";
import {
getAllValidClientMeks,
registerInitialMek,
registerActiveMek,
getNextActiveMekVersion,
} from "$lib/server/db/mek";
import { verifySignature } from "$lib/server/modules/crypto";
import { isInitialMekNeeded } from "$lib/server/modules/mek";
interface NewClientMek {
clientId: number;
encMek: string;
sigEncMek: string;
}
export const getClientMekList = async (userId: number, clientId: number) => {
@@ -30,19 +28,11 @@ export const registerInitialActiveMek = async (
userId: number,
createdBy: number,
encMek: string,
sigEncMek: string,
) => {
if (!(await isInitialMekNeeded(userId))) {
error(409, "Initial MEK already registered");
}
const client = await getClient(createdBy);
if (!client) {
error(500, "Invalid access token");
} else if (!verifySignature(encMek, sigEncMek, client.sigPubKey)) {
error(400, "Invalid signature");
}
await registerInitialMek(userId, createdBy, encMek);
await setUserClientStateToActive(userId, createdBy);
};
@@ -63,17 +53,6 @@ export const registerNewActiveMek = async (
error(400, "Invalid key list");
}
const client = await getClient(createdBy);
if (!client) {
error(500, "Invalid access token");
} else if (
!clientMeks.every(({ encMek, sigEncMek }) =>
verifySignature(encMek, sigEncMek, client.sigPubKey),
)
) {
error(400, "Invalid signature");
}
const newMekVersion = await getNextActiveMekVersion(userId);
await registerActiveMek(userId, newMekVersion, createdBy, clientMeks);
};