Skip to content

Commit

Permalink
crypto: return correct bit length in KeyObject's asymmetricKeyDetails
Browse files Browse the repository at this point in the history
  • Loading branch information
panva committed Jan 5, 2023
1 parent 198d203 commit 00811fa
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/crypto/crypto_dsa.cc
Expand Up @@ -147,8 +147,8 @@ Maybe<bool> GetDsaKeyDetail(

DSA_get0_pqg(dsa, &p, &q, nullptr);

size_t modulus_length = BN_num_bytes(p) * CHAR_BIT;
size_t divisor_length = BN_num_bytes(q) * CHAR_BIT;
size_t modulus_length = BN_num_bits(p);
size_t divisor_length = BN_num_bits(q);

if (target
->Set(
Expand Down
2 changes: 1 addition & 1 deletion src/crypto/crypto_rsa.cc
Expand Up @@ -529,7 +529,7 @@ Maybe<bool> GetRsaKeyDetail(

RSA_get0_key(rsa, &n, &e, nullptr);

size_t modulus_length = BN_num_bytes(n) * CHAR_BIT;
size_t modulus_length = BN_num_bits(n);

if (target
->Set(
Expand Down
27 changes: 27 additions & 0 deletions test/parallel/test-crypto-keygen.js
Expand Up @@ -1817,3 +1817,30 @@ generateKeyPair('rsa', {
hashAlgorithm: 'sha1'
}, common.mustNotCall()), { code: 'ERR_INVALID_ARG_VALUE' });
}

{
// https://github.com/nodejs/node/issues/46102#issuecomment-1372153541

generateKeyPair('rsa', {
modulusLength: 513,
}, common.mustSucceed((publicKey, privateKey) => {
assert.strictEqual(privateKey.asymmetricKeyDetails.modulusLength, 513);
assert.strictEqual(publicKey.asymmetricKeyDetails.modulusLength, 513);
}));

generateKeyPair('rsa-pss', {
modulusLength: 513,
}, common.mustSucceed((publicKey, privateKey) => {
assert.strictEqual(privateKey.asymmetricKeyDetails.modulusLength, 513);
assert.strictEqual(publicKey.asymmetricKeyDetails.modulusLength, 513);
}));

const dsaModulusLength = common.hasOpenSSL3 ? 2049 : 513;
generateKeyPair('dsa', {
modulusLength: dsaModulusLength,
divisorLength: 256,
}, common.mustSucceed((publicKey, privateKey) => {
assert.strictEqual(privateKey.asymmetricKeyDetails.modulusLength, dsaModulusLength);
assert.strictEqual(publicKey.asymmetricKeyDetails.modulusLength, dsaModulusLength);
}));
}

0 comments on commit 00811fa

Please sign in to comment.