2011-12-20 80 views
0

這裏是我的代碼:HMAC_Init崩潰而計算HMAC-SHA1

int function(const char * buffer,size_t len,unsigned char * value) 
{ 

char* user = "username"; 
char*password = "password"; 
size_t text_len = strlen(user) + strlen(password) + 2; 
    unsigned char* key = (unsigned char*)calloc(1,16); 
    unsigned char* text= (unsigned char *)calloc(1,text_len); 

    snprintf((char*)text, text_len, "%s:%s",user,password); 

MD5(text, text_len-1, key) 

    HMAC_CTX *ctx = NULL; 
    unsigned int md_len = 20; 
    ctx = (HMAC_CTX*) calloc(1,sizeof(HMAC_CTX)); 
    if(ctx == NULL){return -1;} 

    HMAC_CTX_init(ctx); 
    `HMAC_Init(ctx, key, 16, EVP_sha1());` //crashing everytime, saying heap corruption 
    HMAC_Update(ctx, buffer, len); 
    HMAC_Final(ctx, value, &md_len); 

    HMAC_CTX_cleanup(ctx); 
return 0; 
} 

我使用OpenSSL的0.9.8.c.如果有人遇到這個問題,請讓我知道。

回答

1

根據man page HMAC_Init已棄用。可能值得嘗試HMAC_Init_ex。