summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libcrypto/asn1/ameth_lib.c45
-rw-r--r--src/lib/libcrypto/evp/pmeth_lib.c41
2 files changed, 23 insertions, 63 deletions
diff --git a/src/lib/libcrypto/asn1/ameth_lib.c b/src/lib/libcrypto/asn1/ameth_lib.c
index 8be82060ef..545ba8f1a1 100644
--- a/src/lib/libcrypto/asn1/ameth_lib.c
+++ b/src/lib/libcrypto/asn1/ameth_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ameth_lib.c,v 1.21 2019/11/02 16:06:25 inoguchi Exp $ */ 1/* $OpenBSD: ameth_lib.c,v 1.22 2021/12/03 14:18:06 tb Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2006. 3 * project 2006.
4 */ 4 */
@@ -340,34 +340,21 @@ EVP_PKEY_asn1_new(int id, int flags, const char *pem_str, const char *info)
340void 340void
341EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, const EVP_PKEY_ASN1_METHOD *src) 341EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, const EVP_PKEY_ASN1_METHOD *src)
342{ 342{
343 dst->pub_decode = src->pub_decode; 343 EVP_PKEY_ASN1_METHOD preserve;
344 dst->pub_encode = src->pub_encode; 344
345 dst->pub_cmp = src->pub_cmp; 345 preserve.pkey_id = dst->pkey_id;
346 dst->pub_print = src->pub_print; 346 preserve.pkey_base_id = dst->pkey_base_id;
347 347 preserve.pkey_flags = dst->pkey_flags;
348 dst->priv_decode = src->priv_decode; 348 preserve.pem_str = dst->pem_str;
349 dst->priv_encode = src->priv_encode; 349 preserve.info = dst->info;
350 dst->priv_print = src->priv_print; 350
351 351 *dst = *src;
352 dst->old_priv_encode = src->old_priv_encode; 352
353 dst->old_priv_decode = src->old_priv_decode; 353 dst->pkey_id = preserve.pkey_id;
354 354 dst->pkey_base_id = preserve.pkey_base_id;
355 dst->pkey_size = src->pkey_size; 355 dst->pkey_flags = preserve.pkey_flags;
356 dst->pkey_bits = src->pkey_bits; 356 dst->pem_str = preserve.pem_str;
357 357 dst->info = preserve.info;
358 dst->param_decode = src->param_decode;
359 dst->param_encode = src->param_encode;
360 dst->param_missing = src->param_missing;
361 dst->param_copy = src->param_copy;
362 dst->param_cmp = src->param_cmp;
363 dst->param_print = src->param_print;
364 dst->sig_print = src->sig_print;
365
366 dst->pkey_free = src->pkey_free;
367 dst->pkey_ctrl = src->pkey_ctrl;
368
369 dst->item_sign = src->item_sign;
370 dst->item_verify = src->item_verify;
371} 358}
372 359
373void 360void
diff --git a/src/lib/libcrypto/evp/pmeth_lib.c b/src/lib/libcrypto/evp/pmeth_lib.c
index 36bfe8d9fc..359e57d74c 100644
--- a/src/lib/libcrypto/evp/pmeth_lib.c
+++ b/src/lib/libcrypto/evp/pmeth_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: pmeth_lib.c,v 1.16 2019/11/01 15:08:57 jsing Exp $ */ 1/* $OpenBSD: pmeth_lib.c,v 1.17 2021/12/03 14:18:06 tb Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2006. 3 * project 2006.
4 */ 4 */
@@ -272,42 +272,15 @@ EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, const EVP_PKEY_METHOD *meth)
272void 272void
273EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src) 273EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src)
274{ 274{
275 dst->init = src->init; 275 EVP_PKEY_METHOD preserve;
276 dst->copy = src->copy;
277 dst->cleanup = src->cleanup;
278 276
279 dst->paramgen_init = src->paramgen_init; 277 preserve.pkey_id = dst->pkey_id;
280 dst->paramgen = src->paramgen; 278 preserve.flags = dst->flags;
281 279
282 dst->keygen_init = src->keygen_init; 280 *dst = *src;
283 dst->keygen = src->keygen;
284 281
285 dst->sign_init = src->sign_init; 282 dst->pkey_id = preserve.pkey_id;
286 dst->sign = src->sign; 283 dst->flags = preserve.flags;
287
288 dst->verify_init = src->verify_init;
289 dst->verify = src->verify;
290
291 dst->verify_recover_init = src->verify_recover_init;
292 dst->verify_recover = src->verify_recover;
293
294 dst->signctx_init = src->signctx_init;
295 dst->signctx = src->signctx;
296
297 dst->verifyctx_init = src->verifyctx_init;
298 dst->verifyctx = src->verifyctx;
299
300 dst->encrypt_init = src->encrypt_init;
301 dst->encrypt = src->encrypt;
302
303 dst->decrypt_init = src->decrypt_init;
304 dst->decrypt = src->decrypt;
305
306 dst->derive_init = src->derive_init;
307 dst->derive = src->derive;
308
309 dst->ctrl = src->ctrl;
310 dst->ctrl_str = src->ctrl_str;
311} 284}
312 285
313void 286void