What am I doing wrong?

This code fragment:

#include <stdio.h>                                                             
#include <string.h>                                                            
#include <openssl/evp.h>                                                       
#include <openssl/hmac.h>                                                      

#define KEYLEN 64
HMAC_CTX * HMACInit(const unsigned char *key,int key_len) {
    HMAC_CTX *ctx = (HMAC_CTX *) Tcl_Alloc(sizeof(HMAC_CTX));
    HMAC_CTX_init(ctx);
    unsigned char paddedkey[KEYLEN];
    unsigned char md_value[EVP_MAX_MD_SIZE];
    unsigned int md_len;
    if (key_len > KEYLEN) {
        EVP_MD_CTX mdctx;
        EVP_MD_CTX_init(&mdctx);
        EVP_DigestInit_ex(&mdctx,(const EVP_MD *)EVP_sha256,NULL);
        EVP_DigestUpdate(&mdctx,key,key_len);
        EVP_DigestFinal_ex(&mdctx,md_value,&md_len);
        key = md_value;
        key_len = md_len;
    }
    memset(paddedkey,0,KEYLEN);
    memcpy(paddedkey,key,key_len);
    HMAC_Init_ex(ctx,paddedkey,KEYLEN,(const EVP_MD *)EVP_sha256,NULL);
    return ctx;
}

is causing this abort message:

fips_hmac.c(91): OpenSSL internal error, assertion failed: j <= sizeof ctx->key 
Abort

I am using openssl-0.9.8e-27.el5_10.3 and openssl-devel-0.9.8e-27.el5_10.3 on 
a 64-bit CentOS 5.10 system.

-- 
Robert Heller             -- 978-544-6933
Deepwoods Software        -- Custom Software Services
http://www.deepsoft.com/  -- Linux Administration Services
hel...@deepsoft.com       -- Webhosting Services
                                                                                
                       
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to