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 generateKeyPairSync, 11 getCurves, 12} = require('crypto'); 13 14// This test creates EC key pairs on curves without associated OIDs. 15// Specifying a key encoding should not crash. 16{ 17 if (process.versions.openssl >= '1.1.1i') { 18 for (const namedCurve of ['Oakley-EC2N-3', 'Oakley-EC2N-4']) { 19 if (!getCurves().includes(namedCurve)) 20 continue; 21 22 const expectedErrorCode = 23 common.hasOpenSSL3 ? 'ERR_OSSL_MISSING_OID' : 'ERR_OSSL_EC_MISSING_OID'; 24 const params = { 25 namedCurve, 26 publicKeyEncoding: { 27 format: 'der', 28 type: 'spki' 29 } 30 }; 31 32 assert.throws(() => { 33 generateKeyPairSync('ec', params); 34 }, { 35 code: expectedErrorCode 36 }); 37 38 generateKeyPair('ec', params, common.mustCall((err) => { 39 assert.strictEqual(err.code, expectedErrorCode); 40 })); 41 } 42 } 43} 44