crypto.sign(algorithm, data, key[, callback])
algorithm<string> | <null> | <undefined>data<ArrayBuffer> | <Buffer> | <TypedArray> | <DataView>key<Object> | <string> | <ArrayBuffer> | <Buffer> | <TypedArray> | <DataView> | <KeyObject> | <CryptoKey>callback<Function>- 返回:如果未提供
callback函数,则返回 <Buffer>。
使用给定的私钥和算法计算并返回 data 的签名。如果 algorithm 为 null 或 undefined,则算法取决于密钥类型。
🌐 Calculates and returns the signature for data using the given private key and
algorithm. If algorithm is null or undefined, then the algorithm is
dependent upon the key type.
algorithm 对于 Ed25519、Ed448 和 ML-DSA 必须为 null 或 undefined。
如果 key 不是 KeyObject,此函数的行为就像将 key 传给 crypto.createPrivateKey() 一样。如果它是一个对象,则可以传递以下附加属性:
🌐 If key is not a KeyObject, this function behaves as if key had been
passed to crypto.createPrivateKey(). If it is an object, the following
additional properties can be passed:
-
dsaEncoding<string> 对于 DSA 和 ECDSA,此选项指定生成的签名格式。它可以是以下之一:'der'(默认):DER 编码的 ASN.1 签名结构编码(r, s)。'ieee-p1363':签名格式r || s,如 IEEE-P1363 提出。
-
padding<integer> 可选的 RSA 填充值,以下选项之一:crypto.constants.RSA_PKCS1_PADDING(默认)crypto.constants.RSA_PKCS1_PSS_PADDING
RSA_PKCS1_PSS_PADDINGwill use MGF1 with the same hash function used to sign the message as specified in section 3.1 of RFC 4055. -
saltLength<integer> 当填充为RSA_PKCS1_PSS_PADDING时的盐长度。特殊值crypto.constants.RSA_PSS_SALTLEN_DIGEST将盐长度设置为摘要大小,crypto.constants.RSA_PSS_SALTLEN_MAX_SIGN(默认)将其设置为允许的最大值。 -
context<ArrayBuffer> | <Buffer> | <TypedArray> | <DataView> 对于 Ed448、ML-DSA 和 SLH-DSA,此选项指定可选的上下文,用于区分使用相同密钥为不同目的生成的签名。
如果提供了 callback 函数,该函数会使用 libuv 的线程池。
🌐 If the callback function is provided this function uses libuv's threadpool.