crypto.verify(algorithm, data, key, signature[, callback])


使用给定的密钥和算法验证 data 的给定签名。如果 algorithmnullundefined,则算法取决于键的类型。

¥Verifies the given signature for data using the given key and algorithm. If algorithm is null or undefined, then the algorithm is dependent upon the key type.

对于 Ed25519、Ed448 和 ML-DSA,algorithm 必须是 nullundefined

¥algorithm is required to be null or undefined for Ed25519, Ed448, and ML-DSA.

如果 key 不是 KeyObject,则此函数的行为就像将 key 传给 crypto.createPublicKey() 一样。如果是对象,则可以传入以下额外属性:

¥If key is not a KeyObject, this function behaves as if key had been passed to crypto.createPublicKey(). If it is an object, the following additional properties can be passed:

  • dsaEncoding <string> 对于 DSA 和 ECDSA,此选项指定签名的格式。它可以是以下之一:

    ¥dsaEncoding <string> For DSA and ECDSA, this option specifies the format of the signature. It can be one of the following:

    • 'der'(默认):DER 编码的 ASN.1 签名结构编码 (r, s)

      ¥'der' (default): DER-encoded ASN.1 signature structure encoding (r, s).

    • 'ieee-p1363':IEEE-P1363 中提议的签名格式 r || s

      ¥'ieee-p1363': Signature format r || s as proposed in IEEE-P1363.

  • padding <integer> RSA 的可选填充值,以下之一:

    ¥padding <integer> Optional padding value for RSA, one of the following:

    • crypto.constants.RSA_PKCS1_PADDING(默认)

      ¥crypto.constants.RSA_PKCS1_PADDING (default)

    • crypto.constants.RSA_PKCS1_PSS_PADDING

    RSA_PKCS1_PSS_PADDING 将使用 MGF1,其散列函数与 RFC 4055 第 3.1 节中指定的消息签名相同。

    ¥RSA_PKCS1_PSS_PADDING will 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(默认值)将其设置为最大允许值。

    ¥saltLength <integer> Salt length for when padding is RSA_PKCS1_PSS_PADDING. The special value crypto.constants.RSA_PSS_SALTLEN_DIGEST sets the salt length to the digest size, crypto.constants.RSA_PSS_SALTLEN_MAX_SIGN (default) sets it to the maximum permissible value.

signature 参数是先前为 data 计算的签名。

¥The signature argument is the previously calculated signature for the data.

因为公钥可以从私钥派生出来,所以可以为 key 传入私钥或公钥。

¥Because public keys can be derived from private keys, a private key or a public key may be passed for key.

如果提供了 callback 函数,则该函数使用 libuv 的线程池。

¥If the callback function is provided this function uses libuv's threadpool.