diff --git a/src/security/secret-equal.ts b/src/security/secret-equal.ts index 4ea80b321f1..4e0e3ead29b 100644 --- a/src/security/secret-equal.ts +++ b/src/security/secret-equal.ts @@ -1,4 +1,4 @@ -import { timingSafeEqual } from "node:crypto"; +import { createHash, timingSafeEqual } from "node:crypto"; export function safeEqualSecret( provided: string | undefined | null, @@ -7,10 +7,6 @@ export function safeEqualSecret( if (typeof provided !== "string" || typeof expected !== "string") { return false; } - const providedBuffer = Buffer.from(provided); - const expectedBuffer = Buffer.from(expected); - if (providedBuffer.length !== expectedBuffer.length) { - return false; - } - return timingSafeEqual(providedBuffer, expectedBuffer); + const hash = (s: string) => createHash("sha256").update(s).digest(); + return timingSafeEqual(hash(provided), hash(expected)); }