class OpenSSL::HMAC
Public Class Methods
digest(digest, key, data) → aString
click to toggle source
static VALUE ossl_hmac_s_digest(VALUE klass, VALUE digest, VALUE key, VALUE data) { unsigned char *buf; unsigned int buf_len; StringValue(key); StringValue(data); buf = HMAC(GetDigestPtr(digest), RSTRING_PTR(key), RSTRING_LENINT(key), (unsigned char *)RSTRING_PTR(data), RSTRING_LEN(data), NULL, &buf_len); return rb_str_new((const char *)buf, buf_len); }
digest(digest, key, data) → aString
click to toggle source
static VALUE ossl_hmac_s_hexdigest(VALUE klass, VALUE digest, VALUE key, VALUE data) { unsigned char *buf; char *hexbuf; unsigned int buf_len; VALUE hexdigest; StringValue(key); StringValue(data); buf = HMAC(GetDigestPtr(digest), RSTRING_PTR(key), RSTRING_LENINT(key), (unsigned char *)RSTRING_PTR(data), RSTRING_LEN(data), NULL, &buf_len); if (string2hex(buf, buf_len, &hexbuf, NULL) != 2 * (int)buf_len) { ossl_raise(eHMACError, "Cannot convert buf to hexbuf"); } hexdigest = ossl_buf2str(hexbuf, 2 * buf_len); return hexdigest; }
new(key, digest) → hmac
click to toggle source
static VALUE ossl_hmac_initialize(VALUE self, VALUE key, VALUE digest) { HMAC_CTX *ctx; StringValue(key); GetHMAC(self, ctx); HMAC_Init(ctx, RSTRING_PTR(key), RSTRING_LENINT(key), GetDigestPtr(digest)); return self; }
Public Instance Methods
digest → aString
click to toggle source
static VALUE ossl_hmac_digest(VALUE self) { HMAC_CTX *ctx; unsigned char *buf; unsigned int buf_len; VALUE digest; GetHMAC(self, ctx); hmac_final(ctx, &buf, &buf_len); digest = ossl_buf2str((char *)buf, buf_len); return digest; }
hexdigest → aString
click to toggle source
static VALUE ossl_hmac_hexdigest(VALUE self) { HMAC_CTX *ctx; unsigned char *buf; char *hexbuf; unsigned int buf_len; VALUE hexdigest; GetHMAC(self, ctx); hmac_final(ctx, &buf, &buf_len); if (string2hex(buf, buf_len, &hexbuf, NULL) != 2 * (int)buf_len) { OPENSSL_free(buf); ossl_raise(eHMACError, "Memory alloc error"); } OPENSSL_free(buf); hexdigest = ossl_buf2str(hexbuf, 2 * buf_len); return hexdigest; }
reset → self
click to toggle source
static VALUE ossl_hmac_reset(VALUE self) { HMAC_CTX *ctx; GetHMAC(self, ctx); HMAC_Init(ctx, NULL, 0, NULL); return self; }
update(string) → self
click to toggle source
static VALUE ossl_hmac_update(VALUE self, VALUE data) { HMAC_CTX *ctx; StringValue(data); GetHMAC(self, ctx); HMAC_Update(ctx, (unsigned char *)RSTRING_PTR(data), RSTRING_LEN(data)); return self; }
Also aliased as: <<