'use strict'; const common = require('../common'); if (!common.hasCrypto) common.skip('missing crypto'); const assert = require('assert'); const { generateKeyPair, } = require('crypto'); // Test async elliptic curve key generation with 'jwk' encoding. { [ 'ed25519', 'ed448', 'x25519', 'x448', ].forEach((type) => { generateKeyPair(type, { publicKeyEncoding: { format: 'jwk' }, privateKeyEncoding: { format: 'jwk' } }, common.mustSucceed((publicKey, privateKey) => { assert.strictEqual(typeof publicKey, 'object'); assert.strictEqual(typeof privateKey, 'object'); assert.strictEqual(publicKey.x, privateKey.x); assert(!publicKey.d); assert(privateKey.d); assert.strictEqual(publicKey.kty, 'OKP'); assert.strictEqual(publicKey.kty, privateKey.kty); const expectedCrv = `${type.charAt(0).toUpperCase()}${type.slice(1)}`; assert.strictEqual(publicKey.crv, expectedCrv); assert.strictEqual(publicKey.crv, privateKey.crv); })); }); }