Browse Source

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>
v6
joyeecheung 8 years ago
committed by Rich Trott
parent
commit
aeec621017
  1. 20
      test/parallel/test-crypto-pbkdf2.js

20
test/parallel/test-crypto-pbkdf2.js

@ -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…
Cancel
Save