1'use strict'; 2 3const common = require('../common'); 4if (!common.hasCrypto) 5 common.skip('missing crypto'); 6 7const assert = require('assert'); 8const { 9 generateKeyPair, 10} = require('crypto'); 11 12// Test async elliptic curve key generation with 'jwk' encoding. 13{ 14 [ 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' 26 } 27 }, common.mustSucceed((publicKey, privateKey) => { 28 assert.strictEqual(typeof publicKey, 'object'); 29 assert.strictEqual(typeof privateKey, '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 const expectedCrv = `${type.charAt(0).toUpperCase()}${type.slice(1)}`; 36 assert.strictEqual(publicKey.crv, expectedCrv); 37 assert.strictEqual(publicKey.crv, privateKey.crv); 38 })); 39 }); 40} 41