From 12a2465a9d263f5005c42fcac147b0bde62fd707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Mon, 23 Aug 2021 12:34:30 +0000 Subject: [PATCH] crypto: add RSA-PSS params to asymmetricKeyDetails Fixes: https://github.com/nodejs/node/issues/39837 Refs: https://github.com/openssl/openssl/pull/10568 PR-URL: https://github.com/nodejs/node/pull/39851 Reviewed-By: James M Snell Reviewed-By: Filip Skokan --- doc/api/crypto.md | 16 +++- src/crypto/crypto_rsa.cc | 82 ++++++++++++++++++- src/env.h | 3 + test/fixtures/keys/Makefile | 8 ++ .../rsa_pss_private_2048_sha1_sha1_20.pem | 28 +++++++ .../keys/rsa_pss_public_2048_sha1_sha1_20.pem | 9 ++ test/parallel/test-crypto-key-objects.js | 52 ++++++++++++ test/parallel/test-crypto-keygen.js | 10 ++- 8 files changed, 200 insertions(+), 8 deletions(-) create mode 100644 test/fixtures/keys/rsa_pss_private_2048_sha1_sha1_20.pem create mode 100644 test/fixtures/keys/rsa_pss_public_2048_sha1_sha1_20.pem diff --git a/doc/api/crypto.md b/doc/api/crypto.md index 8318b20ca3003f..ae38a31beb09eb 100644 --- a/doc/api/crypto.md +++ b/doc/api/crypto.md @@ -1908,11 +1908,20 @@ const { ### `keyObject.asymmetricKeyDetails` * {Object} * `modulusLength`: {number} Key size in bits (RSA, DSA). * `publicExponent`: {bigint} Public exponent (RSA). + * `hashAlgorithm`: {string} Name of the message digest (RSA-PSS). + * `mgf1HashAlgorithm`: {string} Name of the message digest used by + MGF1 (RSA-PSS). + * `saltLength`: {number} Minimal salt length in bytes (RSA-PSS). * `divisorLength`: {number} Size of `q` in bits (DSA). * `namedCurve`: {string} Name of the curve (EC). @@ -1921,8 +1930,11 @@ this object contains information about the key. None of the information obtained through this property can be used to uniquely identify a key or to compromise the security of the key. -RSA-PSS parameters, DH, or any future key type details might be exposed via this -API using additional attributes. +For RSA-PSS keys, if the key material contains a `RSASSA-PSS-params` sequence, +the `hashAlgorithm`, `mgf1HashAlgorithm`, and `saltLength` properties will be +set. + +Other key details might be exposed via this API using additional attributes. ### `keyObject.asymmetricKeyType`