Lines Matching refs:ctx
92 KDF_HKDF *ctx;
97 if ((ctx = OPENSSL_zalloc(sizeof(*ctx))) == NULL)
100 ctx->provctx = provctx;
101 return ctx;
106 KDF_HKDF *ctx = (KDF_HKDF *)vctx;
108 if (ctx != NULL) {
109 kdf_hkdf_reset(ctx);
110 OPENSSL_free(ctx);
116 KDF_HKDF *ctx = (KDF_HKDF *)vctx;
117 void *provctx = ctx->provctx;
119 ossl_prov_digest_reset(&ctx->digest);
120 OPENSSL_free(ctx->salt);
121 OPENSSL_free(ctx->prefix);
122 OPENSSL_free(ctx->label);
123 OPENSSL_clear_free(ctx->data, ctx->data_len);
124 OPENSSL_clear_free(ctx->key, ctx->key_len);
125 OPENSSL_clear_free(ctx->info, ctx->info_len);
126 memset(ctx, 0, sizeof(*ctx));
127 ctx->provctx = provctx;
130 static size_t kdf_hkdf_size(KDF_HKDF *ctx)
133 const EVP_MD *md = ossl_prov_digest_md(&ctx->digest);
135 if (ctx->mode != EVP_KDF_HKDF_MODE_EXTRACT_ONLY)
152 KDF_HKDF *ctx = (KDF_HKDF *)vctx;
153 OSSL_LIB_CTX *libctx = PROV_LIBCTX_OF(ctx->provctx);
156 if (!ossl_prov_is_running() || !kdf_hkdf_set_ctx_params(ctx, params))
159 md = ossl_prov_digest_md(&ctx->digest);
164 if (ctx->key == NULL) {
173 switch (ctx->mode) {
176 return HKDF(libctx, md, ctx->salt, ctx->salt_len,
177 ctx->key, ctx->key_len, ctx->info, ctx->info_len, key, keylen);
180 return HKDF_Extract(libctx, md, ctx->salt, ctx->salt_len,
181 ctx->key, ctx->key_len, key, keylen);
184 return HKDF_Expand(md, ctx->key, ctx->key_len, ctx->info,
185 ctx->info_len, key, keylen);
189 static int hkdf_common_set_ctx_params(KDF_HKDF *ctx, const OSSL_PARAM params[])
191 OSSL_LIB_CTX *libctx = PROV_LIBCTX_OF(ctx->provctx);
198 if (!ossl_prov_digest_load_from_params(&ctx->digest, params, libctx))
204 ctx->mode = EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND;
206 ctx->mode = EVP_KDF_HKDF_MODE_EXTRACT_ONLY;
208 ctx->mode = EVP_KDF_HKDF_MODE_EXPAND_ONLY;
220 ctx->mode = n;
228 OPENSSL_clear_free(ctx->key, ctx->key_len);
229 ctx->key = NULL;
230 if (!OSSL_PARAM_get_octet_string(p, (void **)&ctx->key, 0,
231 &ctx->key_len))
237 OPENSSL_free(ctx->salt);
238 ctx->salt = NULL;
239 if (!OSSL_PARAM_get_octet_string(p, (void **)&ctx->salt, 0,
240 &ctx->salt_len))
286 KDF_HKDF *ctx = vctx;
291 if (!hkdf_common_set_ctx_params(ctx, params))
304 OPENSSL_clear_free(ctx->info, ctx->info_len);
305 ctx->info = NULL;
309 ctx->info = OPENSSL_malloc(sz);
310 if (ctx->info == NULL)
312 ctx->info_len = sz;
314 if (!setinfo_fromparams(p, ctx->info, &sz))
320 static const OSSL_PARAM *kdf_hkdf_settable_ctx_params(ossl_unused void *ctx,
333 KDF_HKDF *ctx = (KDF_HKDF *)vctx;
337 size_t sz = kdf_hkdf_size(ctx);
346 static const OSSL_PARAM *kdf_hkdf_gettable_ctx_params(ossl_unused void *ctx,
683 KDF_HKDF *ctx = (KDF_HKDF *)vctx;
686 if (!ossl_prov_is_running() || !kdf_tls1_3_set_ctx_params(ctx, params))
689 md = ossl_prov_digest_md(&ctx->digest);
695 switch (ctx->mode) {
700 return prov_tls13_hkdf_generate_secret(PROV_LIBCTX_OF(ctx->provctx),
702 ctx->salt, ctx->salt_len,
703 ctx->key, ctx->key_len,
704 ctx->prefix, ctx->prefix_len,
705 ctx->label, ctx->label_len,
709 return prov_tls13_hkdf_expand(md, ctx->key, ctx->key_len,
710 ctx->prefix, ctx->prefix_len,
711 ctx->label, ctx->label_len,
712 ctx->data, ctx->data_len,
720 KDF_HKDF *ctx = vctx;
725 if (!hkdf_common_set_ctx_params(ctx, params))
728 if (ctx->mode == EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND) {
734 OPENSSL_free(ctx->prefix);
735 ctx->prefix = NULL;
736 if (!OSSL_PARAM_get_octet_string(p, (void **)&ctx->prefix, 0,
737 &ctx->prefix_len))
742 OPENSSL_free(ctx->label);
743 ctx->label = NULL;
744 if (!OSSL_PARAM_get_octet_string(p, (void **)&ctx->label, 0,
745 &ctx->label_len))
749 OPENSSL_clear_free(ctx->data, ctx->data_len);
750 ctx->data = NULL;
752 && !OSSL_PARAM_get_octet_string(p, (void **)&ctx->data, 0,
753 &ctx->data_len))
758 static const OSSL_PARAM *kdf_tls1_3_settable_ctx_params(ossl_unused void *ctx,