Lines Matching refs:dctx
56 DH_PKEY_CTX *dctx;
58 if ((dctx = OPENSSL_zalloc(sizeof(*dctx))) == NULL) {
62 dctx->prime_len = 2048;
63 dctx->subprime_len = -1;
64 dctx->generator = 2;
65 dctx->kdf_type = EVP_PKEY_DH_KDF_NONE;
67 ctx->data = dctx;
68 ctx->keygen_info = dctx->gentmp;
76 DH_PKEY_CTX *dctx = ctx->data;
78 if (dctx != NULL) {
79 OPENSSL_free(dctx->kdf_ukm);
80 ASN1_OBJECT_free(dctx->kdf_oid);
81 OPENSSL_free(dctx);
88 DH_PKEY_CTX *dctx, *sctx;
93 dctx = dst->data;
94 dctx->prime_len = sctx->prime_len;
95 dctx->subprime_len = sctx->subprime_len;
96 dctx->generator = sctx->generator;
97 dctx->paramgen_type = sctx->paramgen_type;
98 dctx->pad = sctx->pad;
99 dctx->md = sctx->md;
100 dctx->param_nid = sctx->param_nid;
102 dctx->kdf_type = sctx->kdf_type;
103 dctx->kdf_oid = OBJ_dup(sctx->kdf_oid);
104 if (dctx->kdf_oid == NULL)
106 dctx->kdf_md = sctx->kdf_md;
108 dctx->kdf_ukm = OPENSSL_memdup(sctx->kdf_ukm, sctx->kdf_ukmlen);
109 if (dctx->kdf_ukm == NULL)
111 dctx->kdf_ukmlen = sctx->kdf_ukmlen;
113 dctx->kdf_outlen = sctx->kdf_outlen;
119 DH_PKEY_CTX *dctx = ctx->data;
124 dctx->prime_len = p1;
128 if (dctx->paramgen_type == DH_PARAMGEN_TYPE_GENERATOR)
130 dctx->subprime_len = p1;
134 dctx->pad = p1;
138 if (dctx->paramgen_type != DH_PARAMGEN_TYPE_GENERATOR)
140 dctx->generator = p1;
151 dctx->paramgen_type = p1;
155 if (p1 < 1 || p1 > 3 || dctx->param_nid != NID_undef)
157 dctx->param_nid = p1;
161 if (p1 <= 0 || dctx->param_nid != NID_undef)
163 dctx->param_nid = p1;
172 return dctx->kdf_type;
175 dctx->kdf_type = p1;
179 dctx->kdf_md = p2;
183 *(const EVP_MD **)p2 = dctx->kdf_md;
189 dctx->kdf_outlen = (size_t)p1;
193 *(int *)p2 = dctx->kdf_outlen;
197 OPENSSL_free(dctx->kdf_ukm);
198 dctx->kdf_ukm = p2;
200 dctx->kdf_ukmlen = p1;
202 dctx->kdf_ukmlen = 0;
206 *(unsigned char **)p2 = dctx->kdf_ukm;
207 return dctx->kdf_ukmlen;
210 ASN1_OBJECT_free(dctx->kdf_oid);
211 dctx->kdf_oid = p2;
215 *(ASN1_OBJECT **)p2 = dctx->kdf_oid;
233 DH_PKEY_CTX *dctx = ctx->data;
239 dctx->param_nid = id;
243 DH_PKEY_CTX *dctx = ctx->data;
250 dctx->param_nid = nid;
276 static DH *ffc_params_generate(OSSL_LIB_CTX *libctx, DH_PKEY_CTX *dctx,
282 int prime_len = dctx->prime_len;
283 int subprime_len = dctx->subprime_len;
285 if (dctx->paramgen_type > DH_PARAMGEN_TYPE_FIPS_186_4)
298 if (dctx->md != NULL)
299 ossl_ffc_set_digest(&ret->params, EVP_MD_get0_name(dctx->md), NULL);
302 if (dctx->paramgen_type == DH_PARAMGEN_TYPE_FIPS_186_2)
310 if (dctx->paramgen_type >= DH_PARAMGEN_TYPE_FIPS_186_2)
326 DH_PKEY_CTX *dctx = ctx->data;
335 if (dctx->param_nid != NID_undef) {
336 int type = dctx->param_nid <= 3 ? EVP_PKEY_DHX : EVP_PKEY_DH;
338 if ((dh = DH_new_by_nid(dctx->param_nid)) == NULL)
351 dctx->paramgen_type = DH_PARAMGEN_TYPE_FIPS_186_4;
353 if (dctx->paramgen_type >= DH_PARAMGEN_TYPE_FIPS_186_2) {
354 dh = ffc_params_generate(NULL, dctx, pcb);
367 dctx->prime_len, dctx->generator, pcb);
378 DH_PKEY_CTX *dctx = ctx->data;
381 if (ctx->pkey == NULL && dctx->param_nid == NID_undef) {
385 if (dctx->param_nid != NID_undef)
386 dh = DH_new_by_nid(dctx->param_nid);
404 DH_PKEY_CTX *dctx = ctx->data;
418 if (dctx->kdf_type == EVP_PKEY_DH_KDF_NONE) {
423 if (dctx->pad)
432 else if (dctx->kdf_type == EVP_PKEY_DH_KDF_X9_42) {
437 if (!dctx->kdf_outlen || !dctx->kdf_oid)
440 *keylen = dctx->kdf_outlen;
443 if (*keylen != dctx->kdf_outlen)
454 if (!DH_KDF_X9_42(key, *keylen, Z, Zlen, dctx->kdf_oid,
455 dctx->kdf_ukm, dctx->kdf_ukmlen, dctx->kdf_md))
457 *keylen = dctx->kdf_outlen;