Class: OpenSSL::HMAC

Inherits:
Object
  • Object
show all
Defined in:
ossl_hmac.c

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(key, digest) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
# File 'ossl_hmac.c', line 60

static VALUE
ossl_hmac_initialize(VALUE self, VALUE key, VALUE digest)
{
    HMAC_CTX *ctx;

    StringValue(key);
    GetHMAC(self, ctx);
    HMAC_Init_ex(ctx, RSTRING(key)->ptr, RSTRING(key)->len,
     GetDigestPtr(digest), NULL);

    return self;
}

Class Method Details

.digest(digest, key, data) ⇒ Object



154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'ossl_hmac.c', line 154

static VALUE
ossl_hmac_s_digest(VALUE klass, VALUE digest, VALUE key, VALUE data)
{
    char *buf;
    int buf_len;
  
    StringValue(key);
    StringValue(data);
    buf = HMAC(GetDigestPtr(digest), RSTRING(key)->ptr, RSTRING(key)->len,
         RSTRING(data)->ptr, RSTRING(data)->len, NULL, &buf_len);

    return rb_str_new(buf, buf_len);
}

.hexdigest(digest, key, data) ⇒ Object



168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# File 'ossl_hmac.c', line 168

static VALUE
ossl_hmac_s_hexdigest(VALUE klass, VALUE digest, VALUE key, VALUE data)
{
    char *buf, *hexbuf;
    int buf_len;
    VALUE hexdigest;

    StringValue(key);
    StringValue(data);
  
    buf = HMAC(GetDigestPtr(digest), RSTRING(key)->ptr, RSTRING(key)->len,
         RSTRING(data)->ptr, RSTRING(data)->len, NULL, &buf_len);
    if (string2hex(buf, buf_len, &hexbuf, NULL) != 2 * buf_len) {
  ossl_raise(eHMACError, "Cannot convert buf to hexbuf");
    }
    hexdigest = ossl_buf2str(hexbuf, 2 * buf_len);

    return hexdigest;
}

Instance Method Details

#digestObject



119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'ossl_hmac.c', line 119

static VALUE
ossl_hmac_digest(VALUE self)
{
    HMAC_CTX *ctx;
    char *buf;
    int buf_len;
    VALUE digest;
  
    GetHMAC(self, ctx);
    hmac_final(ctx, &buf, &buf_len);
    digest = ossl_buf2str(buf, buf_len);
    
    return digest;
}

#hexdigestObject Also known as: inspect, to_s



134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# File 'ossl_hmac.c', line 134

static VALUE
ossl_hmac_hexdigest(VALUE self)
{
    HMAC_CTX *ctx;
    char *buf, *hexbuf;
    int buf_len;
    VALUE hexdigest;
  
    GetHMAC(self, ctx);
    hmac_final(ctx, &buf, &buf_len);
    if (string2hex(buf, buf_len, &hexbuf, NULL) != 2 * buf_len) {
  OPENSSL_free(buf);
  ossl_raise(eHMACError, "Memory alloc error");
    }
    OPENSSL_free(buf);
    hexdigest = ossl_buf2str(hexbuf, 2 * buf_len);

    return hexdigest;
}

#update(data) ⇒ Object Also known as: <<



90
91
92
93
94
95
96
97
98
99
100
# File 'ossl_hmac.c', line 90

static VALUE
ossl_hmac_update(VALUE self, VALUE data)
{
    HMAC_CTX *ctx;

    StringValue(data);
    GetHMAC(self, ctx);
    HMAC_Update(ctx, RSTRING(data)->ptr, RSTRING(data)->len);

    return self;
}