From d5d490dd1e2bc1bdb9c0fcc386d96a660fa1e279 Mon Sep 17 00:00:00 2001 From: jsing <> Date: Sat, 2 Aug 2025 15:47:27 +0000 Subject: Copy EC_FIELD_MODULUS/EC_FIELD_ELEMENTs when copying groups and points. ok tb@ --- src/lib/libcrypto/ec/ec_lib.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/lib/libcrypto/ec/ec_lib.c') diff --git a/src/lib/libcrypto/ec/ec_lib.c b/src/lib/libcrypto/ec/ec_lib.c index 7cc7efe73f..36f42ecc05 100644 --- a/src/lib/libcrypto/ec/ec_lib.c +++ b/src/lib/libcrypto/ec/ec_lib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ec_lib.c,v 1.125 2025/05/24 08:25:58 jsing Exp $ */ +/* $OpenBSD: ec_lib.c,v 1.126 2025/08/02 15:47:27 jsing Exp $ */ /* * Originally written by Bodo Moeller for the OpenSSL project. */ @@ -165,6 +165,10 @@ EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src) dst->a_is_minus3 = src->a_is_minus3; + memcpy(&dst->fm, &src->fm, sizeof(src->fm)); + memcpy(&dst->fe_a, &src->fe_a, sizeof(src->fe_a)); + memcpy(&dst->fe_b, &src->fe_b, sizeof(src->fe_b)); + BN_MONT_CTX_free(dst->mont_ctx); dst->mont_ctx = NULL; if (src->mont_ctx != NULL) { @@ -860,6 +864,10 @@ EC_POINT_copy(EC_POINT *dst, const EC_POINT *src) return 0; dst->Z_is_one = src->Z_is_one; + memcpy(&dst->fe_x, &src->fe_x, sizeof(dst->fe_x)); + memcpy(&dst->fe_y, &src->fe_y, sizeof(dst->fe_y)); + memcpy(&dst->fe_z, &src->fe_z, sizeof(dst->fe_z)); + return 1; } LCRYPTO_ALIAS(EC_POINT_copy); -- cgit v1.2.3-55-g6feb