summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authortb <>2024-11-05 08:56:57 +0000
committertb <>2024-11-05 08:56:57 +0000
commitb03e1716d17e9653ae8fea32cead609adcf84251 (patch)
tree6cbf18ca727c5566b8ecfa0e0565758aff77e14d /src/lib
parent12f0b7f7c165293139ae84e7743ac35e9daec51f (diff)
downloadopenbsd-b03e1716d17e9653ae8fea32cead609adcf84251.tar.gz
openbsd-b03e1716d17e9653ae8fea32cead609adcf84251.tar.bz2
openbsd-b03e1716d17e9653ae8fea32cead609adcf84251.zip
EC_POINT_is_at_infinity() returns a boolean
This may have been different at some point in the past, but it may also have been a confusion with EC_POINT_is_on_curve() which, like any great API with a name implying a boolean return, actually has three possible return values. ok jsing
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/ec/ec_key.c6
-rw-r--r--src/lib/libcrypto/ec/ec_lib.c4
-rw-r--r--src/lib/libcrypto/ec/ecp_smpl.c20
3 files changed, 15 insertions, 15 deletions
diff --git a/src/lib/libcrypto/ec/ec_key.c b/src/lib/libcrypto/ec/ec_key.c
index 38a5582ba0..21c22823f9 100644
--- a/src/lib/libcrypto/ec/ec_key.c
+++ b/src/lib/libcrypto/ec/ec_key.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_key.c,v 1.41 2024/10/22 12:02:43 tb Exp $ */ 1/* $OpenBSD: ec_key.c,v 1.42 2024/11/05 08:56:57 tb Exp $ */
2/* 2/*
3 * Written by Nils Larsch for the OpenSSL project. 3 * Written by Nils Larsch for the OpenSSL project.
4 */ 4 */
@@ -287,7 +287,7 @@ EC_KEY_check_key(const EC_KEY *eckey)
287 goto err; 287 goto err;
288 } 288 }
289 289
290 if (EC_POINT_is_at_infinity(eckey->group, eckey->pub_key) > 0) { 290 if (EC_POINT_is_at_infinity(eckey->group, eckey->pub_key)) {
291 ECerror(EC_R_POINT_AT_INFINITY); 291 ECerror(EC_R_POINT_AT_INFINITY);
292 goto err; 292 goto err;
293 } 293 }
@@ -313,7 +313,7 @@ EC_KEY_check_key(const EC_KEY *eckey)
313 ECerror(ERR_R_EC_LIB); 313 ECerror(ERR_R_EC_LIB);
314 goto err; 314 goto err;
315 } 315 }
316 if (EC_POINT_is_at_infinity(eckey->group, point) <= 0) { 316 if (!EC_POINT_is_at_infinity(eckey->group, point)) {
317 ECerror(EC_R_WRONG_ORDER); 317 ECerror(EC_R_WRONG_ORDER);
318 goto err; 318 goto err;
319 } 319 }
diff --git a/src/lib/libcrypto/ec/ec_lib.c b/src/lib/libcrypto/ec/ec_lib.c
index 0d28df59ba..15e5055f34 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.78 2024/11/04 13:19:08 tb Exp $ */ 1/* $OpenBSD: ec_lib.c,v 1.79 2024/11/05 08:56:57 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 */
@@ -650,7 +650,7 @@ EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx_in)
650 } 650 }
651 if (!EC_POINT_mul(group, point, order, NULL, NULL, ctx)) 651 if (!EC_POINT_mul(group, point, order, NULL, NULL, ctx))
652 goto err; 652 goto err;
653 if (EC_POINT_is_at_infinity(group, point) <= 0) { 653 if (!EC_POINT_is_at_infinity(group, point)) {
654 ECerror(EC_R_INVALID_GROUP_ORDER); 654 ECerror(EC_R_INVALID_GROUP_ORDER);
655 goto err; 655 goto err;
656 } 656 }
diff --git a/src/lib/libcrypto/ec/ecp_smpl.c b/src/lib/libcrypto/ec/ecp_smpl.c
index 37e2d50d64..6430857e0f 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.60 2024/11/03 15:47:11 tb Exp $ */ 1/* $OpenBSD: ecp_smpl.c,v 1.61 2024/11/05 08:56:57 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.
@@ -577,9 +577,9 @@ ec_GFp_simple_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, const E
577 577
578 if (a == b) 578 if (a == b)
579 return EC_POINT_dbl(group, r, a, ctx); 579 return EC_POINT_dbl(group, r, a, ctx);
580 if (EC_POINT_is_at_infinity(group, a) > 0) 580 if (EC_POINT_is_at_infinity(group, a))
581 return EC_POINT_copy(r, b); 581 return EC_POINT_copy(r, b);
582 if (EC_POINT_is_at_infinity(group, b) > 0) 582 if (EC_POINT_is_at_infinity(group, b))
583 return EC_POINT_copy(r, a); 583 return EC_POINT_copy(r, a);
584 584
585 field_mul = group->meth->field_mul; 585 field_mul = group->meth->field_mul;
@@ -757,7 +757,7 @@ ec_GFp_simple_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, BN_CTX
757 BIGNUM *n0, *n1, *n2, *n3; 757 BIGNUM *n0, *n1, *n2, *n3;
758 int ret = 0; 758 int ret = 0;
759 759
760 if (EC_POINT_is_at_infinity(group, a) > 0) 760 if (EC_POINT_is_at_infinity(group, a))
761 return EC_POINT_set_to_infinity(group, r); 761 return EC_POINT_set_to_infinity(group, r);
762 762
763 field_mul = group->meth->field_mul; 763 field_mul = group->meth->field_mul;
@@ -885,7 +885,7 @@ ec_GFp_simple_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, BN_CTX
885int 885int
886ec_GFp_simple_invert(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx) 886ec_GFp_simple_invert(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx)
887{ 887{
888 if (EC_POINT_is_at_infinity(group, point) > 0 || BN_is_zero(&point->Y)) 888 if (EC_POINT_is_at_infinity(group, point) || BN_is_zero(&point->Y))
889 /* point is its own inverse */ 889 /* point is its own inverse */
890 return 1; 890 return 1;
891 891
@@ -907,7 +907,7 @@ ec_GFp_simple_is_on_curve(const EC_GROUP *group, const EC_POINT *point, BN_CTX *
907 BIGNUM *rh, *tmp, *Z4, *Z6; 907 BIGNUM *rh, *tmp, *Z4, *Z6;
908 int ret = -1; 908 int ret = -1;
909 909
910 if (EC_POINT_is_at_infinity(group, point) > 0) 910 if (EC_POINT_is_at_infinity(group, point))
911 return 1; 911 return 1;
912 912
913 field_mul = group->meth->field_mul; 913 field_mul = group->meth->field_mul;
@@ -1009,10 +1009,10 @@ ec_GFp_simple_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, B
1009 const BIGNUM *tmp1_, *tmp2_; 1009 const BIGNUM *tmp1_, *tmp2_;
1010 int ret = -1; 1010 int ret = -1;
1011 1011
1012 if (EC_POINT_is_at_infinity(group, a) > 0) 1012 if (EC_POINT_is_at_infinity(group, a))
1013 return EC_POINT_is_at_infinity(group, b) > 0 ? 0 : 1; 1013 return !EC_POINT_is_at_infinity(group, b);
1014 1014
1015 if (EC_POINT_is_at_infinity(group, b) > 0) 1015 if (EC_POINT_is_at_infinity(group, b))
1016 return 1; 1016 return 1;
1017 1017
1018 if (a->Z_is_one && b->Z_is_one) 1018 if (a->Z_is_one && b->Z_is_one)
@@ -1097,7 +1097,7 @@ ec_GFp_simple_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx)
1097 BIGNUM *x, *y; 1097 BIGNUM *x, *y;
1098 int ret = 0; 1098 int ret = 0;
1099 1099
1100 if (point->Z_is_one || EC_POINT_is_at_infinity(group, point) > 0) 1100 if (point->Z_is_one || EC_POINT_is_at_infinity(group, point))
1101 return 1; 1101 return 1;
1102 1102
1103 BN_CTX_start(ctx); 1103 BN_CTX_start(ctx);