Как проверить цифровую подпись с заданным хешем и открытым ключом?
На C написано множество примеров того, как проверить цифровую подпись в сообщении, но мой вариант использования требует, чтобы я предоставил только хеш сообщения.
Так есть ли альтернатива EVP_DigestVerifyUpdate(mdctx, msg, strlen(msg));
где я мог напрямую предоставить хеш?
1 ответ
Решение
Это то, что вы ищите?
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