Skip to content

Commit d54edec

Browse files
tniessenBethGriggs
authored andcommitted
test: refactor test-crypto-pbkdf2
PR-URL: #35693 Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
1 parent 6e91d64 commit d54edec

1 file changed

Lines changed: 27 additions & 53 deletions

File tree

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

Lines changed: 27 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,26 @@ if (!common.hasCrypto)
66
constassert=require('assert');
77
constcrypto=require('crypto');
88

9-
//
10-
// Test PBKDF2 with RFC 6070 test vectors (except #4)
11-
//
12-
functiontestPBKDF2(password,salt,iterations,keylen,expected){
13-
constactual=
14-
crypto.pbkdf2Sync(password,salt,iterations,keylen,'sha256');
15-
assert.strictEqual(actual.toString('latin1'),expected);
9+
functionrunPBKDF2(password,salt,iterations,keylen,hash){
10+
constsyncResult=
11+
crypto.pbkdf2Sync(password,salt,iterations,keylen,hash);
1612

17-
crypto.pbkdf2(password,salt,iterations,keylen,'sha256',(err,actual)=>{
18-
assert.strictEqual(actual.toString('latin1'),expected);
19-
});
13+
crypto.pbkdf2(password,salt,iterations,keylen,hash,
14+
common.mustSucceed((asyncResult)=>{
15+
assert.deepStrictEqual(asyncResult,syncResult);
16+
}));
17+
18+
returnsyncResult;
19+
}
20+
21+
functiontestPBKDF2(password,salt,iterations,keylen,expected,encoding){
22+
constactual=runPBKDF2(password,salt,iterations,keylen,'sha256');
23+
assert.strictEqual(actual.toString(encoding||'latin1'),expected);
2024
}
2125

26+
//
27+
// Test PBKDF2 with RFC 6070 test vectors (except #4)
28+
//
2229

2330
testPBKDF2('password','salt',1,20,
2431
'\x12\x0f\xb6\xcf\xfc\xf8\xb3\x2c\x43\xe7\x22\x52'+
@@ -43,15 +50,9 @@ testPBKDF2('pass\0word', 'sa\0lt', 4096, 16,
4350
'\x89\xb6\x9d\x05\x16\xf8\x29\x89\x3c\x69\x62\x26\x65'+
4451
'\x0a\x86\x87');
4552

46-
constexpected=
47-
'64c486c55d30d4c5a079b8823b7d7cb37ff0556f537da8410233bcec330ed956';
48-
constkey=crypto.pbkdf2Sync('password','salt',32,32,'sha256');
49-
assert.strictEqual(key.toString('hex'),expected);
50-
51-
crypto.pbkdf2('password','salt',32,32,'sha256',common.mustSucceed(ondone));
52-
functionondone(key){
53-
assert.strictEqual(key.toString('hex'),expected);
54-
}
53+
testPBKDF2('password','salt',32,32,
54+
'64c486c55d30d4c5a079b8823b7d7cb37ff0556f537da8410233bcec330ed956',
55+
'hex');
5556

5657
// Error path should not leak memory (check with valgrind).
5758
assert.throws(
@@ -197,38 +198,12 @@ assert.throws(
197198
);
198199
});
199200

200-
// Any TypedArray should work for password and salt
201-
crypto.pbkdf2(newUint8Array(10),'salt',8,8,'sha256',common.mustSucceed());
202-
crypto.pbkdf2('pass',newUint8Array(10),8,8,'sha256',common.mustSucceed());
203-
crypto.pbkdf2(newUint16Array(10),'salt',8,8,'sha1',common.mustSucceed());
204-
crypto.pbkdf2('pass',newUint16Array(10),8,8,'sha1',common.mustSucceed());
205-
crypto.pbkdf2(newUint32Array(10),'salt',8,8,'sha1',common.mustSucceed());
206-
crypto.pbkdf2('pass',newUint32Array(10),8,8,'sha1',common.mustSucceed());
207-
crypto.pbkdf2(newFloat32Array(10),'salt',8,8,'sha1',common.mustSucceed());
208-
crypto.pbkdf2('pass',newFloat32Array(10),8,8,'sha1',common.mustSucceed());
209-
crypto.pbkdf2(newFloat64Array(10),'salt',8,8,'sha1',common.mustSucceed());
210-
crypto.pbkdf2('pass',newFloat64Array(10),8,8,'sha1',common.mustSucceed());
211-
crypto.pbkdf2(newArrayBuffer(10),'salt',8,8,'sha1',common.mustSucceed());
212-
crypto.pbkdf2('pass',newArrayBuffer(10),8,8,'sha1',common.mustSucceed());
213-
crypto.pbkdf2(newSharedArrayBuffer(10),'salt',8,8,'sha256',
214-
common.mustSucceed());
215-
crypto.pbkdf2('pass',newSharedArrayBuffer(10),8,8,'sha256',
216-
common.mustSucceed());
217-
218-
crypto.pbkdf2Sync(newUint8Array(10),'salt',8,8,'sha256');
219-
crypto.pbkdf2Sync('pass',newUint8Array(10),8,8,'sha256');
220-
crypto.pbkdf2Sync(newUint16Array(10),'salt',8,8,'sha256');
221-
crypto.pbkdf2Sync('pass',newUint16Array(10),8,8,'sha256');
222-
crypto.pbkdf2Sync(newUint32Array(10),'salt',8,8,'sha256');
223-
crypto.pbkdf2Sync('pass',newUint32Array(10),8,8,'sha256');
224-
crypto.pbkdf2Sync(newFloat32Array(10),'salt',8,8,'sha256');
225-
crypto.pbkdf2Sync('pass',newFloat32Array(10),8,8,'sha256');
226-
crypto.pbkdf2Sync(newFloat64Array(10),'salt',8,8,'sha256');
227-
crypto.pbkdf2Sync('pass',newFloat64Array(10),8,8,'sha256');
228-
crypto.pbkdf2Sync(newArrayBuffer(10),'salt',8,8,'sha256');
229-
crypto.pbkdf2Sync('pass',newArrayBuffer(10),8,8,'sha256');
230-
crypto.pbkdf2Sync(newSharedArrayBuffer(10),'salt',8,8,'sha256');
231-
crypto.pbkdf2Sync('pass',newSharedArrayBuffer(10),8,8,'sha256');
201+
// Any TypedArray should work for password and salt.
202+
for(constSomeArrayof[Uint8Array,Uint16Array,Uint32Array,Float32Array,
203+
Float64Array,ArrayBuffer,SharedArrayBuffer]){
204+
runPBKDF2(newSomeArray(10),'salt',8,8,'sha256');
205+
runPBKDF2('pass',newSomeArray(10),8,8,'sha256');
206+
}
232207

233208
assert.throws(
234209
()=>crypto.pbkdf2('pass','salt',8,8,'md55',common.mustNotCall()),
@@ -252,6 +227,5 @@ const kNotPBKDF2Supported = ['shake128', 'shake256'];
252227
crypto.getHashes()
253228
.filter((hash)=>!kNotPBKDF2Supported.includes(hash))
254229
.forEach((hash)=>{
255-
crypto.pbkdf2Sync(newUint8Array(10),'salt',8,8,hash);
256-
crypto.pbkdf2(newUint8Array(10),'salt',8,8,hash,common.mustCall());
230+
runPBKDF2(newUint8Array(10),'salt',8,8,hash);
257231
});

0 commit comments

Comments
 (0)