diff options
Diffstat (limited to 'src/lib/libcrypto/ec/ec_oct.c')
-rw-r--r-- | src/lib/libcrypto/ec/ec_oct.c | 66 |
1 files changed, 6 insertions, 60 deletions
diff --git a/src/lib/libcrypto/ec/ec_oct.c b/src/lib/libcrypto/ec/ec_oct.c index 0e651991fd..ef17ec59a5 100644 --- a/src/lib/libcrypto/ec/ec_oct.c +++ b/src/lib/libcrypto/ec/ec_oct.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ec_oct.c,v 1.9 2022/11/26 16:08:52 tb Exp $ */ | 1 | /* $OpenBSD: ec_oct.c,v 1.10 2023/03/08 04:50:27 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 | */ |
@@ -74,8 +74,7 @@ int | |||
74 | EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *point, | 74 | EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *point, |
75 | const BIGNUM *x, int y_bit, BN_CTX *ctx) | 75 | const BIGNUM *x, int y_bit, BN_CTX *ctx) |
76 | { | 76 | { |
77 | if (group->meth->point_set_compressed_coordinates == NULL && | 77 | if (group->meth->point_set_compressed_coordinates == NULL) { |
78 | !(group->meth->flags & EC_FLAGS_DEFAULT_OCT)) { | ||
79 | ECerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 78 | ECerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); |
80 | return 0; | 79 | return 0; |
81 | } | 80 | } |
@@ -83,29 +82,8 @@ EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *point, | |||
83 | ECerror(EC_R_INCOMPATIBLE_OBJECTS); | 82 | ECerror(EC_R_INCOMPATIBLE_OBJECTS); |
84 | return 0; | 83 | return 0; |
85 | } | 84 | } |
86 | if (group->meth->flags & EC_FLAGS_DEFAULT_OCT) { | 85 | return group->meth->point_set_compressed_coordinates(group, point, |
87 | if (group->meth->field_type == NID_X9_62_prime_field) | 86 | x, y_bit, ctx); |
88 | return ec_GFp_simple_set_compressed_coordinates( | ||
89 | group, point, x, y_bit, ctx); | ||
90 | else | ||
91 | #ifdef OPENSSL_NO_EC2M | ||
92 | { | ||
93 | ECerror(EC_R_GF2M_NOT_SUPPORTED); | ||
94 | return 0; | ||
95 | } | ||
96 | #else | ||
97 | return ec_GF2m_simple_set_compressed_coordinates( | ||
98 | group, point, x, y_bit, ctx); | ||
99 | #endif | ||
100 | } | ||
101 | if (!group->meth->point_set_compressed_coordinates(group, point, x, | ||
102 | y_bit, ctx)) | ||
103 | return 0; | ||
104 | if (EC_POINT_is_on_curve(group, point, ctx) <= 0) { | ||
105 | ECerror(EC_R_POINT_IS_NOT_ON_CURVE); | ||
106 | return 0; | ||
107 | } | ||
108 | return 1; | ||
109 | } | 87 | } |
110 | 88 | ||
111 | int | 89 | int |
@@ -129,8 +107,7 @@ EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *point, | |||
129 | point_conversion_form_t form, | 107 | point_conversion_form_t form, |
130 | unsigned char *buf, size_t len, BN_CTX *ctx) | 108 | unsigned char *buf, size_t len, BN_CTX *ctx) |
131 | { | 109 | { |
132 | if (group->meth->point2oct == 0 | 110 | if (group->meth->point2oct == NULL) { |
133 | && !(group->meth->flags & EC_FLAGS_DEFAULT_OCT)) { | ||
134 | ECerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 111 | ECerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); |
135 | return 0; | 112 | return 0; |
136 | } | 113 | } |
@@ -138,21 +115,6 @@ EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *point, | |||
138 | ECerror(EC_R_INCOMPATIBLE_OBJECTS); | 115 | ECerror(EC_R_INCOMPATIBLE_OBJECTS); |
139 | return 0; | 116 | return 0; |
140 | } | 117 | } |
141 | if (group->meth->flags & EC_FLAGS_DEFAULT_OCT) { | ||
142 | if (group->meth->field_type == NID_X9_62_prime_field) | ||
143 | return ec_GFp_simple_point2oct(group, point, | ||
144 | form, buf, len, ctx); | ||
145 | else | ||
146 | #ifdef OPENSSL_NO_EC2M | ||
147 | { | ||
148 | ECerror(EC_R_GF2M_NOT_SUPPORTED); | ||
149 | return 0; | ||
150 | } | ||
151 | #else | ||
152 | return ec_GF2m_simple_point2oct(group, point, | ||
153 | form, buf, len, ctx); | ||
154 | #endif | ||
155 | } | ||
156 | return group->meth->point2oct(group, point, form, buf, len, ctx); | 118 | return group->meth->point2oct(group, point, form, buf, len, ctx); |
157 | } | 119 | } |
158 | 120 | ||
@@ -160,8 +122,7 @@ int | |||
160 | EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *point, | 122 | EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *point, |
161 | const unsigned char *buf, size_t len, BN_CTX *ctx) | 123 | const unsigned char *buf, size_t len, BN_CTX *ctx) |
162 | { | 124 | { |
163 | if (group->meth->oct2point == 0 && | 125 | if (group->meth->oct2point == NULL) { |
164 | !(group->meth->flags & EC_FLAGS_DEFAULT_OCT)) { | ||
165 | ECerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 126 | ECerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); |
166 | return 0; | 127 | return 0; |
167 | } | 128 | } |
@@ -169,20 +130,5 @@ EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *point, | |||
169 | ECerror(EC_R_INCOMPATIBLE_OBJECTS); | 130 | ECerror(EC_R_INCOMPATIBLE_OBJECTS); |
170 | return 0; | 131 | return 0; |
171 | } | 132 | } |
172 | if (group->meth->flags & EC_FLAGS_DEFAULT_OCT) { | ||
173 | if (group->meth->field_type == NID_X9_62_prime_field) | ||
174 | return ec_GFp_simple_oct2point(group, point, | ||
175 | buf, len, ctx); | ||
176 | else | ||
177 | #ifdef OPENSSL_NO_EC2M | ||
178 | { | ||
179 | ECerror(EC_R_GF2M_NOT_SUPPORTED); | ||
180 | return 0; | ||
181 | } | ||
182 | #else | ||
183 | return ec_GF2m_simple_oct2point(group, point, | ||
184 | buf, len, ctx); | ||
185 | #endif | ||
186 | } | ||
187 | return group->meth->oct2point(group, point, buf, len, ctx); | 133 | return group->meth->oct2point(group, point, buf, len, ctx); |
188 | } | 134 | } |