(a: string, b: string)
| 6 | * secrets where leaking length or content via timing must be avoided. |
| 7 | */ |
| 8 | export function safeCompare(a: string, b: string): boolean { |
| 9 | const key = 'safeCompare' |
| 10 | const ha = createHmac('sha256', key).update(a).digest() |
| 11 | const hb = createHmac('sha256', key).update(b).digest() |
| 12 | return timingSafeEqual(ha, hb) |
| 13 | } |
no outgoing calls
no test coverage detected