Lines Matching defs:hmac
46 * hmac is an object that holds the input/output Key and Value (K and V).
52 * hmac->K = HMAC(hmac->K, hmac->V || inbyte || [in1] || [in2] || [in3])
53 * hmac->V = HMAC(hmac->K, hmac->V)
57 static int do_hmac(PROV_DRBG_HMAC *hmac, unsigned char inbyte,
62 EVP_MAC_CTX *ctx = hmac->ctx;
64 if (!EVP_MAC_init(ctx, hmac->K, hmac->blocklen, NULL)
66 || !EVP_MAC_update(ctx, hmac->V, hmac->blocklen)
71 || !EVP_MAC_final(ctx, hmac->K, NULL, sizeof(hmac->K)))
75 return EVP_MAC_init(ctx, hmac->K, hmac->blocklen, NULL)
76 && EVP_MAC_update(ctx, hmac->V, hmac->blocklen)
77 && EVP_MAC_final(ctx, hmac->V, NULL, sizeof(hmac->V));
85 * K,V = do_hmac(hmac, 0, in1, in2, in3)
87 * K,V = do_hmac(hmac, 1, in1, in2, in3)
99 PROV_DRBG_HMAC *hmac = (PROV_DRBG_HMAC *)drbg->data;
102 if (!do_hmac(hmac, 0x00, in1, in1len, in2, in2len, in3, in3len))
108 return do_hmac(hmac, 0x01, in1, in1len, in2, in2len, in3, in3len);
127 PROV_DRBG_HMAC *hmac = (PROV_DRBG_HMAC *)drbg->data;
129 if (hmac->ctx == NULL) {
135 memset(hmac->K, 0x00, hmac->blocklen);
137 memset(hmac->V, 0x01, hmac->blocklen);
198 PROV_DRBG_HMAC *hmac = (PROV_DRBG_HMAC *)drbg->data;
199 EVP_MAC_CTX *ctx = hmac->ctx;
200 const unsigned char *temp = hmac->V;
216 if (!EVP_MAC_init(ctx, hmac->K, hmac->blocklen, NULL)
217 || !EVP_MAC_update(ctx, temp, hmac->blocklen))
220 if (outlen > hmac->blocklen) {
225 if (!EVP_MAC_final(ctx, hmac->V, NULL, sizeof(hmac->V)))
227 memcpy(out, hmac->V, outlen);
230 out += hmac->blocklen;
231 outlen -= hmac->blocklen;
252 PROV_DRBG_HMAC *hmac = (PROV_DRBG_HMAC *)drbg->data;
254 OPENSSL_cleanse(hmac->K, sizeof(hmac->K));
255 OPENSSL_cleanse(hmac->V, sizeof(hmac->V));
267 PROV_DRBG_HMAC *hmac = (PROV_DRBG_HMAC *)drbg->data;
269 PROV_DRBG_VERYIFY_ZEROIZATION(hmac->K);
270 PROV_DRBG_VERYIFY_ZEROIZATION(hmac->V);
276 PROV_DRBG_HMAC *hmac;
278 hmac = OPENSSL_secure_zalloc(sizeof(*hmac));
279 if (hmac == NULL) {
284 drbg->data = hmac;
308 PROV_DRBG_HMAC *hmac;
310 if (drbg != NULL && (hmac = (PROV_DRBG_HMAC *)drbg->data) != NULL) {
311 EVP_MAC_CTX_free(hmac->ctx);
312 ossl_prov_digest_reset(&hmac->digest);
313 OPENSSL_secure_clear_free(hmac, sizeof(*hmac));
321 PROV_DRBG_HMAC *hmac = (PROV_DRBG_HMAC *)drbg->data;
328 if (hmac->ctx == NULL)
330 name = EVP_MAC_get0_name(EVP_MAC_CTX_get0_mac(hmac->ctx));
337 md = ossl_prov_digest_md(&hmac->digest);
360 PROV_DRBG_HMAC *hmac = (PROV_DRBG_HMAC *)ctx->data;
364 if (!ossl_prov_digest_load_from_params(&hmac->digest, params, libctx))
372 md = ossl_prov_digest_md(&hmac->digest);
378 if (!ossl_prov_macctx_load_from_params(&hmac->ctx, params,
382 if (hmac->ctx != NULL) {
384 hmac->blocklen = EVP_MD_get_size(md);
386 ctx->strength = 64 * (int)(hmac->blocklen >> 3);
389 ctx->seedlen = hmac->blocklen;