Skip to content

Commit 4faa30c

Browse files
joyeecheungUlisesGascon
authored andcommitted
test: split JWK async elliptic curve keygen tests
PR-URL: #49221 Refs: #49202 Refs: #41206 Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
1 parent e04a260 commit 4faa30c

3 files changed

Lines changed: 97 additions & 84 deletions
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
'use strict';
2+
3+
constcommon=require('../common');
4+
if(!common.hasCrypto)
5+
common.skip('missing crypto');
6+
7+
constassert=require('assert');
8+
const{
9+
generateKeyPair,
10+
}=require('crypto');
11+
12+
// Test async elliptic curve key generation with 'jwk' encoding and named
13+
// curve.
14+
['P-384','P-256','P-521','secp256k1'].forEach((curve)=>{
15+
generateKeyPair('ec',{
16+
namedCurve: curve,
17+
publicKeyEncoding: {
18+
format: 'jwk'
19+
},
20+
privateKeyEncoding: {
21+
format: 'jwk'
22+
}
23+
},common.mustSucceed((publicKey,privateKey)=>{
24+
assert.strictEqual(typeofpublicKey,'object');
25+
assert.strictEqual(typeofprivateKey,'object');
26+
assert.strictEqual(publicKey.x,privateKey.x);
27+
assert.strictEqual(publicKey.y,privateKey.y);
28+
assert(!publicKey.d);
29+
assert(privateKey.d);
30+
assert.strictEqual(publicKey.kty,'EC');
31+
assert.strictEqual(publicKey.kty,privateKey.kty);
32+
assert.strictEqual(publicKey.crv,curve);
33+
assert.strictEqual(publicKey.crv,privateKey.crv);
34+
}));
35+
});
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
'use strict';
2+
3+
constcommon=require('../common');
4+
if(!common.hasCrypto)
5+
common.skip('missing crypto');
6+
7+
constassert=require('assert');
8+
const{
9+
generateKeyPair,
10+
}=require('crypto');
11+
12+
// Test async elliptic curve key generation with 'jwk' encoding and RSA.
13+
{
14+
generateKeyPair('rsa',{
15+
modulusLength: 4096,
16+
publicKeyEncoding: {
17+
format: 'jwk'
18+
},
19+
privateKeyEncoding: {
20+
format: 'jwk'
21+
}
22+
},common.mustSucceed((publicKey,privateKey)=>{
23+
assert.strictEqual(typeofpublicKey,'object');
24+
assert.strictEqual(typeofprivateKey,'object');
25+
assert.strictEqual(publicKey.kty,'RSA');
26+
assert.strictEqual(publicKey.kty,privateKey.kty);
27+
assert.strictEqual(typeofpublicKey.n,'string');
28+
assert.strictEqual(publicKey.n,privateKey.n);
29+
assert.strictEqual(typeofpublicKey.e,'string');
30+
assert.strictEqual(publicKey.e,privateKey.e);
31+
assert.strictEqual(typeofprivateKey.d,'string');
32+
assert.strictEqual(typeofprivateKey.p,'string');
33+
assert.strictEqual(typeofprivateKey.q,'string');
34+
assert.strictEqual(typeofprivateKey.dp,'string');
35+
assert.strictEqual(typeofprivateKey.dq,'string');
36+
assert.strictEqual(typeofprivateKey.qi,'string');
37+
}));
38+
}

‎test/parallel/test-crypto-keygen-async-elliptic-curve-jwk.js‎

Lines changed: 24 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -9,92 +9,32 @@ const {
99
generateKeyPair,
1010
}=require('crypto');
1111

