summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2023-07-06 15:18:02 +0000
committertb <>2023-07-06 15:18:02 +0000
commit23ee7c3d87304cc72400a5248cddefd9fe4d8e65 (patch)
treecf05ccbb8ac4b837239da7956e96212dbbb2a0b4 /src
parentabd3f470c9f4289846a45fced437cafde40ac738 (diff)
downloadopenbsd-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.c42
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;
317err: 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}