'use strict'; const common = require('../common'); if (!common.hasCrypto) common.skip('missing crypto'); const assert = require('assert'); const { generateKeyPairSync, } = require('crypto'); const { assertApproximateSize, testEncryptDecrypt, testSignVerify, pkcs1PubExp, pkcs8Exp, } = require('../common/crypto'); // To make the test faster, we will only test sync key generation once and // with a relatively small key. { const ret = generateKeyPairSync('rsa', { publicExponent: 3, modulusLength: 512, publicKeyEncoding: { type: 'pkcs1', format: 'pem' }, privateKeyEncoding: { type: 'pkcs8', format: 'pem' } }); assert.strictEqual(Object.keys(ret).length, 2); const { publicKey, privateKey } = ret; assert.strictEqual(typeof publicKey, 'string'); assert.match(publicKey, pkcs1PubExp); assertApproximateSize(publicKey, 162); assert.strictEqual(typeof privateKey, 'string'); assert.match(privateKey, pkcs8Exp); assertApproximateSize(privateKey, 512); testEncryptDecrypt(publicKey, privateKey); testSignVerify(publicKey, privateKey); }