summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/ec/ec.h6
-rw-r--r--src/lib/libcrypto/ec/ec2_smpl.c29
-rw-r--r--src/lib/libcrypto/ec/ec_asn1.c10
-rw-r--r--src/lib/libcrypto/ec/ec_lib.c53
-rw-r--r--src/lib/libcrypto/ec/ec_local.h6
-rw-r--r--src/lib/libcrypto/ec/ec_mult.c6
-rw-r--r--src/lib/libcrypto/ec/ec_print.c4
-rw-r--r--src/lib/libcrypto/ec/ecp_mont.c11
-rw-r--r--src/lib/libcrypto/ec/ecp_nist.c4
-rw-r--r--src/lib/libcrypto/ec/ecp_smpl.c20
10 files changed, 35 insertions, 114 deletions
diff --git a/src/lib/libcrypto/ec/ec.h b/src/lib/libcrypto/ec/ec.h
index 8cafc5522f..8ba62c8784 100644
--- a/src/lib/libcrypto/ec/ec.h
+++ b/src/lib/libcrypto/ec/ec.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec.h,v 1.30 2022/12/26 07:18:51 jmc Exp $ */ 1/* $OpenBSD: ec.h,v 1.31 2023/03/08 05:45:31 jsing Exp $ */
2/* 2/*
3 * Originally written by Bodo Moeller for the OpenSSL project. 3 * Originally written by Bodo Moeller for the OpenSSL project.
4 */ 4 */
@@ -198,7 +198,9 @@ void EC_GROUP_free(EC_GROUP *group);
198/** Clears and frees a EC_GROUP object 198/** Clears and frees a EC_GROUP object
199 * \param group EC_GROUP object to be cleared and freed. 199 * \param group EC_GROUP object to be cleared and freed.
200 */ 200 */
201#ifndef LIBRESSL_INTERNAL
201void EC_GROUP_clear_free(EC_GROUP *group); 202void EC_GROUP_clear_free(EC_GROUP *group);
203#endif
202 204
203/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD. 205/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD.
204 * \param dst destination EC_GROUP object 206 * \param dst destination EC_GROUP object
@@ -425,7 +427,9 @@ void EC_POINT_free(EC_POINT *point);
425/** Clears and frees a EC_POINT object 427/** Clears and frees a EC_POINT object
426 * \param point EC_POINT object to be cleared and freed 428 * \param point EC_POINT object to be cleared and freed
427 */ 429 */
430#ifndef LIBRESSL_INTERNAL
428void EC_POINT_clear_free(EC_POINT *point); 431void EC_POINT_clear_free(EC_POINT *point);
432#endif
429 433
430/** Copies EC_POINT object 434/** Copies EC_POINT object
431 * \param dst destination EC_POINT object 435 * \param dst destination EC_POINT object
diff --git a/src/lib/libcrypto/ec/ec2_smpl.c b/src/lib/libcrypto/ec/ec2_smpl.c
index f995ff8718..84cba1b83b 100644
--- a/src/lib/libcrypto/ec/ec2_smpl.c
+++ b/src/lib/libcrypto/ec/ec2_smpl.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec2_smpl.c,v 1.32 2023/03/08 04:50:27 jsing Exp $ */ 1/* $OpenBSD: ec2_smpl.c,v 1.33 2023/03/08 05:45:31 jsing Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. 3 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
4 * 4 *
@@ -89,7 +89,7 @@ ec_GF2m_simple_group_init(EC_GROUP *group)
89} 89}
90 90
91/* 91/*
92 * Free a GF(2^m)-based EC_GROUP structure. 92 * Clear and free a GF(2^m)-based EC_GROUP structure.
93 * Note that all other members are handled by EC_GROUP_free. 93 * Note that all other members are handled by EC_GROUP_free.
94 */ 94 */
95static void 95static void
@@ -98,18 +98,6 @@ ec_GF2m_simple_group_finish(EC_GROUP *group)
98 BN_free(&group->field); 98 BN_free(&group->field);
99 BN_free(&group->a); 99 BN_free(&group->a);
100 BN_free(&group->b); 100 BN_free(&group->b);
101}
102
103/*
104 * Clear and free a GF(2^m)-based EC_GROUP structure.
105 * Note that all other members are handled by EC_GROUP_clear_free.
106 */
107static void
108ec_GF2m_simple_group_clear_finish(EC_GROUP *group)
109{
110 BN_free(&group->field);
111 BN_free(&group->a);
112 BN_free(&group->b);
113 group->poly[0] = 0; 101 group->poly[0] = 0;
114 group->poly[1] = 0; 102 group->poly[1] = 0;
115 group->poly[2] = 0; 103 group->poly[2] = 0;
@@ -272,18 +260,9 @@ ec_GF2m_simple_point_init(EC_POINT *point)
272 return 1; 260 return 1;
273} 261}
274 262
275/* Frees an EC_POINT. */
276static void
277ec_GF2m_simple_point_finish(EC_POINT *point)
278{
279 BN_free(&point->X);
280 BN_free(&point->Y);
281 BN_free(&point->Z);
282}
283
284/* Clears and frees an EC_POINT. */ 263/* Clears and frees an EC_POINT. */
285static void 264static void
286ec_GF2m_simple_point_clear_finish(EC_POINT *point) 265ec_GF2m_simple_point_finish(EC_POINT *point)
287{ 266{
288 BN_free(&point->X); 267 BN_free(&point->X);
289 BN_free(&point->Y); 268 BN_free(&point->Y);
@@ -727,7 +706,6 @@ static const EC_METHOD ec_GF2m_simple_method = {
727 .field_type = NID_X9_62_characteristic_two_field, 706 .field_type = NID_X9_62_characteristic_two_field,
728 .group_init = ec_GF2m_simple_group_init, 707 .group_init = ec_GF2m_simple_group_init,
729 .group_finish = ec_GF2m_simple_group_finish, 708 .group_finish = ec_GF2m_simple_group_finish,
730 .group_clear_finish = ec_GF2m_simple_group_clear_finish,
731 .group_copy = ec_GF2m_simple_group_copy, 709 .group_copy = ec_GF2m_simple_group_copy,
732 .group_set_curve = ec_GF2m_simple_group_set_curve, 710 .group_set_curve = ec_GF2m_simple_group_set_curve,
733 .group_get_curve = ec_GF2m_simple_group_get_curve, 711 .group_get_curve = ec_GF2m_simple_group_get_curve,
@@ -736,7 +714,6 @@ static const EC_METHOD ec_GF2m_simple_method = {
736 .group_check_discriminant = ec_GF2m_simple_group_check_discriminant, 714 .group_check_discriminant = ec_GF2m_simple_group_check_discriminant,
737 .point_init = ec_GF2m_simple_point_init, 715 .point_init = ec_GF2m_simple_point_init,
738 .point_finish = ec_GF2m_simple_point_finish, 716 .point_finish = ec_GF2m_simple_point_finish,
739 .point_clear_finish = ec_GF2m_simple_point_clear_finish,
740 .point_copy = ec_GF2m_simple_point_copy, 717 .point_copy = ec_GF2m_simple_point_copy,
741 .point_set_to_infinity = ec_GF2m_simple_point_set_to_infinity, 718 .point_set_to_infinity = ec_GF2m_simple_point_set_to_infinity,
742 .point_set_affine_coordinates = 719 .point_set_affine_coordinates =
diff --git a/src/lib/libcrypto/ec/ec_asn1.c b/src/lib/libcrypto/ec/ec_asn1.c
index 2d7a1d4c3b..fb6a8e84c1 100644
--- a/src/lib/libcrypto/ec/ec_asn1.c
+++ b/src/lib/libcrypto/ec/ec_asn1.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_asn1.c,v 1.40 2022/11/26 16:08:52 tb Exp $ */ 1/* $OpenBSD: ec_asn1.c,v 1.41 2023/03/08 05:45:31 jsing Exp $ */
2/* 2/*
3 * Written by Nils Larsch for the OpenSSL project. 3 * Written by Nils Larsch for the OpenSSL project.
4 */ 4 */
@@ -1236,7 +1236,7 @@ ec_asn1_parameters2group(const ECPARAMETERS *params)
1236 1236
1237 err: 1237 err:
1238 if (!ok) { 1238 if (!ok) {
1239 EC_GROUP_clear_free(ret); 1239 EC_GROUP_free(ret);
1240 ret = NULL; 1240 ret = NULL;
1241 } 1241 }
1242 BN_free(p); 1242 BN_free(p);
@@ -1299,7 +1299,7 @@ d2i_ECPKParameters(EC_GROUP ** a, const unsigned char **in, long len)
1299 } 1299 }
1300 1300
1301 if (a != NULL) { 1301 if (a != NULL) {
1302 EC_GROUP_clear_free(*a); 1302 EC_GROUP_free(*a);
1303 *a = group; 1303 *a = group;
1304 } 1304 }
1305 1305
@@ -1347,7 +1347,7 @@ d2i_ECPrivateKey(EC_KEY ** a, const unsigned char **in, long len)
1347 ret = *a; 1347 ret = *a;
1348 1348
1349 if (priv_key->parameters) { 1349 if (priv_key->parameters) {
1350 EC_GROUP_clear_free(ret->group); 1350 EC_GROUP_free(ret->group);
1351 ret->group = ec_asn1_pkparameters2group(priv_key->parameters); 1351 ret->group = ec_asn1_pkparameters2group(priv_key->parameters);
1352 } 1352 }
1353 if (ret->group == NULL) { 1353 if (ret->group == NULL) {
@@ -1371,7 +1371,7 @@ d2i_ECPrivateKey(EC_KEY ** a, const unsigned char **in, long len)
1371 } 1371 }
1372 1372
1373 if (ret->pub_key) 1373 if (ret->pub_key)
1374 EC_POINT_clear_free(ret->pub_key); 1374 EC_POINT_free(ret->pub_key);
1375 ret->pub_key = EC_POINT_new(ret->group); 1375 ret->pub_key = EC_POINT_new(ret->group);
1376 if (ret->pub_key == NULL) { 1376 if (ret->pub_key == NULL) {
1377 ECerror(ERR_R_EC_LIB); 1377 ECerror(ERR_R_EC_LIB);
diff --git a/src/lib/libcrypto/ec/ec_lib.c b/src/lib/libcrypto/ec/ec_lib.c
index 0e863ddfef..8eb0253a1f 100644
--- a/src/lib/libcrypto/ec/ec_lib.c
+++ b/src/lib/libcrypto/ec/ec_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_lib.c,v 1.49 2023/03/07 09:27:10 jsing Exp $ */ 1/* $OpenBSD: ec_lib.c,v 1.50 2023/03/08 05:45:31 jsing Exp $ */
2/* 2/*
3 * Originally written by Bodo Moeller for the OpenSSL project. 3 * Originally written by Bodo Moeller for the OpenSSL project.
4 */ 4 */
@@ -117,46 +117,28 @@ EC_GROUP_new(const EC_METHOD *meth)
117void 117void
118EC_GROUP_free(EC_GROUP *group) 118EC_GROUP_free(EC_GROUP *group)
119{ 119{
120 if (!group) 120 if (group != NULL)
121 return; 121 return;
122 122
123 if (group->meth->group_finish != 0) 123 if (group->meth->group_finish != NULL)
124 group->meth->group_finish(group); 124 group->meth->group_finish(group);
125 125
126 EC_EX_DATA_free_all_data(&group->extra_data); 126 EC_EX_DATA_clear_free_all_data(&group->extra_data);
127 127
128 EC_POINT_free(group->generator); 128 EC_POINT_free(group->generator);
129 BN_free(&group->order); 129 BN_free(&group->order);
130 BN_free(&group->cofactor); 130 BN_free(&group->cofactor);
131 131
132 free(group->seed); 132 freezero(group->seed, group->seed_len);
133 133 freezero(group, sizeof *group);
134 free(group);
135} 134}
136 135
137
138void 136void
139EC_GROUP_clear_free(EC_GROUP *group) 137EC_GROUP_clear_free(EC_GROUP *group)
140{ 138{
141 if (!group) 139 return EC_GROUP_free(group);
142 return;
143
144 if (group->meth->group_clear_finish != 0)
145 group->meth->group_clear_finish(group);
146 else if (group->meth->group_finish != 0)
147 group->meth->group_finish(group);
148
149 EC_EX_DATA_clear_free_all_data(&group->extra_data);
150
151 EC_POINT_clear_free(group->generator);
152 BN_free(&group->order);
153 BN_free(&group->cofactor);
154
155 freezero(group->seed, group->seed_len);
156 freezero(group, sizeof *group);
157} 140}
158 141
159
160int 142int
161EC_GROUP_copy(EC_GROUP *dest, const EC_GROUP *src) 143EC_GROUP_copy(EC_GROUP *dest, const EC_GROUP *src)
162{ 144{
@@ -195,7 +177,7 @@ EC_GROUP_copy(EC_GROUP *dest, const EC_GROUP *src)
195 return 0; 177 return 0;
196 } else { 178 } else {
197 /* src->generator == NULL */ 179 /* src->generator == NULL */
198 EC_POINT_clear_free(dest->generator); 180 EC_POINT_free(dest->generator);
199 dest->generator = NULL; 181 dest->generator = NULL;
200 } 182 }
201 183
@@ -851,33 +833,24 @@ EC_POINT_new(const EC_GROUP *group)
851 return ret; 833 return ret;
852} 834}
853 835
854
855void 836void
856EC_POINT_free(EC_POINT *point) 837EC_POINT_free(EC_POINT *point)
857{ 838{
858 if (!point) 839 if (point != NULL)
859 return; 840 return;
860 841
861 if (point->meth->point_finish != 0) 842 if (point->meth->point_finish != NULL)
862 point->meth->point_finish(point); 843 point->meth->point_finish(point);
863 free(point);
864}
865 844
845 freezero(point, sizeof *point);
846}
866 847
867void 848void
868EC_POINT_clear_free(EC_POINT *point) 849EC_POINT_clear_free(EC_POINT *point)
869{ 850{
870 if (!point) 851 return EC_POINT_free(point);
871 return;
872
873 if (point->meth->point_clear_finish != 0)
874 point->meth->point_clear_finish(point);
875 else if (point->meth->point_finish != 0)
876 point->meth->point_finish(point);
877 freezero(point, sizeof *point);
878} 852}
879 853
880
881int 854int
882EC_POINT_copy(EC_POINT *dest, const EC_POINT *src) 855EC_POINT_copy(EC_POINT *dest, const EC_POINT *src)
883{ 856{
diff --git a/src/lib/libcrypto/ec/ec_local.h b/src/lib/libcrypto/ec/ec_local.h
index d4cb777c83..d26ec47a24 100644
--- a/src/lib/libcrypto/ec/ec_local.h
+++ b/src/lib/libcrypto/ec/ec_local.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_local.h,v 1.10 2023/03/08 04:50:27 jsing Exp $ */ 1/* $OpenBSD: ec_local.h,v 1.11 2023/03/08 05:45:31 jsing Exp $ */
2/* 2/*
3 * Originally written by Bodo Moeller for the OpenSSL project. 3 * Originally written by Bodo Moeller for the OpenSSL project.
4 */ 4 */
@@ -91,7 +91,6 @@ struct ec_method_st {
91 91
92 int (*group_init)(EC_GROUP *); 92 int (*group_init)(EC_GROUP *);
93 void (*group_finish)(EC_GROUP *); 93 void (*group_finish)(EC_GROUP *);
94 void (*group_clear_finish)(EC_GROUP *);
95 int (*group_copy)(EC_GROUP *, const EC_GROUP *); 94 int (*group_copy)(EC_GROUP *, const EC_GROUP *);
96 95
97 int (*group_set_curve)(EC_GROUP *, const BIGNUM *p, const BIGNUM *a, 96 int (*group_set_curve)(EC_GROUP *, const BIGNUM *p, const BIGNUM *a,
@@ -105,7 +104,6 @@ struct ec_method_st {
105 104
106 int (*point_init)(EC_POINT *); 105 int (*point_init)(EC_POINT *);
107 void (*point_finish)(EC_POINT *); 106 void (*point_finish)(EC_POINT *);
108 void (*point_clear_finish)(EC_POINT *);
109 int (*point_copy)(EC_POINT *, const EC_POINT *); 107 int (*point_copy)(EC_POINT *, const EC_POINT *);
110 108
111 int (*point_set_to_infinity)(const EC_GROUP *, EC_POINT *); 109 int (*point_set_to_infinity)(const EC_GROUP *, EC_POINT *);
@@ -317,7 +315,6 @@ int ec_wNAF_have_precompute_mult(const EC_GROUP *group);
317/* method functions in ecp_smpl.c */ 315/* method functions in ecp_smpl.c */
318int ec_GFp_simple_group_init(EC_GROUP *); 316int ec_GFp_simple_group_init(EC_GROUP *);
319void ec_GFp_simple_group_finish(EC_GROUP *); 317void ec_GFp_simple_group_finish(EC_GROUP *);
320void ec_GFp_simple_group_clear_finish(EC_GROUP *);
321int ec_GFp_simple_group_copy(EC_GROUP *, const EC_GROUP *); 318int ec_GFp_simple_group_copy(EC_GROUP *, const EC_GROUP *);
322int ec_GFp_simple_group_set_curve(EC_GROUP *, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *); 319int ec_GFp_simple_group_set_curve(EC_GROUP *, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *);
323int ec_GFp_simple_group_get_curve(const EC_GROUP *, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *); 320int ec_GFp_simple_group_get_curve(const EC_GROUP *, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *);
@@ -325,7 +322,6 @@ int ec_GFp_simple_group_get_degree(const EC_GROUP *);
325int ec_GFp_simple_group_check_discriminant(const EC_GROUP *, BN_CTX *); 322int ec_GFp_simple_group_check_discriminant(const EC_GROUP *, BN_CTX *);
326int ec_GFp_simple_point_init(EC_POINT *); 323int ec_GFp_simple_point_init(EC_POINT *);
327void ec_GFp_simple_point_finish(EC_POINT *); 324void ec_GFp_simple_point_finish(EC_POINT *);
328void ec_GFp_simple_point_clear_finish(EC_POINT *);
329int ec_GFp_simple_point_copy(EC_POINT *, const EC_POINT *); 325int ec_GFp_simple_point_copy(EC_POINT *, const EC_POINT *);
330int ec_GFp_simple_point_set_to_infinity(const EC_GROUP *, EC_POINT *); 326int ec_GFp_simple_point_set_to_infinity(const EC_GROUP *, EC_POINT *);
331int ec_GFp_simple_set_Jprojective_coordinates(const EC_GROUP *, EC_POINT *, 327int ec_GFp_simple_set_Jprojective_coordinates(const EC_GROUP *, EC_POINT *,
diff --git a/src/lib/libcrypto/ec/ec_mult.c b/src/lib/libcrypto/ec/ec_mult.c
index 4b50184ff6..c792725661 100644
--- a/src/lib/libcrypto/ec/ec_mult.c
+++ b/src/lib/libcrypto/ec/ec_mult.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_mult.c,v 1.27 2022/11/26 16:08:52 tb Exp $ */ 1/* $OpenBSD: ec_mult.c,v 1.28 2023/03/08 05:45:31 jsing Exp $ */
2/* 2/*
3 * Originally written by Bodo Moeller and Nils Larsch for the OpenSSL project. 3 * Originally written by Bodo Moeller and Nils Larsch for the OpenSSL project.
4 */ 4 */
@@ -172,7 +172,7 @@ ec_pre_comp_clear_free(void *pre_)
172 EC_POINT **p; 172 EC_POINT **p;
173 173
174 for (p = pre->points; *p != NULL; p++) { 174 for (p = pre->points; *p != NULL; p++) {
175 EC_POINT_clear_free(*p); 175 EC_POINT_free(*p);
176 explicit_bzero(p, sizeof *p); 176 explicit_bzero(p, sizeof *p);
177 } 177 }
178 free(pre->points); 178 free(pre->points);
@@ -694,7 +694,7 @@ ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
694 } 694 }
695 if (val != NULL) { 695 if (val != NULL) {
696 for (v = val; *v != NULL; v++) 696 for (v = val; *v != NULL; v++)
697 EC_POINT_clear_free(*v); 697 EC_POINT_free(*v);
698 free(val); 698 free(val);
699 } 699 }
700 free(val_sub); 700 free(val_sub);
diff --git a/src/lib/libcrypto/ec/ec_print.c b/src/lib/libcrypto/ec/ec_print.c
index faa212f502..2aa0aa66a9 100644
--- a/src/lib/libcrypto/ec/ec_print.c
+++ b/src/lib/libcrypto/ec/ec_print.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_print.c,v 1.10 2023/03/07 09:27:10 jsing Exp $ */ 1/* $OpenBSD: ec_print.c,v 1.11 2023/03/08 05:45:31 jsing Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
4 * 4 *
@@ -110,7 +110,7 @@ EC_POINT_bn2point(const EC_GROUP *group,
110 110
111 if (!EC_POINT_oct2point(group, ret, buf, buf_len, ctx)) { 111 if (!EC_POINT_oct2point(group, ret, buf, buf_len, ctx)) {
112 if (point == NULL) 112 if (point == NULL)
113 EC_POINT_clear_free(ret); 113 EC_POINT_free(ret);
114 free(buf); 114 free(buf);
115 return NULL; 115 return NULL;
116 } 116 }
diff --git a/src/lib/libcrypto/ec/ecp_mont.c b/src/lib/libcrypto/ec/ecp_mont.c
index d0d497b011..8b85bf32fa 100644
--- a/src/lib/libcrypto/ec/ecp_mont.c
+++ b/src/lib/libcrypto/ec/ecp_mont.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ecp_mont.c,v 1.26 2023/03/08 04:50:27 jsing Exp $ */ 1/* $OpenBSD: ecp_mont.c,v 1.27 2023/03/08 05:45:31 jsing Exp $ */
2/* 2/*
3 * Originally written by Bodo Moeller for the OpenSSL project. 3 * Originally written by Bodo Moeller for the OpenSSL project.
4 */ 4 */
@@ -93,13 +93,6 @@ ec_GFp_mont_group_finish(EC_GROUP *group)
93 ec_GFp_simple_group_finish(group); 93 ec_GFp_simple_group_finish(group);
94} 94}
95 95
96static void
97ec_GFp_mont_group_clear_finish(EC_GROUP *group)
98{
99 ec_GFp_mont_group_clear(group);
100 ec_GFp_simple_group_clear_finish(group);
101}
102
103static int 96static int
104ec_GFp_mont_group_copy(EC_GROUP *dest, const EC_GROUP *src) 97ec_GFp_mont_group_copy(EC_GROUP *dest, const EC_GROUP *src)
105{ 98{
@@ -236,7 +229,6 @@ static const EC_METHOD ec_GFp_mont_method = {
236 .field_type = NID_X9_62_prime_field, 229 .field_type = NID_X9_62_prime_field,
237 .group_init = ec_GFp_mont_group_init, 230 .group_init = ec_GFp_mont_group_init,
238 .group_finish = ec_GFp_mont_group_finish, 231 .group_finish = ec_GFp_mont_group_finish,
239 .group_clear_finish = ec_GFp_mont_group_clear_finish,
240 .group_copy = ec_GFp_mont_group_copy, 232 .group_copy = ec_GFp_mont_group_copy,
241 .group_set_curve = ec_GFp_mont_group_set_curve, 233 .group_set_curve = ec_GFp_mont_group_set_curve,
242 .group_get_curve = ec_GFp_simple_group_get_curve, 234 .group_get_curve = ec_GFp_simple_group_get_curve,
@@ -245,7 +237,6 @@ static const EC_METHOD ec_GFp_mont_method = {
245 .group_check_discriminant = ec_GFp_simple_group_check_discriminant, 237 .group_check_discriminant = ec_GFp_simple_group_check_discriminant,
246 .point_init = ec_GFp_simple_point_init, 238 .point_init = ec_GFp_simple_point_init,
247 .point_finish = ec_GFp_simple_point_finish, 239 .point_finish = ec_GFp_simple_point_finish,
248 .point_clear_finish = ec_GFp_simple_point_clear_finish,
249 .point_copy = ec_GFp_simple_point_copy, 240 .point_copy = ec_GFp_simple_point_copy,
250 .point_set_to_infinity = ec_GFp_simple_point_set_to_infinity, 241 .point_set_to_infinity = ec_GFp_simple_point_set_to_infinity,
251 .point_set_Jprojective_coordinates = 242 .point_set_Jprojective_coordinates =
diff --git a/src/lib/libcrypto/ec/ecp_nist.c b/src/lib/libcrypto/ec/ecp_nist.c
index e3c13f7c65..b8fb5dc90f 100644
--- a/src/lib/libcrypto/ec/ecp_nist.c
+++ b/src/lib/libcrypto/ec/ecp_nist.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ecp_nist.c,v 1.23 2023/03/08 04:50:27 jsing Exp $ */ 1/* $OpenBSD: ecp_nist.c,v 1.24 2023/03/08 05:45:31 jsing Exp $ */
2/* 2/*
3 * Written by Nils Larsch for the OpenSSL project. 3 * Written by Nils Larsch for the OpenSSL project.
4 */ 4 */
@@ -171,7 +171,6 @@ static const EC_METHOD ec_GFp_nist_method = {
171 .field_type = NID_X9_62_prime_field, 171 .field_type = NID_X9_62_prime_field,
172 .group_init = ec_GFp_simple_group_init, 172 .group_init = ec_GFp_simple_group_init,
173 .group_finish = ec_GFp_simple_group_finish, 173 .group_finish = ec_GFp_simple_group_finish,
174 .group_clear_finish = ec_GFp_simple_group_clear_finish,
175 .group_copy = ec_GFp_nist_group_copy, 174 .group_copy = ec_GFp_nist_group_copy,
176 .group_set_curve = ec_GFp_nist_group_set_curve, 175 .group_set_curve = ec_GFp_nist_group_set_curve,
177 .group_get_curve = ec_GFp_simple_group_get_curve, 176 .group_get_curve = ec_GFp_simple_group_get_curve,
@@ -180,7 +179,6 @@ static const EC_METHOD ec_GFp_nist_method = {
180 .group_check_discriminant = ec_GFp_simple_group_check_discriminant, 179 .group_check_discriminant = ec_GFp_simple_group_check_discriminant,
181 .point_init = ec_GFp_simple_point_init, 180 .point_init = ec_GFp_simple_point_init,
182 .point_finish = ec_GFp_simple_point_finish, 181 .point_finish = ec_GFp_simple_point_finish,
183 .point_clear_finish = ec_GFp_simple_point_clear_finish,
184 .point_copy = ec_GFp_simple_point_copy, 182 .point_copy = ec_GFp_simple_point_copy,
185 .point_set_to_infinity = ec_GFp_simple_point_set_to_infinity, 183 .point_set_to_infinity = ec_GFp_simple_point_set_to_infinity,
186 .point_set_Jprojective_coordinates = 184 .point_set_Jprojective_coordinates =
diff --git a/src/lib/libcrypto/ec/ecp_smpl.c b/src/lib/libcrypto/ec/ecp_smpl.c
index c33347ad85..9af6034601 100644
--- a/src/lib/libcrypto/ec/ecp_smpl.c
+++ b/src/lib/libcrypto/ec/ecp_smpl.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ecp_smpl.c,v 1.41 2023/03/08 04:50:27 jsing Exp $ */ 1/* $OpenBSD: ecp_smpl.c,v 1.42 2023/03/08 05:45:31 jsing Exp $ */
2/* Includes code written by Lenka Fibikova <fibikova@exp-math.uni-essen.de> 2/* Includes code written by Lenka Fibikova <fibikova@exp-math.uni-essen.de>
3 * for the OpenSSL project. 3 * for the OpenSSL project.
4 * Includes code written by Bodo Moeller for the OpenSSL project. 4 * Includes code written by Bodo Moeller for the OpenSSL project.
@@ -99,14 +99,6 @@ ec_GFp_simple_group_finish(EC_GROUP *group)
99 BN_free(&group->b); 99 BN_free(&group->b);
100} 100}
101 101
102void
103ec_GFp_simple_group_clear_finish(EC_GROUP *group)
104{
105 BN_free(&group->field);
106 BN_free(&group->a);
107 BN_free(&group->b);
108}
109
110int 102int
111ec_GFp_simple_group_copy(EC_GROUP *dest, const EC_GROUP *src) 103ec_GFp_simple_group_copy(EC_GROUP *dest, const EC_GROUP *src)
112{ 104{
@@ -319,14 +311,6 @@ ec_GFp_simple_point_finish(EC_POINT *point)
319 BN_free(&point->X); 311 BN_free(&point->X);
320 BN_free(&point->Y); 312 BN_free(&point->Y);
321 BN_free(&point->Z); 313 BN_free(&point->Z);
322}
323
324void
325ec_GFp_simple_point_clear_finish(EC_POINT *point)
326{
327 BN_free(&point->X);
328 BN_free(&point->Y);
329 BN_free(&point->Z);
330 point->Z_is_one = 0; 314 point->Z_is_one = 0;
331} 315}
332 316
@@ -1657,7 +1641,6 @@ static const EC_METHOD ec_GFp_simple_method = {
1657 .field_type = NID_X9_62_prime_field, 1641 .field_type = NID_X9_62_prime_field,
1658 .group_init = ec_GFp_simple_group_init, 1642 .group_init = ec_GFp_simple_group_init,
1659 .group_finish = ec_GFp_simple_group_finish, 1643 .group_finish = ec_GFp_simple_group_finish,
1660 .group_clear_finish = ec_GFp_simple_group_clear_finish,
1661 .group_copy = ec_GFp_simple_group_copy, 1644 .group_copy = ec_GFp_simple_group_copy,
1662 .group_set_curve = ec_GFp_simple_group_set_curve, 1645 .group_set_curve = ec_GFp_simple_group_set_curve,
1663 .group_get_curve = ec_GFp_simple_group_get_curve, 1646 .group_get_curve = ec_GFp_simple_group_get_curve,
@@ -1666,7 +1649,6 @@ static const EC_METHOD ec_GFp_simple_method = {
1666 .group_check_discriminant = ec_GFp_simple_group_check_discriminant, 1649 .group_check_discriminant = ec_GFp_simple_group_check_discriminant,
1667 .point_init = ec_GFp_simple_point_init, 1650 .point_init = ec_GFp_simple_point_init,
1668 .point_finish = ec_GFp_simple_point_finish, 1651 .point_finish = ec_GFp_simple_point_finish,
1669 .point_clear_finish = ec_GFp_simple_point_clear_finish,
1670 .point_copy = ec_GFp_simple_point_copy, 1652 .point_copy = ec_GFp_simple_point_copy,
1671 .point_set_to_infinity = ec_GFp_simple_point_set_to_infinity, 1653 .point_set_to_infinity = ec_GFp_simple_point_set_to_infinity,
1672 .point_set_Jprojective_coordinates = 1654 .point_set_Jprojective_coordinates =