Skip to content

Commit b8fef1e

Browse files
Tango992panva
andauthored
Replace buffer-equal-constant-time with crypto.timingSafeEqual (#52)
* refactor: replace buffer-equal-constant-time with crypto.timingSafeEqual buffer-equal-constant-time uses SlowBuffer that has been removed on Node 24 * refactor: falls back to `buffer-equal-constant-time` for older Node versions where `timingSafeEqual` is not available. Co-authored-by: Filip Skokan <[email protected]> --------- Co-authored-by: Filip Skokan <[email protected]>
1 parent 181cc05 commit b8fef1e

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

index.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
var bufferEqual = require('buffer-equal-constant-time');
21
var Buffer = require('safe-buffer').Buffer;
32
var crypto = require('crypto');
43
var formatEcdsa = require('ecdsa-sig-formatter');
@@ -135,10 +134,25 @@ function createHmacSigner(bits) {
135134
}
136135
}
137136

137+
var bufferEqual;
138+
var timingSafeEqual = 'timingSafeEqual' in crypto ? function timingSafeEqual(a, b) {
139+
if (a.byteLength !== b.byteLength) {
140+
return false;
141+
}
142+
143+
return crypto.timingSafeEqual(a, b)
144+
} : function timingSafeEqual(a, b) {
145+
if (!bufferEqual) {
146+
bufferEqual = require('buffer-equal-constant-time');
147+
}
148+
149+
return bufferEqual(a, b)
150+
}
151+
138152
function createHmacVerifier(bits) {
139153
return function verify(thing, signature, secret) {
140154
var computedSig = createHmacSigner(bits)(thing, secret);
141-
return bufferEqual(Buffer.from(signature), Buffer.from(computedSig));
155+
return timingSafeEqual(Buffer.from(signature), Buffer.from(computedSig));
142156
}
143157
}
144158

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"test": "test"
88
},
99
"dependencies": {
10-
"buffer-equal-constant-time": "1.0.1",
10+
"buffer-equal-constant-time": "^1.0.1",
1111
"ecdsa-sig-formatter": "1.0.11",
1212
"safe-buffer": "^5.0.1"
1313
},

0 commit comments

Comments
 (0)