如何验证给定散列和 public 密钥的数字签名?
How to verify the digital signature given hash and public key?
有很多用 C 编写的关于如何验证消息数字签名的示例,但我的用例要求我仅提供消息哈希。
那么有没有 EVP_DigestVerifyUpdate(mdctx, msg, strlen(msg));
的替代方法,我可以直接提供散列?
这是您要找的吗?
EVP_PKEY *public_key = ...;
EVP_PKEY_CTX *public_key_ctx = EVP_PKEY_CTX_new(public_key, NULL);
EVP_PKEY_verify_init(public_key_ctx);
if (1 != EVP_PKEY_verify(public_key_ctx, sig, siglen, hash, hashlen))
// invalid signature
有很多用 C 编写的关于如何验证消息数字签名的示例,但我的用例要求我仅提供消息哈希。
那么有没有 EVP_DigestVerifyUpdate(mdctx, msg, strlen(msg));
的替代方法,我可以直接提供散列?
这是您要找的吗?
EVP_PKEY *public_key = ...;
EVP_PKEY_CTX *public_key_ctx = EVP_PKEY_CTX_new(public_key, NULL);
EVP_PKEY_verify_init(public_key_ctx);
if (1 != EVP_PKEY_verify(public_key_ctx, sig, siglen, hash, hashlen))
// invalid signature