Skip to content

Commit 7925938

Browse files
aduh95ruyadorno
authored andcommitted
crypto: fix DiffieHellman argument validation
Fixes: #37808 PR-URL: #37810 Reviewed-By: James M Snell <[email protected]> Reviewed-By: Filip Skokan <[email protected]> Reviewed-By: Darshan Sen <[email protected]> Reviewed-By: Benjamin Gruenbaum <[email protected]>
1 parent 3452618 commit 7925938

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

lib/internal/crypto/diffiehellman.js

+11-3
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,20 @@ function DiffieHellman(sizeOrKey, keyEncoding, generator, genEncoding) {
118118
if (typeof sizeOrKey !== 'number')
119119
sizeOrKey = toBuf(sizeOrKey, keyEncoding);
120120

121-
if (!generator)
121+
if (!generator) {
122122
generator = DH_GENERATOR;
123-
else if (typeof generator === 'number')
123+
} else if (typeof generator === 'number') {
124124
validateInt32(generator, 'generator');
125-
else
125+
} else if (generator !== true) {
126126
generator = toBuf(generator, genEncoding);
127+
} else {
128+
throw new ERR_INVALID_ARG_TYPE(
129+
'generator',
130+
['number', 'string', 'ArrayBuffer', 'Buffer', 'TypedArray', 'DataView'],
131+
generator
132+
);
133+
}
134+
127135

128136
this[kHandle] = new _DiffieHellman(sizeOrKey, generator);
129137
ObjectDefineProperty(this, 'verifyError', {

test/parallel/test-crypto-dh.js

+6
Original file line numberDiff line numberDiff line change
@@ -489,3 +489,9 @@ assert.throws(
489489
'crypto.getDiffieHellman(\'modp1\').setPublicKey(\'\') ' +
490490
'failed to throw the expected error.'
491491
);
492+
assert.throws(
493+
() => crypto.createDiffieHellman('', true),
494+
{
495+
code: 'ERR_INVALID_ARG_TYPE'
496+
}
497+
);

0 commit comments

Comments
 (0)