test: improve test for crypto pbkdf2
- use assert.strictEqual instead of assert.equal - add regexp for assert.throws PR-URL: https://github.com/nodejs/node/pull/9883 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
ad6a6450c9
commit
aeec621017
@ -13,10 +13,10 @@ var crypto = require('crypto');
|
|||||||
//
|
//
|
||||||
function testPBKDF2(password, salt, iterations, keylen, expected) {
|
function testPBKDF2(password, salt, iterations, keylen, expected) {
|
||||||
var actual = crypto.pbkdf2Sync(password, salt, iterations, keylen, 'sha256');
|
var actual = crypto.pbkdf2Sync(password, salt, iterations, keylen, 'sha256');
|
||||||
assert.equal(actual.toString('latin1'), expected);
|
assert.strictEqual(actual.toString('latin1'), expected);
|
||||||
|
|
||||||
crypto.pbkdf2(password, salt, iterations, keylen, 'sha256', (err, actual) => {
|
crypto.pbkdf2(password, salt, iterations, keylen, 'sha256', (err, actual) => {
|
||||||
assert.equal(actual.toString('latin1'), expected);
|
assert.strictEqual(actual.toString('latin1'), expected);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,43 +47,43 @@ testPBKDF2('pass\0word', 'sa\0lt', 4096, 16,
|
|||||||
var expected =
|
var expected =
|
||||||
'64c486c55d30d4c5a079b8823b7d7cb37ff0556f537da8410233bcec330ed956';
|
'64c486c55d30d4c5a079b8823b7d7cb37ff0556f537da8410233bcec330ed956';
|
||||||
var key = crypto.pbkdf2Sync('password', 'salt', 32, 32, 'sha256');
|
var key = crypto.pbkdf2Sync('password', 'salt', 32, 32, 'sha256');
|
||||||
assert.equal(key.toString('hex'), expected);
|
assert.strictEqual(key.toString('hex'), expected);
|
||||||
|
|
||||||
crypto.pbkdf2('password', 'salt', 32, 32, 'sha256', common.mustCall(ondone));
|
crypto.pbkdf2('password', 'salt', 32, 32, 'sha256', common.mustCall(ondone));
|
||||||
function ondone(err, key) {
|
function ondone(err, key) {
|
||||||
if (err) throw err;
|
if (err) throw err;
|
||||||
assert.equal(key.toString('hex'), expected);
|
assert.strictEqual(key.toString('hex'), expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Error path should not leak memory (check with valgrind).
|
// Error path should not leak memory (check with valgrind).
|
||||||
assert.throws(function() {
|
assert.throws(function() {
|
||||||
crypto.pbkdf2('password', 'salt', 1, 20, null);
|
crypto.pbkdf2('password', 'salt', 1, 20, null);
|
||||||
});
|
}, /^Error: No callback provided to pbkdf2$/);
|
||||||
|
|
||||||
// Should not work with Infinity key length
|
// Should not work with Infinity key length
|
||||||
assert.throws(function() {
|
assert.throws(function() {
|
||||||
crypto.pbkdf2('password', 'salt', 1, Infinity, 'sha256', common.fail);
|
crypto.pbkdf2('password', 'salt', 1, Infinity, 'sha256', common.fail);
|
||||||
}, /Bad key length/);
|
}, /^TypeError: Bad key length$/);
|
||||||
|
|
||||||
// Should not work with negative Infinity key length
|
// Should not work with negative Infinity key length
|
||||||
assert.throws(function() {
|
assert.throws(function() {
|
||||||
crypto.pbkdf2('password', 'salt', 1, -Infinity, 'sha256', common.fail);
|
crypto.pbkdf2('password', 'salt', 1, -Infinity, 'sha256', common.fail);
|
||||||
}, /Bad key length/);
|
}, /^TypeError: Bad key length$/);
|
||||||
|
|
||||||
// Should not work with NaN key length
|
// Should not work with NaN key length
|
||||||
assert.throws(function() {
|
assert.throws(function() {
|
||||||
crypto.pbkdf2('password', 'salt', 1, NaN, 'sha256', common.fail);
|
crypto.pbkdf2('password', 'salt', 1, NaN, 'sha256', common.fail);
|
||||||
}, /Bad key length/);
|
}, /^TypeError: Bad key length$/);
|
||||||
|
|
||||||
// Should not work with negative key length
|
// Should not work with negative key length
|
||||||
assert.throws(function() {
|
assert.throws(function() {
|
||||||
crypto.pbkdf2('password', 'salt', 1, -1, 'sha256', common.fail);
|
crypto.pbkdf2('password', 'salt', 1, -1, 'sha256', common.fail);
|
||||||
}, /Bad key length/);
|
}, /^TypeError: Bad key length$/);
|
||||||
|
|
||||||
// Should not work with key length that does not fit into 32 signed bits
|
// Should not work with key length that does not fit into 32 signed bits
|
||||||
assert.throws(function() {
|
assert.throws(function() {
|
||||||
crypto.pbkdf2('password', 'salt', 1, 4073741824, 'sha256', common.fail);
|
crypto.pbkdf2('password', 'salt', 1, 4073741824, 'sha256', common.fail);
|
||||||
}, /Bad key length/);
|
}, /^TypeError: Bad key length$/);
|
||||||
|
|
||||||
// Should not get FATAL ERROR with empty password and salt
|
// Should not get FATAL ERROR with empty password and salt
|
||||||
// https://github.com/nodejs/node/issues/8571
|
// https://github.com/nodejs/node/issues/8571
|
||||||
|
Loading…
x
Reference in New Issue
Block a user