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 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(typeof publicKey, 'object'); 25 assert.strictEqual(typeof privateKey, '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}); 36