Skip to content

Commit c1b7674

Browse files
bnoordhuistargos
authored andcommitted
crypto: generator must be int32 in DiffieHellman()
Validate the generator argument in `crypto.createDiffieHellman(key, g)`. When it's a number, it should be an int32. Fixes: #32748 PR-URL: #32739 Fixes: #32738 Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Zeyu Yang <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 4236175 commit c1b7674

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

lib/internal/crypto/diffiehellman.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@ function DiffieHellman(sizeOrKey, keyEncoding, generator, genEncoding) {
7777

7878
if (!generator)
7979
generator = DH_GENERATOR;
80-
else if (typeof generator !== 'number')
80+
else if (typeof generator === 'number')
81+
validateInt32(generator, 'generator');
82+
else
8183
generator = toBuf(generator, genEncoding);
8284

8385
this[kHandle] = new _DiffieHellman(sizeOrKey, generator);

test/parallel/test-crypto-dh.js

+7
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ assert.throws(() => crypto.createDiffieHellman(13.37), {
3030
'It must be an integer. Received 13.37',
3131
});
3232

33+
assert.throws(() => crypto.createDiffieHellman('abcdef', 13.37), {
34+
code: 'ERR_OUT_OF_RANGE',
35+
name: 'RangeError',
36+
message: 'The value of "generator" is out of range. ' +
37+
'It must be an integer. Received 13.37',
38+
});
39+
3340
for (const bits of [-1, 0, 1]) {
3441
assert.throws(() => crypto.createDiffieHellman(bits), {
3542
code: 'ERR_OSSL_BN_BITS_TOO_SMALL',

0 commit comments

Comments
 (0)