'use strict'; const common = require('../common'); if (!common.hasCrypto) common.skip('missing crypto'); const assert = require('assert'); const { generateKeyPair, } = require('crypto'); const { assertApproximateSize, testEncryptDecrypt, testSignVerify, } = require('../common/crypto'); // Test async RSA key generation with an encrypted private key, but encoded as DER. { generateKeyPair('rsa', { publicExponent: 0x10001, modulusLength: 512, publicKeyEncoding: { type: 'pkcs1', format: 'der' }, privateKeyEncoding: { type: 'pkcs8', format: 'der' } }, common.mustSucceed((publicKeyDER, privateKeyDER) => { assert(Buffer.isBuffer(publicKeyDER)); assertApproximateSize(publicKeyDER, 74); assert(Buffer.isBuffer(privateKeyDER)); const publicKey = { key: publicKeyDER, type: 'pkcs1', format: 'der', }; const privateKey = { key: privateKeyDER, format: 'der', type: 'pkcs8', passphrase: 'secret' }; testEncryptDecrypt(publicKey, privateKey); testSignVerify(publicKey, privateKey); })); }