diff options
author | tb <> | 2023-07-06 15:18:02 +0000 |
---|---|---|
committer | tb <> | 2023-07-06 15:18:02 +0000 |
commit | 23ee7c3d87304cc72400a5248cddefd9fe4d8e65 (patch) | |
tree | cf05ccbb8ac4b837239da7956e96212dbbb2a0b4 /src | |
parent | abd3f470c9f4289846a45fced437cafde40ac738 (diff) | |
download | openbsd-23ee7c3d87304cc72400a5248cddefd9fe4d8e65.tar.gz openbsd-23ee7c3d87304cc72400a5248cddefd9fe4d8e65.tar.bz2 openbsd-23ee7c3d87304cc72400a5248cddefd9fe4d8e65.zip |
Convert ecpk_print_explicit_parameters() to bn_printf()
This eliminates a few stupid dances the horrible ASN1_bn_print() API
required.
ok jsing
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libcrypto/ec/eck_prn.c | 42 |
1 files changed, 8 insertions, 34 deletions
diff --git a/src/lib/libcrypto/ec/eck_prn.c b/src/lib/libcrypto/ec/eck_prn.c index 4b53ab3f66..f65b74518b 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.26 2023/07/03 09:37:30 tb Exp $ */ | 1 | /* $OpenBSD: eck_prn.c,v 1.27 2023/07/06 15:18:02 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Written by Nils Larsch for the OpenSSL project. | 3 | * Written by Nils Larsch for the OpenSSL project. |
4 | */ | 4 | */ |
@@ -207,11 +207,8 @@ ecpk_print_explicit_parameters(BIO *bp, const EC_GROUP *group, int off) | |||
207 | BIGNUM *gen = NULL; | 207 | BIGNUM *gen = NULL; |
208 | const EC_POINT *generator; | 208 | const EC_POINT *generator; |
209 | const char *conversion_form; | 209 | const char *conversion_form; |
210 | char *conversion = NULL; | ||
211 | const unsigned char *seed; | 210 | const unsigned char *seed; |
212 | size_t seed_len; | 211 | size_t seed_len; |
213 | unsigned char *buffer = NULL; | ||
214 | size_t buf_len, i; | ||
215 | point_conversion_form_t form; | 212 | point_conversion_form_t form; |
216 | int nid; | 213 | int nid; |
217 | int ret = 0; | 214 | int ret = 0; |
@@ -257,23 +254,6 @@ ecpk_print_explicit_parameters(BIO *bp, const EC_GROUP *group, int off) | |||
257 | goto err; | 254 | goto err; |
258 | } | 255 | } |
259 | 256 | ||
260 | buf_len = (size_t) BN_num_bytes(p); | ||
261 | if (buf_len < (i = (size_t) BN_num_bytes(a))) | ||
262 | buf_len = i; | ||
263 | if (buf_len < (i = (size_t) BN_num_bytes(b))) | ||
264 | buf_len = i; | ||
265 | if (buf_len < (i = (size_t) BN_num_bytes(gen))) | ||
266 | buf_len = i; | ||
267 | if (buf_len < (i = (size_t) BN_num_bytes(order))) | ||
268 | buf_len = i; | ||
269 | if (buf_len < (i = (size_t) BN_num_bytes(cofactor))) | ||
270 | buf_len = i; | ||
271 | |||
272 | buf_len += 10; | ||
273 | if ((buffer = calloc(1, buf_len)) == NULL) { | ||
274 | ECerror(ERR_R_MALLOC_FAILURE); | ||
275 | goto err; | ||
276 | } | ||
277 | if (!BIO_indent(bp, off, 128)) | 257 | if (!BIO_indent(bp, off, 128)) |
278 | goto err; | 258 | goto err; |
279 | 259 | ||
@@ -281,11 +261,11 @@ ecpk_print_explicit_parameters(BIO *bp, const EC_GROUP *group, int off) | |||
281 | if (BIO_printf(bp, "Field Type: %s\n", OBJ_nid2sn(nid)) <= 0) | 261 | if (BIO_printf(bp, "Field Type: %s\n", OBJ_nid2sn(nid)) <= 0) |
282 | goto err; | 262 | goto err; |
283 | 263 | ||
284 | if (!ASN1_bn_print(bp, "Prime:", p, buffer, off)) | 264 | if (!bn_printf(bp, p, off, "Prime:")) |
285 | goto err; | 265 | goto err; |
286 | if (!ASN1_bn_print(bp, "A: ", a, buffer, off)) | 266 | if (!bn_printf(bp, a, off, "A: ")) |
287 | goto err; | 267 | goto err; |
288 | if (!ASN1_bn_print(bp, "B: ", b, buffer, off)) | 268 | if (!bn_printf(bp, b, off, "B: ")) |
289 | goto err; | 269 | goto err; |
290 | 270 | ||
291 | if (form == POINT_CONVERSION_COMPRESSED) | 271 | if (form == POINT_CONVERSION_COMPRESSED) |
@@ -296,16 +276,12 @@ ecpk_print_explicit_parameters(BIO *bp, const EC_GROUP *group, int off) | |||
296 | conversion_form = "hybrid"; | 276 | conversion_form = "hybrid"; |
297 | else | 277 | else |
298 | conversion_form = "unknown"; | 278 | conversion_form = "unknown"; |
299 | if (asprintf(&conversion, "Generator (%s):", conversion_form) == -1) { | 279 | if (!bn_printf(bp, gen, off, "Generator (%s):", conversion_form)) |
300 | conversion = NULL; | ||
301 | goto err; | ||
302 | } | ||
303 | if (!ASN1_bn_print(bp, conversion, gen, buffer, off)) | ||
304 | goto err; | 280 | goto err; |
305 | 281 | ||
306 | if (!ASN1_bn_print(bp, "Order: ", order, buffer, off)) | 282 | if (!bn_printf(bp, order, off, "Order: ")) |
307 | goto err; | 283 | goto err; |
308 | if (!ASN1_bn_print(bp, "Cofactor: ", cofactor, buffer, off)) | 284 | if (!bn_printf(bp, cofactor, off, "Cofactor: ")) |
309 | goto err; | 285 | goto err; |
310 | if ((seed = EC_GROUP_get0_seed(group)) != NULL) { | 286 | if ((seed = EC_GROUP_get0_seed(group)) != NULL) { |
311 | seed_len = EC_GROUP_get_seed_len(group); | 287 | seed_len = EC_GROUP_get_seed_len(group); |
@@ -314,11 +290,9 @@ ecpk_print_explicit_parameters(BIO *bp, const EC_GROUP *group, int off) | |||
314 | } | 290 | } |
315 | 291 | ||
316 | ret = 1; | 292 | ret = 1; |
317 | err: | 293 | err: |
318 | BN_CTX_end(ctx); | 294 | BN_CTX_end(ctx); |
319 | BN_CTX_free(ctx); | 295 | BN_CTX_free(ctx); |
320 | free(buffer); | ||
321 | free(conversion); | ||
322 | 296 | ||
323 | return ret; | 297 | return ret; |
324 | } | 298 | } |