summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2025-01-06 12:35:14 +0000
committerjsing <>2025-01-06 12:35:14 +0000
commit040f047180525bbee39de311cf3ae17a898c86dc (patch)
tree56bceda3598e917f19ee015bb6e277b5c45d2f85
parent52f13317baa428db8efa6305c98bcca1c8d6b93e (diff)
downloadopenbsd-040f047180525bbee39de311cf3ae17a898c86dc.tar.gz
openbsd-040f047180525bbee39de311cf3ae17a898c86dc.tar.bz2
openbsd-040f047180525bbee39de311cf3ae17a898c86dc.zip
Remove indirection for coordinate blinding.
This is usually method specific, so remove the indirection and call the appropriate blinding function directly. ok tb@
-rw-r--r--src/lib/libcrypto/ec/ec_lib.c20
-rw-r--r--src/lib/libcrypto/ec/ec_local.h6
-rw-r--r--src/lib/libcrypto/ec/ecp_methods.c6
3 files changed, 4 insertions, 28 deletions
diff --git a/src/lib/libcrypto/ec/ec_lib.c b/src/lib/libcrypto/ec/ec_lib.c
index 170bdedc57..b1aad34017 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.96 2025/01/06 11:59:02 tb Exp $ */ 1/* $OpenBSD: ec_lib.c,v 1.97 2025/01/06 12:35:14 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 */
@@ -766,24 +766,6 @@ EC_GROUP_cmp(const EC_GROUP *group1, const EC_GROUP *group2, BN_CTX *ctx_in)
766} 766}
767LCRYPTO_ALIAS(EC_GROUP_cmp); 767LCRYPTO_ALIAS(EC_GROUP_cmp);
768 768
769/*
770 * Coordinate blinding for EC_POINT.
771 *
772 * The underlying EC_METHOD can optionally implement this function:
773 * underlying implementations should return 0 on errors, or 1 on success.
774 *
775 * This wrapper returns 1 in case the underlying EC_METHOD does not support
776 * coordinate blinding.
777 */
778int
779ec_point_blind_coordinates(const EC_GROUP *group, EC_POINT *p, BN_CTX *ctx)
780{
781 if (group->meth->blind_coordinates == NULL)
782 return 1;
783
784 return group->meth->blind_coordinates(group, p, ctx);
785}
786
787EC_POINT * 769EC_POINT *
788EC_POINT_new(const EC_GROUP *group) 770EC_POINT_new(const EC_GROUP *group)
789{ 771{
diff --git a/src/lib/libcrypto/ec/ec_local.h b/src/lib/libcrypto/ec/ec_local.h
index 1b7ca5b645..c74bb05d9a 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.48 2025/01/06 11:59:02 tb Exp $ */ 1/* $OpenBSD: ec_local.h,v 1.49 2025/01/06 12:35:14 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 */
@@ -142,9 +142,6 @@ struct ec_method_st {
142 BN_CTX *); 142 BN_CTX *);
143 int (*field_decode)(const EC_GROUP *, BIGNUM *r, const BIGNUM *a, 143 int (*field_decode)(const EC_GROUP *, BIGNUM *r, const BIGNUM *a,
144 BN_CTX *); 144 BN_CTX *);
145
146 int (*blind_coordinates)(const EC_GROUP *group, EC_POINT *p,
147 BN_CTX *ctx);
148} /* EC_METHOD */; 145} /* EC_METHOD */;
149 146
150struct ec_group_st { 147struct ec_group_st {
@@ -224,7 +221,6 @@ int ec_wnaf_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *m,
224 const EC_POINT *point, const BIGNUM *n, BN_CTX *ctx); 221 const EC_POINT *point, const BIGNUM *n, BN_CTX *ctx);
225 222
226int ec_group_simple_order_bits(const EC_GROUP *group); 223int ec_group_simple_order_bits(const EC_GROUP *group);
227int ec_point_blind_coordinates(const EC_GROUP *group, EC_POINT *p, BN_CTX *ctx);
228 224
229/* EC_METHOD definitions */ 225/* EC_METHOD definitions */
230 226
diff --git a/src/lib/libcrypto/ec/ecp_methods.c b/src/lib/libcrypto/ec/ecp_methods.c
index 2297b07175..9ff27cf104 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.20 2025/01/06 11:59:02 tb Exp $ */ 1/* $OpenBSD: ecp_methods.c,v 1.21 2025/01/06 12:35:14 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.
@@ -1327,7 +1327,7 @@ ec_mul_ct(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
1327 * Apply coordinate blinding for EC_POINT if the underlying EC_METHOD 1327 * Apply coordinate blinding for EC_POINT if the underlying EC_METHOD
1328 * implements it. 1328 * implements it.
1329 */ 1329 */
1330 if (!ec_point_blind_coordinates(group, s, ctx)) 1330 if (!ec_blind_coordinates(group, s, ctx))
1331 goto err; 1331 goto err;
1332 1332
1333 /* top bit is a 1, in a fixed pos */ 1333 /* top bit is a 1, in a fixed pos */
@@ -1577,7 +1577,6 @@ static const EC_METHOD ec_GFp_simple_method = {
1577 .mul_double_nonct = ec_mul_double_nonct, 1577 .mul_double_nonct = ec_mul_double_nonct,
1578 .field_mul = ec_field_mul, 1578 .field_mul = ec_field_mul,
1579 .field_sqr = ec_field_sqr, 1579 .field_sqr = ec_field_sqr,
1580 .blind_coordinates = ec_blind_coordinates,
1581}; 1580};
1582 1581
1583const EC_METHOD * 1582const EC_METHOD *
@@ -1612,7 +1611,6 @@ static const EC_METHOD ec_GFp_mont_method = {
1612 .field_sqr = ec_mont_field_sqr, 1611 .field_sqr = ec_mont_field_sqr,
1613 .field_encode = ec_mont_field_encode, 1612 .field_encode = ec_mont_field_encode,
1614 .field_decode = ec_mont_field_decode, 1613 .field_decode = ec_mont_field_decode,
1615 .blind_coordinates = ec_blind_coordinates,
1616}; 1614};
1617 1615
1618const EC_METHOD * 1616const EC_METHOD *