12-
// Test async elliptic curve key generation with 'jwk' encoding
12+
// Test async elliptic curve key generation with 'jwk' encoding.
1313
{
1414
[
15-
['ec',['P-384','P-256','P-521','secp256k1']],
16-
['rsa'],
17-
['ed25519'],
18-
['ed448'],
19-
['x25519'],
20-
['x448'],
21-
].forEach((types)=>{
22-
const[type,options]=types;
23-
switch(type){
24-
case'ec': {
25-
returnoptions.forEach((curve)=>{
26-
generateKeyPair(type,{
27-
namedCurve: curve,
28-
publicKeyEncoding: {
29-
format: 'jwk'
30-
},
31-
privateKeyEncoding: {
32-
format: 'jwk'
33-
}
34-
},common.mustSucceed((publicKey,privateKey)=>{
35-
assert.strictEqual(typeofpublicKey,'object');
36-
assert.strictEqual(typeofprivateKey,'object');
37-
assert.strictEqual(publicKey.x,privateKey.x);
38-
assert.strictEqual(publicKey.y,privateKey.y);
39-
assert(!publicKey.d);
40-
assert(privateKey.d);
41-
assert.strictEqual(publicKey.kty,'EC');
42-
assert.strictEqual(publicKey.kty,privateKey.kty);
43-
assert.strictEqual(publicKey.crv,curve);
44-
assert.strictEqual(publicKey.crv,privateKey.crv);
45-
}));
46-
});
15+
'ed25519',
16+
'ed448',
17+
'x25519',
18+
'x448',
19+
].forEach((type)=>{
20+
generateKeyPair(type,{
21+
publicKeyEncoding: {
22+
format: 'jwk'
23+
},
24+
privateKeyEncoding: {
25+
format: 'jwk'
4726
}
48-
case'rsa': {
49-
returngenerateKeyPair(type,{
50-
modulusLength: 4096,
51-
publicKeyEncoding: {
52-
format: 'jwk'
53-
},
54-
privateKeyEncoding: {
55-
format: 'jwk'
56-
}
57-
},common.mustSucceed((publicKey,privateKey)=>{
58-
assert.strictEqual(typeofpublicKey,'object');
59-
assert.strictEqual(typeofprivateKey,'object');
60-
assert.strictEqual(publicKey.kty,'RSA');
61-
assert.strictEqual(publicKey.kty,privateKey.kty);
62-
assert.strictEqual(typeofpublicKey.n,'string');
63-
assert.strictEqual(publicKey.n,privateKey.n);
64-
assert.strictEqual(typeofpublicKey.e,'string');
65-
assert.strictEqual(publicKey.e,privateKey.e);
66-
assert.strictEqual(typeofprivateKey.d,'string');
67-
assert.strictEqual(typeofprivateKey.p,'string');
68-
assert.strictEqual(typeofprivateKey.q,'string');
69-
assert.strictEqual(typeofprivateKey.dp,'string');
70-
assert.strictEqual(typeofprivateKey.dq,'string');
71-
assert.strictEqual(typeofprivateKey.qi,'string');
72-
}));
73-
}
74-
case'ed25519':
75-
case'ed448':
76-
case'x25519':
77-
case'x448': {
78-
generateKeyPair(type,{
79-
publicKeyEncoding: {
80-
format: 'jwk'
81-
},
82-
privateKeyEncoding: {
83-
format: 'jwk'
84-
}
85-
},common.mustSucceed((publicKey,privateKey)=>{
86-
assert.strictEqual(typeofpublicKey,'object');
87-
assert.strictEqual(typeofprivateKey,'object');
88-
assert.strictEqual(publicKey.x,privateKey.x);
89-
assert(!publicKey.d);
90-
assert(privateKey.d);
91-
assert.strictEqual(publicKey.kty,'OKP');
92-
assert.strictEqual(publicKey.kty,privateKey.kty);
93-
constexpectedCrv=`${type.charAt(0).toUpperCase()}${type.slice(1)}`;
94-
assert.strictEqual(publicKey.crv,expectedCrv);
95-
assert.strictEqual(publicKey.crv,privateKey.crv);
96-
}));
97-
}
98-
}
27+
},common.mustSucceed((publicKey,privateKey)=>{
28+
assert.strictEqual(typeofpublicKey,'object');
29+
assert.strictEqual(typeofprivateKey,'object');
30+
assert.strictEqual(publicKey.x,privateKey.x);
31+
assert(!publicKey.d);
32+
assert(privateKey.d);
33+
assert.strictEqual(publicKey.kty,'OKP');
34+
assert.strictEqual(publicKey.kty,privateKey.kty);
35+
constexpectedCrv=`${type.charAt(0).toUpperCase()}${type.slice(1)}`;
36+
assert.strictEqual(publicKey.crv,expectedCrv);
37+
assert.strictEqual(publicKey.crv,privateKey.crv);
38+
}));
9939
});
10040
}

0 commit comments

Comments
 (0)