HMAC verification with EVP Interface

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I am trying to verify an HMAC signature with the code below and the
EVP_DigestVerifyInit()
routine is failing with "error:0608F096:digital envelope
routines:EVP_PKEY_verify_init:operation not supported for this
keytype". Eventually it gets to EVP_PKEY_verify_init() and since the
ctx->pmeth->verify pointer is null, it sets this error. It's unclear
to me why this function pointer is NULL, can someone elaborate the
right way to do this via EVP interfaces?

Openssl Version: OpenSSL 1.1.1f  31 Mar 2020

Thanks,
Bill

/* This is just a testing key */
unsigned char hmac_key[] = {
    0x30, 0x33, 0x33, 0x36, 0x61, 0x61, 0x37, 0x39,
    0x34, 0x35, 0x61, 0x33, 0x63, 0x61, 0x64, 0x65,
    0x63, 0x33, 0x63, 0x62, 0x64, 0x63, 0x36, 0x65,
    0x37, 0x39, 0x30, 0x34, 0x33, 0x62, 0x35, 0x62
};

EVP_PKEY *ekey = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, NULL, hmac_key,
                               sizeof(hmac_key));
assert_non_null(ekey);

EVP_MD_CTX *mdctx = EVP_MD_CTX_new();
assert_non_null(mdctx);

int rc = EVP_DigestVerifyInit(mdctx, NULL, EVP_sha256(), NULL, ekey);
unsigned long x = ERR_get_error();
printf("EVP_DigestSignInit failed, error 0x%lx: %s\n", x,
ERR_error_string(x, NULL));
assert_int_equal(rc, 1);

rc = EVP_DigestVerifyUpdate(mdctx, msg, msg_len);
assert_int_equal(rc, 1);

rc = EVP_DigestVerifyFinal(mdctx, sig, sig_len);
assert_int_equal(rc, 1);

EVP_MD_CTX_free(mdctx);
EVP_PKEY_free(ekey);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux