19 lines
408 B
JavaScript
19 lines
408 B
JavaScript
const { timingSafeEqual: TSE } = require('crypto')
|
|
|
|
const paddedBuffer = (input, length) => {
|
|
if (input.length === length) {
|
|
return input
|
|
}
|
|
|
|
const buffer = Buffer.alloc(length)
|
|
input.copy(buffer)
|
|
return buffer
|
|
}
|
|
|
|
const timingSafeEqual = (a, b) => {
|
|
const length = Math.max(a.length, b.length)
|
|
return TSE(paddedBuffer(a, length), paddedBuffer(b, length))
|
|
}
|
|
|
|
module.exports = timingSafeEqual
|