'use strict';
const common = require('../common');
if (!common.hasCrypto)
common.skip('missing crypto');
const assert = require('node:assert');
const {
Certificate,
createPrivateKey,
createPublicKey,
diffieHellman,
generateKeyPairSync,
} = require('node:crypto');
const fixtures = require('../common/fixtures');
const privateKeyPem = fixtures.readKey('rsa_private.pem');
const rsaPublicKey = createPublicKey(fixtures.readKey('rsa_public.pem'));
const ec = generateKeyPairSync('ec', { namedCurve: 'P-256' });
function parseValidPrivateKey() {
// This must not pick up an error from the preceding operation.
createPrivateKey(privateKeyPem);
}
assert.strictEqual(rsaPublicKey.equals(ec.publicKey), false);
parseValidPrivateKey();
for (const method of ['verifySpkac', 'exportPublicKey', 'exportChallenge']) {
Certificate[method](Buffer.from('garbage'));
parseValidPrivateKey();
}
assert.throws(() => diffieHellman({
privateKey: ec.privateKey,
publicKey: {
key: {
kty: 'EC',
crv: 'P-256',
x: 'AAAA',
y: 'AAAA',
},
format: 'jwk',
},
}), { code: 'ERR_CRYPTO_INVALID_JWK' });
parseValidPrivateKey();