Hello,
> I have a doubt about how to use the HMAC() function. I developed this 
code in C 
> language: (abridged)
> 
> ...
> unsigned char *auth = NULL;
> unsigned char *session_auth_key;
> unsigned char *auth_tag; 
> .
> .
> auth = HMAC(EVP_sha1(), session_auth_key, auth_key_length, length,
>                          auth_tag, auth_tag_length);
> .
> .
> 
> Is the first argument in HMAC correct?
> When i run my program with GDB (GNU Project Debugger ) i get the string 
> "EVP_DigestFinal_ex () from /usr/lib/i686/cmov/libcrypto.so.0.9.8" as 
result.
> I think that the problem deals with the HMAC function.
> I use also the AES_ctr128_encrypt in my program. Can it have an 
influence?

Code like this:

   HMAC(EVP_md5(), pass, strlen(pass),
         (u_char *) ctx->chal, strlen(ctx->chal), buff, &len); 

works (pass and chal are normal strings)
As a result you will get hmac (here of MD5 size = 16bytes) but as binary
buffer.
You may convert this buffer to hex with code:

for (i = 0; i < len; i++) {
        sprintf(&(digest[i * 2]), "%02x", buff[i]);
    }
digest[2 * len] = 0; 

and use for example for ascii compare or so.
(from performance point of view sprintf() should be replaced
with simple function which covert byte to hex form).

Best regards,
--
Marek Marcola <[EMAIL PROTECTED]>

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to