Skip to content

Commit 46ece20

Browse files
aduh95targos
authored andcommittedMay 1, 2021
crypto: fix DiffieHellman argument validation
Fixes: #37808 PR-URL: #37810 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
1 parent d89d55a commit 46ece20

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
@@ -75,12 +75,20 @@ function DiffieHellman(sizeOrKey, keyEncoding, generator, genEncoding) {
7575
if (typeof sizeOrKey !== 'number')
7676
sizeOrKey = toBuf(sizeOrKey, keyEncoding);
7777

78-
if (!generator)
78+
if (!generator) {
7979
generator = DH_GENERATOR;
80-
else if (typeof generator === 'number')
80+
} else if (typeof generator === 'number') {
8181
validateInt32(generator, 'generator');
82-
else
82+
} else if (generator !== true) {
8383
generator = toBuf(generator, genEncoding);
84+
} else {
85+
throw new ERR_INVALID_ARG_TYPE(
86+
'generator',
87+
['number', 'string', 'ArrayBuffer', 'Buffer', 'TypedArray', 'DataView'],
88+
generator
89+
);
90+
}
91+
8492

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

‎test/parallel/test-crypto-dh.js

+6
Original file line numberDiff line numberDiff line change
@@ -471,3 +471,9 @@ assert.throws(
471471
'crypto.getDiffieHellman(\'modp1\').setPublicKey(\'\') ' +
472472
'failed to throw the expected error.'
473473
);
474+
assert.throws(
475+
() => crypto.createDiffieHellman('', true),
476+
{
477+
code: 'ERR_INVALID_ARG_TYPE'
478+
}
479+
);

0 commit comments

Comments
 (0)
Please sign in to comment.