summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2024-10-25 18:06:42 +0000
committertb <>2024-10-25 18:06:42 +0000
commitc4eb8d5a79a0ea768ecf9ab0dc14b49504631d35 (patch)
treef937630dc93ce92fa8f5dc3accaa9d44dcd5d870 /src
parentfdbd7e1f9e402dcad866c4b90773f2e4118b6b26 (diff)
downloadopenbsd-c4eb8d5a79a0ea768ecf9ab0dc14b49504631d35.tar.gz
openbsd-c4eb8d5a79a0ea768ecf9ab0dc14b49504631d35.tar.bz2
openbsd-c4eb8d5a79a0ea768ecf9ab0dc14b49504631d35.zip
Cosmetic tweak to make point2oct and oct2point more symmetric
This can't be perfectly symmetric, but the logic is now roughly the same in both these functions.
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/ec/ecp_oct.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/lib/libcrypto/ec/ecp_oct.c b/src/lib/libcrypto/ec/ecp_oct.c
index 0d9a73c5b8..ce63bfadc4 100644
--- a/src/lib/libcrypto/ec/ecp_oct.c
+++ b/src/lib/libcrypto/ec/ecp_oct.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ecp_oct.c,v 1.28 2024/10/24 05:57:25 tb Exp $ */ 1/* $OpenBSD: ecp_oct.c,v 1.29 2024/10/25 18:06:42 tb Exp $ */
2/* Includes code written by Lenka Fibikova <fibikova@exp-math.uni-essen.de> 2/* Includes code written by Lenka Fibikova <fibikova@exp-math.uni-essen.de>
3 * for the OpenSSL project. 3 * for the OpenSSL project.
4 * Includes code written by Bodo Moeller for the OpenSSL project. 4 * Includes code written by Bodo Moeller for the OpenSSL project.
@@ -434,18 +434,22 @@ ec_GFp_simple_oct2point(const EC_GROUP *group, EC_POINT *point,
434 BN_CTX_start(ctx); 434 BN_CTX_start(ctx);
435 CBS_init(&cbs, buf, len); 435 CBS_init(&cbs, buf, len);
436 436
437 if ((x = BN_CTX_get(ctx)) == NULL)
438 goto err;
439 if ((y = BN_CTX_get(ctx)) == NULL)
440 goto err;
441
442 if (!ec_oct_get_leading_octet_cbs(&cbs, &form, &ybit)) 437 if (!ec_oct_get_leading_octet_cbs(&cbs, &form, &ybit))
443 goto err; 438 goto err;
444 439
445 if (form == EC_OCT_POINT_AT_INFINITY) { 440 if (form == EC_OCT_POINT_AT_INFINITY) {
446 if (!EC_POINT_set_to_infinity(group, point)) 441 if (!EC_POINT_set_to_infinity(group, point))
447 goto err; 442 goto err;
448 } else if (form == EC_OCT_POINT_COMPRESSED) { 443
444 goto done;
445 }
446
447 if ((x = BN_CTX_get(ctx)) == NULL)
448 goto err;
449 if ((y = BN_CTX_get(ctx)) == NULL)
450 goto err;
451
452 if (form == EC_OCT_POINT_COMPRESSED) {
449 if (!ec_oct_get_field_element_cbs(&cbs, group, x)) 453 if (!ec_oct_get_field_element_cbs(&cbs, group, x))
450 goto err; 454 goto err;
451 if (!EC_POINT_set_compressed_coordinates(group, point, x, ybit, ctx)) 455 if (!EC_POINT_set_compressed_coordinates(group, point, x, ybit, ctx))
@@ -461,6 +465,7 @@ ec_GFp_simple_oct2point(const EC_GROUP *group, EC_POINT *point,
461 goto err; 465 goto err;
462 } 466 }
463 467
468 done:
464 if (CBS_len(&cbs) > 0) { 469 if (CBS_len(&cbs) > 0) {
465 ECerror(EC_R_INVALID_ENCODING); 470 ECerror(EC_R_INVALID_ENCODING);
466 goto err; 471 goto err;