암호 키 등록 챌린지 처리 방식을 세션 업그레이드 챌린지 처리 방식과 동일하게 변경

This commit is contained in:
static
2025-01-12 07:59:49 +09:00
parent 1a86c8d9e0
commit be8587694e
3 changed files with 36 additions and 31 deletions

View File

@@ -8,8 +8,7 @@ import {
getUserClient,
setUserClientStateToPending,
registerUserClientChallenge,
getUserClientChallenge,
markUserClientChallengeAsUsed,
consumeUserClientChallenge,
} from "$lib/server/db/client";
import { IntegrityError } from "$lib/server/db/error";
import { verifyPubKey, verifySignature, generateChallenge } from "$lib/server/modules/crypto";
@@ -81,15 +80,11 @@ export const verifyUserClient = async (
answer: string,
answerSig: string,
) => {
const challenge = await getUserClientChallenge(answer, ip);
const challenge = await consumeUserClientChallenge(userId, answer, ip);
if (!challenge) {
error(403, "Invalid challenge answer");
} else if (challenge.userId !== userId) {
error(403, "Forbidden");
}
await markUserClientChallengeAsUsed(challenge.id);
const client = await getClient(challenge.clientId);
if (!client) {
error(500, "Invalid challenge answer");
@@ -97,7 +92,7 @@ export const verifyUserClient = async (
error(403, "Invalid challenge answer signature");
}
await setUserClientStateToPending(userId, challenge.clientId);
await setUserClientStateToPending(userId, client.id);
};
export const getUserClientStatus = async (userId: number, clientId: number) => {