summaryrefslogtreecommitdiff
path: root/src/lib
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
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')
-rw-r--r--src/lib/libcrypto/Symbols.list6
-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
-rw-r--r--src/lib/libcrypto/hidden/openssl/ec.h8
6 files changed, 10 insertions, 56 deletions
diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list
index cae2ac924d..647dfa6065 100644
--- a/src/lib/libcrypto/Symbols.list
+++ b/src/lib/libcrypto/Symbols.list
@@ -861,8 +861,6 @@ ECPKParameters_print_fp
861ECParameters_dup 861ECParameters_dup
862ECParameters_print 862ECParameters_print
863ECParameters_print_fp 863ECParameters_print_fp
864EC_GFp_mont_method
865EC_GFp_simple_method
866EC_GROUP_check 864EC_GROUP_check
867EC_GROUP_check_discriminant 865EC_GROUP_check_discriminant
868EC_GROUP_clear_free 866EC_GROUP_clear_free
@@ -883,8 +881,6 @@ EC_GROUP_get_order
883EC_GROUP_get_point_conversion_form 881EC_GROUP_get_point_conversion_form
884EC_GROUP_get_seed_len 882EC_GROUP_get_seed_len
885EC_GROUP_have_precompute_mult 883EC_GROUP_have_precompute_mult
886EC_GROUP_method_of
887EC_GROUP_new
888EC_GROUP_new_by_curve_name 884EC_GROUP_new_by_curve_name
889EC_GROUP_new_curve_GFp 885EC_GROUP_new_curve_GFp
890EC_GROUP_order_bits 886EC_GROUP_order_bits
@@ -942,7 +938,6 @@ EC_KEY_set_private_key
942EC_KEY_set_public_key 938EC_KEY_set_public_key
943EC_KEY_set_public_key_affine_coordinates 939EC_KEY_set_public_key_affine_coordinates
944EC_KEY_up_ref 940EC_KEY_up_ref
945EC_METHOD_get_field_type
946EC_POINT_add 941EC_POINT_add
947EC_POINT_bn2point 942EC_POINT_bn2point
948EC_POINT_clear_free 943EC_POINT_clear_free
@@ -959,7 +954,6 @@ EC_POINT_invert
959EC_POINT_is_at_infinity 954EC_POINT_is_at_infinity
960EC_POINT_is_on_curve 955EC_POINT_is_on_curve
961EC_POINT_make_affine 956EC_POINT_make_affine
962EC_POINT_method_of
963EC_POINT_mul 957EC_POINT_mul
964EC_POINT_new 958EC_POINT_new
965EC_POINT_oct2point 959EC_POINT_oct2point
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);
diff --git a/src/lib/libcrypto/hidden/openssl/ec.h b/src/lib/libcrypto/hidden/openssl/ec.h
index 0b64474c4b..8ffa017d2d 100644
--- a/src/lib/libcrypto/hidden/openssl/ec.h
+++ b/src/lib/libcrypto/hidden/openssl/ec.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec.h,v 1.7 2024/10/22 15:54:33 tb Exp $ */ 1/* $OpenBSD: ec.h,v 1.8 2025/03/09 15:33:35 tb Exp $ */
2/* 2/*
3 * Copyright (c) 2023 Bob Beck <beck@openbsd.org> 3 * Copyright (c) 2023 Bob Beck <beck@openbsd.org>
4 * 4 *
@@ -25,14 +25,9 @@
25#endif 25#endif
26#include "crypto_namespace.h" 26#include "crypto_namespace.h"
27 27
28LCRYPTO_USED(EC_GFp_simple_method);
29LCRYPTO_USED(EC_GFp_mont_method);
30LCRYPTO_USED(EC_GROUP_new);
31LCRYPTO_USED(EC_GROUP_free); 28LCRYPTO_USED(EC_GROUP_free);
32LCRYPTO_USED(EC_GROUP_copy); 29LCRYPTO_USED(EC_GROUP_copy);
33LCRYPTO_USED(EC_GROUP_dup); 30LCRYPTO_USED(EC_GROUP_dup);
34LCRYPTO_USED(EC_GROUP_method_of);
35LCRYPTO_USED(EC_METHOD_get_field_type);
36LCRYPTO_USED(EC_GROUP_set_generator); 31LCRYPTO_USED(EC_GROUP_set_generator);
37LCRYPTO_USED(EC_GROUP_get0_generator); 32LCRYPTO_USED(EC_GROUP_get0_generator);
38LCRYPTO_USED(EC_GROUP_get_order); 33LCRYPTO_USED(EC_GROUP_get_order);
@@ -62,7 +57,6 @@ LCRYPTO_USED(EC_POINT_new);
62LCRYPTO_USED(EC_POINT_free); 57LCRYPTO_USED(EC_POINT_free);
63LCRYPTO_USED(EC_POINT_copy); 58LCRYPTO_USED(EC_POINT_copy);
64LCRYPTO_USED(EC_POINT_dup); 59LCRYPTO_USED(EC_POINT_dup);
65LCRYPTO_USED(EC_POINT_method_of);
66LCRYPTO_USED(EC_POINT_set_to_infinity); 60LCRYPTO_USED(EC_POINT_set_to_infinity);
67LCRYPTO_USED(EC_POINT_set_affine_coordinates); 61LCRYPTO_USED(EC_POINT_set_affine_coordinates);
68LCRYPTO_USED(EC_POINT_get_affine_coordinates); 62LCRYPTO_USED(EC_POINT_get_affine_coordinates);