summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/ec/ec.h10
-rw-r--r--src/lib/libcrypto/ec/ec_asn1.c8
-rw-r--r--src/lib/libcrypto/ec/ec_cvt.c8
-rw-r--r--src/lib/libcrypto/ec/ec_lcl.h5
-rw-r--r--src/lib/libcrypto/ec/ec_lib.c55
-rw-r--r--src/lib/libcrypto/ec/eck_prn.c6
6 files changed, 51 insertions, 41 deletions
diff --git a/src/lib/libcrypto/ec/ec.h b/src/lib/libcrypto/ec/ec.h
index a95d99f6a9..a6ae3e3ac3 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.18 2019/09/29 10:09:09 tb Exp $ */ 1/* $OpenBSD: ec.h,v 1.19 2021/04/20 17:04:13 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 */
@@ -280,6 +280,12 @@ unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x);
280size_t EC_GROUP_get_seed_len(const EC_GROUP *); 280size_t EC_GROUP_get_seed_len(const EC_GROUP *);
281size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); 281size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len);
282 282
283#if defined(LIBRESSL_INTERNAL)
284int EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a,
285 const BIGNUM *b, BN_CTX *ctx);
286int EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b,
287 BN_CTX *ctx);
288#else
283/** Sets the parameter of a ec over GFp defined by y^2 = x^3 + a*x + b 289/** Sets the parameter of a ec over GFp defined by y^2 = x^3 + a*x + b
284 * \param group EC_GROUP object 290 * \param group EC_GROUP object
285 * \param p BIGNUM with the prime number 291 * \param p BIGNUM with the prime number
@@ -321,6 +327,8 @@ int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, c
321 */ 327 */
322int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx); 328int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx);
323#endif 329#endif
330#endif
331
324/** Returns the number of bits needed to represent a field element 332/** Returns the number of bits needed to represent a field element
325 * \param group EC_GROUP object 333 * \param group EC_GROUP object
326 * \return number of bits needed to represent a field element 334 * \return number of bits needed to represent a field element
diff --git a/src/lib/libcrypto/ec/ec_asn1.c b/src/lib/libcrypto/ec/ec_asn1.c
index f69dd023de..65bb007cae 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.31 2018/09/01 16:23:15 tb Exp $ */ 1/* $OpenBSD: ec_asn1.c,v 1.32 2021/04/20 17:04:13 tb Exp $ */
2/* 2/*
3 * Written by Nils Larsch for the OpenSSL project. 3 * Written by Nils Larsch for the OpenSSL project.
4 */ 4 */
@@ -709,7 +709,7 @@ ec_asn1_group2fieldid(const EC_GROUP * group, X9_62_FIELDID * field)
709 goto err; 709 goto err;
710 } 710 }
711 /* the parameters are specified by the prime number p */ 711 /* the parameters are specified by the prime number p */
712 if (!EC_GROUP_get_curve_GFp(group, tmp, NULL, NULL, NULL)) { 712 if (!EC_GROUP_get_curve(group, tmp, NULL, NULL, NULL)) {
713 ECerror(ERR_R_EC_LIB); 713 ECerror(ERR_R_EC_LIB);
714 goto err; 714 goto err;
715 } 715 }
@@ -819,14 +819,14 @@ ec_asn1_group2curve(const EC_GROUP * group, X9_62_CURVE * curve)
819 819
820 /* get a and b */ 820 /* get a and b */
821 if (nid == NID_X9_62_prime_field) { 821 if (nid == NID_X9_62_prime_field) {
822 if (!EC_GROUP_get_curve_GFp(group, NULL, tmp_1, tmp_2, NULL)) { 822 if (!EC_GROUP_get_curve(group, NULL, tmp_1, tmp_2, NULL)) {
823 ECerror(ERR_R_EC_LIB); 823 ECerror(ERR_R_EC_LIB);
824 goto err; 824 goto err;
825 } 825 }
826 } 826 }
827#ifndef OPENSSL_NO_EC2M 827#ifndef OPENSSL_NO_EC2M
828 else { /* nid == NID_X9_62_characteristic_two_field */ 828 else { /* nid == NID_X9_62_characteristic_two_field */
829 if (!EC_GROUP_get_curve_GF2m(group, NULL, tmp_1, tmp_2, NULL)) { 829 if (!EC_GROUP_get_curve(group, NULL, tmp_1, tmp_2, NULL)) {
830 ECerror(ERR_R_EC_LIB); 830 ECerror(ERR_R_EC_LIB);
831 goto err; 831 goto err;
832 } 832 }
diff --git a/src/lib/libcrypto/ec/ec_cvt.c b/src/lib/libcrypto/ec/ec_cvt.c
index a0982064b8..05c7dd1bf1 100644
--- a/src/lib/libcrypto/ec/ec_cvt.c
+++ b/src/lib/libcrypto/ec/ec_cvt.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_cvt.c,v 1.6 2014/07/10 22:45:57 jsing Exp $ */ 1/* $OpenBSD: ec_cvt.c,v 1.7 2021/04/20 17:04:13 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 */
@@ -112,7 +112,7 @@ EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b,
112 if (ret == NULL) 112 if (ret == NULL)
113 return NULL; 113 return NULL;
114 114
115 if (!EC_GROUP_set_curve_GFp(ret, p, a, b, ctx)) { 115 if (!EC_GROUP_set_curve(ret, p, a, b, ctx)) {
116 unsigned long err; 116 unsigned long err;
117 117
118 err = ERR_peek_last_error(); 118 err = ERR_peek_last_error();
@@ -136,7 +136,7 @@ EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b,
136 if (ret == NULL) 136 if (ret == NULL)
137 return NULL; 137 return NULL;
138 138
139 if (!EC_GROUP_set_curve_GFp(ret, p, a, b, ctx)) { 139 if (!EC_GROUP_set_curve(ret, p, a, b, ctx)) {
140 EC_GROUP_clear_free(ret); 140 EC_GROUP_clear_free(ret);
141 return NULL; 141 return NULL;
142 } 142 }
@@ -158,7 +158,7 @@ EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b,
158 if (ret == NULL) 158 if (ret == NULL)
159 return NULL; 159 return NULL;
160 160
161 if (!EC_GROUP_set_curve_GF2m(ret, p, a, b, ctx)) { 161 if (!EC_GROUP_set_curve(ret, p, a, b, ctx)) {
162 EC_GROUP_clear_free(ret); 162 EC_GROUP_clear_free(ret);
163 return NULL; 163 return NULL;
164 } 164 }
diff --git a/src/lib/libcrypto/ec/ec_lcl.h b/src/lib/libcrypto/ec/ec_lcl.h
index 8948e51d69..f689428852 100644
--- a/src/lib/libcrypto/ec/ec_lcl.h
+++ b/src/lib/libcrypto/ec/ec_lcl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec_lcl.h,v 1.13 2019/01/19 01:12:48 tb Exp $ */ 1/* $OpenBSD: ec_lcl.h,v 1.14 2021/04/20 17:04:13 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 */
@@ -105,8 +105,7 @@ struct ec_method_st {
105 void (*group_clear_finish)(EC_GROUP *); 105 void (*group_clear_finish)(EC_GROUP *);
106 int (*group_copy)(EC_GROUP *, const EC_GROUP *); 106 int (*group_copy)(EC_GROUP *, const EC_GROUP *);
107 107
108 /* used by EC_GROUP_set_curve_GFp, EC_GROUP_get_curve_GFp, */ 108 /* used by EC_GROUP_{get,set}_curve */
109 /* EC_GROUP_set_curve_GF2m, and EC_GROUP_get_curve_GF2m: */
110 int (*group_set_curve)(EC_GROUP *, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *); 109 int (*group_set_curve)(EC_GROUP *, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *);
111 int (*group_get_curve)(const EC_GROUP *, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *); 110 int (*group_get_curve)(const EC_GROUP *, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *);
112 111
diff --git a/src/lib/libcrypto/ec/ec_lib.c b/src/lib/libcrypto/ec/ec_lib.c
index 3442c7a324..67db821ec4 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.33 2020/12/04 08:55:30 tb Exp $ */ 1/* $OpenBSD: ec_lib.c,v 1.34 2021/04/20 17:04:13 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 */
@@ -488,10 +488,9 @@ EC_GROUP_get_seed_len(const EC_GROUP * group)
488 return group->seed_len; 488 return group->seed_len;
489} 489}
490 490
491 491int
492int 492EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a,
493EC_GROUP_set_curve_GFp(EC_GROUP * group, const BIGNUM * p, const BIGNUM * a, 493 const BIGNUM *b, BN_CTX *ctx)
494 const BIGNUM * b, BN_CTX * ctx)
495{ 494{
496 if (group->meth->group_set_curve == 0) { 495 if (group->meth->group_set_curve == 0) {
497 ECerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); 496 ECerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
@@ -500,10 +499,9 @@ EC_GROUP_set_curve_GFp(EC_GROUP * group, const BIGNUM * p, const BIGNUM * a,
500 return group->meth->group_set_curve(group, p, a, b, ctx); 499 return group->meth->group_set_curve(group, p, a, b, ctx);
501} 500}
502 501
503 502int
504int 503EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b,
505EC_GROUP_get_curve_GFp(const EC_GROUP * group, BIGNUM * p, BIGNUM * a, 504 BN_CTX *ctx)
506 BIGNUM * b, BN_CTX * ctx)
507{ 505{
508 if (group->meth->group_get_curve == 0) { 506 if (group->meth->group_get_curve == 0) {
509 ECerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); 507 ECerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
@@ -512,28 +510,33 @@ EC_GROUP_get_curve_GFp(const EC_GROUP * group, BIGNUM * p, BIGNUM * a,
512 return group->meth->group_get_curve(group, p, a, b, ctx); 510 return group->meth->group_get_curve(group, p, a, b, ctx);
513} 511}
514 512
515#ifndef OPENSSL_NO_EC2M 513int
516int 514EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a,
517EC_GROUP_set_curve_GF2m(EC_GROUP * group, const BIGNUM * p, const BIGNUM * a, 515 const BIGNUM *b, BN_CTX *ctx)
518 const BIGNUM * b, BN_CTX * ctx)
519{ 516{
520 if (group->meth->group_set_curve == 0) { 517 return EC_GROUP_set_curve(group, p, a, b, ctx);
521 ECerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
522 return 0;
523 }
524 return group->meth->group_set_curve(group, p, a, b, ctx);
525} 518}
526 519
520int
521EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b,
522 BN_CTX *ctx)
523{
524 return EC_GROUP_get_curve(group, p, a, b, ctx);
525}
527 526
528int 527#ifndef OPENSSL_NO_EC2M
529EC_GROUP_get_curve_GF2m(const EC_GROUP * group, BIGNUM * p, BIGNUM * a, 528int
530 BIGNUM * b, BN_CTX * ctx) 529EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a,
530 const BIGNUM *b, BN_CTX *ctx)
531{ 531{
532 if (group->meth->group_get_curve == 0) { 532 return EC_GROUP_set_curve(group, p, a, b, ctx);
533 ECerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); 533}
534 return 0; 534
535 } 535int
536 return group->meth->group_get_curve(group, p, a, b, ctx); 536EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a,
537 BIGNUM *b, BN_CTX *ctx)
538{
539 return EC_GROUP_get_curve(group, p, a, b, ctx);
537} 540}
538#endif 541#endif
539 542
diff --git a/src/lib/libcrypto/ec/eck_prn.c b/src/lib/libcrypto/ec/eck_prn.c
index be57d875e3..b17908d7fa 100644
--- a/src/lib/libcrypto/ec/eck_prn.c
+++ b/src/lib/libcrypto/ec/eck_prn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: eck_prn.c,v 1.15 2018/07/15 16:27:39 tb Exp $ */ 1/* $OpenBSD: eck_prn.c,v 1.16 2021/04/20 17:04:13 tb Exp $ */
2/* 2/*
3 * Written by Nils Larsch for the OpenSSL project. 3 * Written by Nils Larsch for the OpenSSL project.
4 */ 4 */
@@ -216,14 +216,14 @@ ECPKParameters_print(BIO * bp, const EC_GROUP * x, int off)
216 } 216 }
217#ifndef OPENSSL_NO_EC2M 217#ifndef OPENSSL_NO_EC2M
218 if (is_char_two) { 218 if (is_char_two) {
219 if (!EC_GROUP_get_curve_GF2m(x, p, a, b, ctx)) { 219 if (!EC_GROUP_get_curve(x, p, a, b, ctx)) {
220 reason = ERR_R_EC_LIB; 220 reason = ERR_R_EC_LIB;
221 goto err; 221 goto err;
222 } 222 }
223 } else /* prime field */ 223 } else /* prime field */
224#endif 224#endif
225 { 225 {
226 if (!EC_GROUP_get_curve_GFp(x, p, a, b, ctx)) { 226 if (!EC_GROUP_get_curve(x, p, a, b, ctx)) {
227 reason = ERR_R_EC_LIB; 227 reason = ERR_R_EC_LIB;
228 goto err; 228 goto err;
229 } 229 }