summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/ec
diff options
context:
space:
mode:
authortb <>2025-03-09 15:33:35 +0000
committertb <>2025-03-09 15:33:35 +0000
commit53a919ddf8f4c663b3beca57c18dc025e1f71fa0 (patch)
tree5ea07c323509da65b5e08fe62e83b6238f547a51 /src/lib/libcrypto/ec
parentb04c2a1d799fe2ea8751349ab1dc4a8b551ce48d (diff)
downloadopenbsd-53a919ddf8f4c663b3beca57c18dc025e1f71fa0.tar.gz
openbsd-53a919ddf8f4c663b3beca57c18dc025e1f71fa0.tar.bz2
openbsd-53a919ddf8f4c663b3beca57c18dc025e1f71fa0.zip
Unexport EC_METHOD and all API using it
This is an implementation detail and there is no reason to leak it from the library. This removes EC_GFp_{mont,simple}_method(), EC_GROUP_{method_of,new}(), EC_METHOD_get_field_type(), EC_POINT_method_of() from the public API. EC_GROUP_copy() is now quite useless, so it will go as well. ok jsing
Diffstat (limited to 'src/lib/libcrypto/ec')
-rw-r--r--src/lib/libcrypto/ec/ec.h12
-rw-r--r--src/lib/libcrypto/ec/ec_lib.c27
-rw-r--r--src/lib/libcrypto/ec/ec_local.h9
-rw-r--r--src/lib/libcrypto/ec/ecp_methods.c4
4 files changed, 9 insertions, 43 deletions
diff --git a/src/lib/libcrypto/ec/ec.h b/src/lib/libcrypto/ec/ec.h
index dd06dcb8b4..0229a4bf41 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.49 2025/01/25 17:59:44 tb Exp $ */ 1/* $OpenBSD: ec.h,v 1.50 2025/03/09 15:33:35 tb 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 */
@@ -95,23 +95,15 @@ typedef enum {
95 POINT_CONVERSION_HYBRID = 6 95 POINT_CONVERSION_HYBRID = 6
96} point_conversion_form_t; 96} point_conversion_form_t;
97 97
98typedef struct ec_method_st EC_METHOD;
99typedef struct ec_group_st EC_GROUP; 98typedef struct ec_group_st EC_GROUP;
100typedef struct ec_point_st EC_POINT; 99typedef struct ec_point_st EC_POINT;
101 100
102const EC_METHOD *EC_GFp_simple_method(void);
103const EC_METHOD *EC_GFp_mont_method(void);
104
105EC_GROUP *EC_GROUP_new(const EC_METHOD *meth);
106void EC_GROUP_free(EC_GROUP *group); 101void EC_GROUP_free(EC_GROUP *group);
107void EC_GROUP_clear_free(EC_GROUP *group); 102void EC_GROUP_clear_free(EC_GROUP *group);
108 103
109int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); 104int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src);
110EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); 105EC_GROUP *EC_GROUP_dup(const EC_GROUP *src);
111 106
112const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group);
113int EC_METHOD_get_field_type(const EC_METHOD *meth);
114
115int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, 107int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator,
116 const BIGNUM *order, const BIGNUM *cofactor); 108 const BIGNUM *order, const BIGNUM *cofactor);
117const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); 109const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group);
@@ -172,8 +164,6 @@ void EC_POINT_clear_free(EC_POINT *point);
172int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); 164int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src);
173EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); 165EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group);
174 166
175const EC_METHOD *EC_POINT_method_of(const EC_POINT *point);
176
177int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); 167int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point);
178 168
179int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *p, 169int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *p,
diff --git a/src/lib/libcrypto/ec/ec_lib.c b/src/lib/libcrypto/ec/ec_lib.c
index a6259ed581..874c3f1d45 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.116 2025/01/25 13:13:57 tb Exp $ */ 1/* $OpenBSD: ec_lib.c,v 1.117 2025/03/09 15:33:35 tb 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,7 +117,6 @@ EC_GROUP_new(const EC_METHOD *meth)
117 117
118 return NULL; 118 return NULL;
119} 119}
120LCRYPTO_ALIAS(EC_GROUP_new);
121 120
122void 121void
123EC_GROUP_free(EC_GROUP *group) 122EC_GROUP_free(EC_GROUP *group)
@@ -1406,30 +1405,6 @@ EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
1406} 1405}
1407LCRYPTO_ALIAS(EC_POINTs_mul); 1406LCRYPTO_ALIAS(EC_POINTs_mul);
1408 1407
1409const EC_METHOD *
1410EC_GROUP_method_of(const EC_GROUP *group)
1411{
1412 ECerror(ERR_R_DISABLED);
1413 return NULL;
1414}
1415LCRYPTO_ALIAS(EC_GROUP_method_of);
1416
1417int
1418EC_METHOD_get_field_type(const EC_METHOD *meth)
1419{
1420 ECerror(ERR_R_DISABLED);
1421 return NID_undef;
1422}
1423LCRYPTO_ALIAS(EC_METHOD_get_field_type);
1424
1425const EC_METHOD *
1426EC_POINT_method_of(const EC_POINT *point)
1427{
1428 ECerror(ERR_R_DISABLED);
1429 return NULL;
1430}
1431LCRYPTO_ALIAS(EC_POINT_method_of);
1432
1433int 1408int
1434EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx_in) 1409EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx_in)
1435{ 1410{
diff --git a/src/lib/libcrypto/ec/ec_local.h b/src/lib/libcrypto/ec/ec_local.h
index d1e3c1fa4a..9c188c0197 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.65 2025/01/25 13:15:21 tb Exp $ */ 1/* $OpenBSD: ec_local.h,v 1.66 2025/03/09 15:33:35 tb 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 */
@@ -79,7 +79,7 @@
79 79
80__BEGIN_HIDDEN_DECLS 80__BEGIN_HIDDEN_DECLS
81 81
82struct ec_method_st { 82typedef struct ec_method_st {
83 int (*group_set_curve)(EC_GROUP *, const BIGNUM *p, const BIGNUM *a, 83 int (*group_set_curve)(EC_GROUP *, const BIGNUM *p, const BIGNUM *a,
84 const BIGNUM *b, BN_CTX *); 84 const BIGNUM *b, BN_CTX *);
85 int (*group_get_curve)(const EC_GROUP *, BIGNUM *p, BIGNUM *a, 85 int (*group_get_curve)(const EC_GROUP *, BIGNUM *p, BIGNUM *a,
@@ -124,7 +124,7 @@ struct ec_method_st {
124 BN_CTX *); 124 BN_CTX *);
125 int (*field_decode)(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, 125 int (*field_decode)(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
126 BN_CTX *); 126 BN_CTX *);
127} /* EC_METHOD */; 127} EC_METHOD;
128 128
129struct ec_group_st { 129struct ec_group_st {
130 const EC_METHOD *meth; 130 const EC_METHOD *meth;
@@ -170,6 +170,9 @@ struct ec_point_st {
170 int Z_is_one; /* enable optimized point arithmetics for special case */ 170 int Z_is_one; /* enable optimized point arithmetics for special case */
171} /* EC_POINT */; 171} /* EC_POINT */;
172 172
173const EC_METHOD *EC_GFp_simple_method(void);
174const EC_METHOD *EC_GFp_mont_method(void);
175
173/* Compute r = generator * m + point * n in non-constant time. */ 176/* Compute r = generator * m + point * n in non-constant time. */
174int ec_wnaf_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *m, 177int ec_wnaf_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *m,
175 const EC_POINT *point, const BIGNUM *n, BN_CTX *ctx); 178 const EC_POINT *point, const BIGNUM *n, BN_CTX *ctx);
diff --git a/src/lib/libcrypto/ec/ecp_methods.c b/src/lib/libcrypto/ec/ecp_methods.c
index d1d0add538..544c2be4d4 100644
--- a/src/lib/libcrypto/ec/ecp_methods.c
+++ b/src/lib/libcrypto/ec/ecp_methods.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ecp_methods.c,v 1.43 2025/02/13 11:19:49 tb Exp $ */ 1/* $OpenBSD: ecp_methods.c,v 1.44 2025/03/09 15:33:35 tb 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.
@@ -1299,7 +1299,6 @@ EC_GFp_simple_method(void)
1299{ 1299{
1300 return &ec_GFp_simple_method; 1300 return &ec_GFp_simple_method;
1301} 1301}
1302LCRYPTO_ALIAS(EC_GFp_simple_method);
1303 1302
1304static const EC_METHOD ec_GFp_mont_method = { 1303static const EC_METHOD ec_GFp_mont_method = {
1305 .group_set_curve = ec_mont_group_set_curve, 1304 .group_set_curve = ec_mont_group_set_curve,
@@ -1325,4 +1324,3 @@ EC_GFp_mont_method(void)
1325{ 1324{
1326 return &ec_GFp_mont_method; 1325 return &ec_GFp_mont_method;
1327} 1326}
1328LCRYPTO_ALIAS(EC_GFp_mont_method);