c - 如何验证给定散列和公钥的数字签名?

标签 c openssl digital-signature evp-cipher

有很多用 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 - 如何验证给定散列和公钥的数字签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41907011/

相关文章:

linux - 将 OpenSSL 库链接到程序

javascript - 使用来自 Web 的 USB token 的数字签名

c - 怎么会有Lvalue required error

c - 当我使用 free() 释放分配的指针时出现无效指针错误

c - 字节到 C 中的 signed int

c++ - 我的 AES 加密/解密函数不适用于随机 ivecs

c - 如何修改 X509 的扩展名?

无法将 char 值分配给结构中的指针

c# - 将数字签名字段添加到 PDF

security - 企业 PKI 部署(数字签名)