Skip to content

Instantly share code, notes, and snippets.

@devendranaga
Created February 14, 2019 06:17
Show Gist options
  • Save devendranaga/d5678ed26520bc6847910ce9578188c1 to your computer and use it in GitHub Desktop.
Save devendranaga/d5678ed26520bc6847910ce9578188c1 to your computer and use it in GitHub Desktop.
int verify(uint8_t *msg, size_t msglen, uint8_t *signature, size_t signature_len, std::string sha_alg)
{
if (!msg || !signature) {
std::cerr << "invalid msg or signature" << std::endl;
return -1;
}
const EVP_MD *md;
if (sha_alg == "sha256") {
md = EVP_sha256();
} else if (sha_alg == "sha1") {
md = EVP_sha1();
} else {
return -1;
}
int ret;
EVP_MD_CTX *mdctx = EVP_MD_CTX_create();
ret = EVP_DigestVerifyInit(mdctx, NULL, md, NULL, evp_verify_key);
if (ret != 1) {
ERR_print_errors_fp(stderr);
return -1;
}
ret = EVP_DigestVerifyUpdate(mdctx, msg, msglen);
if (ret != 1) {
ERR_print_errors_fp(stderr);
return -1;
}
ret = EVP_DigestVerifyFinal(mdctx, signature, signature_len);
if (ret != 1) {
ERR_print_errors_fp(stderr);
return -1;
}
EVP_MD_CTX_destroy(mdctx);
std::cout << "verify ok" << std::endl;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment