@@ -896,17 +896,32 @@ console.log(sign.sign(privateKey).toString('hex'));
896
896
### sign.sign(private_key[ , output_format] )
897
897
<!-- YAML
898
898
added: v0.1.92
899
+ changes:
900
+ - version: REPLACEME
901
+ pr-url: https://github.com/nodejs/node/pull/11705
902
+ description: Support for RSASSA-PSS and additional options was added.
899
903
-->
900
904
901
905
Calculates the signature on all the data passed through using either
902
906
[ ` sign.update() ` ] [ ] or [ ` sign.write() ` ] [ stream-writable-write ] .
903
907
904
908
The ` private_key ` argument can be an object or a string. If ` private_key ` is a
905
909
string, it is treated as a raw key with no passphrase. If ` private_key ` is an
906
- object, it is interpreted as a hash containing two properties:
910
+ object, it must contain one or more of the following properties:
907
911
908
- * ` key ` : {string} - PEM encoded private key
912
+ * ` key ` : {string} - PEM encoded private key (required)
909
913
* ` passphrase ` : {string} - passphrase for the private key
914
+ * ` padding ` : {integer} - Optional padding value for RSA, one of the following:
915
+ * ` crypto.constants.RSA_PKCS1_PADDING ` (default)
916
+ * ` crypto.constants.RSA_PKCS1_PSS_PADDING `
917
+
918
+ Note that ` RSA_PKCS1_PSS_PADDING ` will use MGF1 with the same hash function
919
+ used to sign the message as specified in section 3.1 of [ RFC 4055] [ ] .
920
+ * ` saltLength ` : {integer} - salt length for when padding is
921
+ ` RSA_PKCS1_PSS_PADDING ` . The special value
922
+ ` crypto.constants.RSA_PSS_SALTLEN_DIGEST ` sets the salt length to the digest
923
+ size, ` crypto.constants.RSA_PSS_SALTLEN_MAX_SIGN ` (default) sets it to the
924
+ maximum permissible value.
910
925
911
926
The ` output_format ` can specify one of ` 'latin1' ` , ` 'hex' ` or ` 'base64' ` . If
912
927
` output_format ` is provided a string is returned; otherwise a [ ` Buffer ` ] [ ] is
@@ -989,11 +1004,33 @@ This can be called many times with new data as it is streamed.
989
1004
### verifier.verify(object, signature[ , signature_format] )
990
1005
<!-- YAML
991
1006
added: v0.1.92
1007
+ changes:
1008
+ - version: REPLACEME
1009
+ pr-url: https://github.com/nodejs/node/pull/11705
1010
+ description: Support for RSASSA-PSS and additional options was added.
992
1011
-->
1012
+ - ` object ` {string | Object}
1013
+ - ` signature ` {string | Buffer | Uint8Array}
1014
+ - ` signature_format ` {string}
993
1015
994
1016
Verifies the provided data using the given ` object ` and ` signature ` .
995
- The ` object ` argument is a string containing a PEM encoded object, which can be
996
- one an RSA public key, a DSA public key, or an X.509 certificate.
1017
+ The ` object ` argument can be either a string containing a PEM encoded object,
1018
+ which can be an RSA public key, a DSA public key, or an X.509 certificate,
1019
+ or an object with one or more of the following properties:
1020
+
1021
+ * ` key ` : {string} - PEM encoded public key (required)
1022
+ * ` padding ` : {integer} - Optional padding value for RSA, one of the following:
1023
+ * ` crypto.constants.RSA_PKCS1_PADDING ` (default)
1024
+ * ` crypto.constants.RSA_PKCS1_PSS_PADDING `
1025
+
1026
+ Note that ` RSA_PKCS1_PSS_PADDING ` will use MGF1 with the same hash function
1027
+ used to verify the message as specified in section 3.1 of [ RFC 4055] [ ] .
1028
+ * ` saltLength ` : {integer} - salt length for when padding is
1029
+ ` RSA_PKCS1_PSS_PADDING ` . The special value
1030
+ ` crypto.constants.RSA_PSS_SALTLEN_DIGEST ` sets the salt length to the digest
1031
+ size, ` crypto.constants.RSA_PSS_SALTLEN_AUTO ` (default) causes it to be
1032
+ determined automatically.
1033
+
997
1034
The ` signature ` argument is the previously calculated signature for the data, in
998
1035
the ` signature_format ` which can be ` 'latin1' ` , ` 'hex' ` or ` 'base64' ` .
999
1036
If a ` signature_format ` is specified, the ` signature ` is expected to be a
@@ -1900,6 +1937,21 @@ the `crypto`, `tls`, and `https` modules and are generally specific to OpenSSL.
1900
1937
<td><code>RSA_PKCS1_PSS_PADDING</code></td>
1901
1938
<td></td>
1902
1939
</tr >
1940
+ <tr >
1941
+ <td><code>RSA_PSS_SALTLEN_DIGEST</code></td>
1942
+ <td>Sets the salt length for `RSA_PKCS1_PSS_PADDING` to the digest size
1943
+ when signing or verifying.</td>
1944
+ </tr >
1945
+ <tr >
1946
+ <td><code>RSA_PSS_SALTLEN_MAX_SIGN</code></td>
1947
+ <td>Sets the salt length for `RSA_PKCS1_PSS_PADDING` to the maximum
1948
+ permissible value when signing data.</td>
1949
+ </tr >
1950
+ <tr >
1951
+ <td><code>RSA_PSS_SALTLEN_AUTO</code></td>
1952
+ <td>Causes the salt length for `RSA_PKCS1_PSS_PADDING` to be determined
1953
+ automatically when verifying a signature.</td>
1954
+ </tr >
1903
1955
<tr >
1904
1956
<td><code>POINT_CONVERSION_COMPRESSED</code></td>
1905
1957
<td></td>
@@ -1975,6 +2027,7 @@ the `crypto`, `tls`, and `https` modules and are generally specific to OpenSSL.
1975
2027
[ publicly trusted list of CAs ] : https://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt
1976
2028
[ RFC 2412 ] : https://www.rfc-editor.org/rfc/rfc2412.txt
1977
2029
[ RFC 3526 ] : https://www.rfc-editor.org/rfc/rfc3526.txt
2030
+ [ RFC 4055 ] : https://www.rfc-editor.org/rfc/rfc4055.txt
1978
2031
[ stream ] : stream.html
1979
2032
[ stream-writable-write ] : stream.html#stream_writable_write_chunk_encoding_callback
1980
2033
[ Crypto Constants ] : #crypto_crypto_constants_1
0 commit comments