mirror of
https://github.com/movie-web/backend.git
synced 2025-09-13 13:03:26 +00:00
Handle errors in challenge assertion
This commit is contained in:
@@ -1,4 +1,8 @@
|
|||||||
import { ChallengeCode } from '@/db/models/ChallengeCode';
|
import {
|
||||||
|
ChallengeCode,
|
||||||
|
ChallengeFlow,
|
||||||
|
ChallengeType,
|
||||||
|
} from '@/db/models/ChallengeCode';
|
||||||
import { StatusError } from '@/services/error';
|
import { StatusError } from '@/services/error';
|
||||||
import { EntityManager } from '@mikro-orm/core';
|
import { EntityManager } from '@mikro-orm/core';
|
||||||
import forge from 'node-forge';
|
import forge from 'node-forge';
|
||||||
@@ -28,19 +32,23 @@ export async function assertChallengeCode(
|
|||||||
if (challenge.expiresAt.getTime() <= now)
|
if (challenge.expiresAt.getTime() <= now)
|
||||||
throw new StatusError('Challenge Code Expired', 401);
|
throw new StatusError('Challenge Code Expired', 401);
|
||||||
|
|
||||||
const verifiedChallenge = forge.pki.ed25519.verify({
|
try {
|
||||||
publicKey: new forge.util.ByteStringBuffer(
|
const verifiedChallenge = forge.pki.ed25519.verify({
|
||||||
Buffer.from(publicKey, 'base64url'),
|
publicKey: new forge.util.ByteStringBuffer(
|
||||||
),
|
Buffer.from(publicKey, 'base64url'),
|
||||||
encoding: 'utf8',
|
),
|
||||||
signature: new forge.util.ByteStringBuffer(
|
encoding: 'utf8',
|
||||||
Buffer.from(signature, 'base64url'),
|
signature: new forge.util.ByteStringBuffer(
|
||||||
),
|
Buffer.from(signature, 'base64url'),
|
||||||
message: code,
|
),
|
||||||
});
|
message: code,
|
||||||
|
});
|
||||||
|
|
||||||
if (!verifiedChallenge)
|
if (!verifiedChallenge)
|
||||||
|
throw new StatusError('Challenge Code Signature Invalid', 401);
|
||||||
|
|
||||||
|
em.remove(challenge);
|
||||||
|
} catch (e) {
|
||||||
throw new StatusError('Challenge Code Signature Invalid', 401);
|
throw new StatusError('Challenge Code Signature Invalid', 401);
|
||||||
|
}
|
||||||
em.remove(challenge);
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user