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} = require('crypto');
11
12// This tests check that generateKeyPair returns correct bit length in
13// KeyObject's asymmetricKeyDetails.
14// https://github.com/nodejs/node/issues/46102#issuecomment-1372153541
15{
16  generateKeyPair('rsa', {
17    modulusLength: 513,
18  }, common.mustSucceed((publicKey, privateKey) => {
19    assert.strictEqual(privateKey.asymmetricKeyDetails.modulusLength, 513);
20    assert.strictEqual(publicKey.asymmetricKeyDetails.modulusLength, 513);
21  }));
22
23  generateKeyPair('rsa-pss', {
24    modulusLength: 513,
25  }, common.mustSucceed((publicKey, privateKey) => {
26    assert.strictEqual(privateKey.asymmetricKeyDetails.modulusLength, 513);
27    assert.strictEqual(publicKey.asymmetricKeyDetails.modulusLength, 513);
28  }));
29
30  if (common.hasOpenSSL3) {
31    generateKeyPair('dsa', {
32      modulusLength: 2049,
33      divisorLength: 256,
34    }, common.mustSucceed((publicKey, privateKey) => {
35      assert.strictEqual(privateKey.asymmetricKeyDetails.modulusLength, 2049);
36      assert.strictEqual(publicKey.asymmetricKeyDetails.modulusLength, 2049);
37    }));
38  }
39}
40