Returns the authentication code as a hex-encoded string. The digest parameter specifies the digest algorithm to use. This may be a
String representing the algorithm name or an
instance of OpenSSL::Digest.
Example
key='key'data='The quick brown fox jumps over the lazy dog'hmac=OpenSSL::HMAC.hexdigest('sha1',key,data)#=> "de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9"
static VALUE
ossl_hmac_s_hexdigest(VALUE klass, VALUE digest, VALUE key, VALUE data)
{
unsigned char buf[EVP_MAX_MD_SIZE];
unsigned int buf_len;
VALUE ret;
StringValue(key);
StringValue(data);
if (!HMAC(ossl_evp_get_digestbyname(digest), RSTRING_PTR(key),
RSTRING_LENINT(key), (unsigned char *)RSTRING_PTR(data),
RSTRING_LEN(data), buf, &buf_len))
ossl_raise(eHMACError, "HMAC");
ret = rb_str_new(NULL, buf_len * 2);
ossl_bin2hex(buf, RSTRING_PTR(ret), buf_len);
return ret;
}