diff options
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 | } |
