Lines Matching refs:ctx

66 void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
74 ctx->md = md;
76 md = ctx->md;
80 && (!(ctx->md_ctx.flags & EVP_MD_CTX_FLAG_NON_FIPS_ALLOW)
81 || !(ctx->i_ctx.flags & EVP_MD_CTX_FLAG_NON_FIPS_ALLOW)
82 || !(ctx->o_ctx.flags & EVP_MD_CTX_FLAG_NON_FIPS_ALLOW)))
88 OPENSSL_assert(j <= (int)sizeof ctx->key);
90 EVP_DigestInit_ex(&ctx->md_ctx, md, impl);
91 EVP_DigestUpdate(&ctx->md_ctx, key, len);
92 EVP_DigestFinal_ex(&(ctx->md_ctx), ctx->key, &ctx->key_length);
94 OPENSSL_assert(len <= (int)sizeof ctx->key);
95 memcpy(ctx->key, key, len);
96 ctx->key_length = len;
98 if (ctx->key_length != HMAC_MAX_MD_CBLOCK)
99 memset(&ctx->key[ctx->key_length], 0,
100 HMAC_MAX_MD_CBLOCK - ctx->key_length);
105 pad[i] = 0x36 ^ ctx->key[i];
106 EVP_DigestInit_ex(&ctx->i_ctx, md, impl);
107 EVP_DigestUpdate(&ctx->i_ctx, pad, M_EVP_MD_block_size(md));
110 pad[i] = 0x5c ^ ctx->key[i];
111 EVP_DigestInit_ex(&ctx->o_ctx, md, impl);
112 EVP_DigestUpdate(&ctx->o_ctx, pad, M_EVP_MD_block_size(md));
114 EVP_MD_CTX_copy_ex(&ctx->md_ctx, &ctx->i_ctx);
117 void HMAC_Init(HMAC_CTX *ctx, const void *key, int len, const EVP_MD *md)
120 HMAC_CTX_init(ctx);
121 HMAC_Init_ex(ctx, key, len, md, NULL);
124 void HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len)
126 EVP_DigestUpdate(&ctx->md_ctx, data, len);
129 void HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len)
135 j = M_EVP_MD_block_size(ctx->md);
137 EVP_DigestFinal_ex(&ctx->md_ctx, buf, &i);
138 EVP_MD_CTX_copy_ex(&ctx->md_ctx, &ctx->o_ctx);
139 EVP_DigestUpdate(&ctx->md_ctx, buf, i);
140 EVP_DigestFinal_ex(&ctx->md_ctx, md, len);
143 void HMAC_CTX_init(HMAC_CTX *ctx)
145 EVP_MD_CTX_init(&ctx->i_ctx);
146 EVP_MD_CTX_init(&ctx->o_ctx);
147 EVP_MD_CTX_init(&ctx->md_ctx);
150 void HMAC_CTX_cleanup(HMAC_CTX *ctx)
152 EVP_MD_CTX_cleanup(&ctx->i_ctx);
153 EVP_MD_CTX_cleanup(&ctx->o_ctx);
154 EVP_MD_CTX_cleanup(&ctx->md_ctx);
155 memset(ctx, 0, sizeof *ctx);
175 void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags)
177 M_EVP_MD_CTX_set_flags(&ctx->i_ctx, flags);
178 M_EVP_MD_CTX_set_flags(&ctx->o_ctx, flags);
179 M_EVP_MD_CTX_set_flags(&ctx->md_ctx, flags);