diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/ec/ec_lib.c | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/src/lib/libcrypto/ec/ec_lib.c b/src/lib/libcrypto/ec/ec_lib.c index 0dcee7b278..423c5ac7e2 100644 --- a/src/lib/libcrypto/ec/ec_lib.c +++ b/src/lib/libcrypto/ec/ec_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ec_lib.c,v 1.74 2024/10/25 00:37:51 tb Exp $ */ | 1 | /* $OpenBSD: ec_lib.c,v 1.75 2024/11/02 15:50:50 tb 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 | */ |
| @@ -1032,6 +1032,45 @@ EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, const EC_POINT *point | |||
| 1032 | LCRYPTO_ALIAS(EC_POINT_get_affine_coordinates_GFp); | 1032 | LCRYPTO_ALIAS(EC_POINT_get_affine_coordinates_GFp); |
| 1033 | 1033 | ||
| 1034 | int | 1034 | int |
| 1035 | EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *point, | ||
| 1036 | const BIGNUM *x, int y_bit, BN_CTX *ctx_in) | ||
| 1037 | { | ||
| 1038 | BN_CTX *ctx; | ||
| 1039 | int ret = 0; | ||
| 1040 | |||
| 1041 | if ((ctx = ctx_in) == NULL) | ||
| 1042 | ctx = BN_CTX_new(); | ||
| 1043 | if (ctx == NULL) | ||
| 1044 | goto err; | ||
| 1045 | |||
| 1046 | if (group->meth->point_set_compressed_coordinates == NULL) { | ||
| 1047 | ECerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | ||
| 1048 | goto err; | ||
| 1049 | } | ||
| 1050 | if (group->meth != point->meth) { | ||
| 1051 | ECerror(EC_R_INCOMPATIBLE_OBJECTS); | ||
| 1052 | goto err; | ||
| 1053 | } | ||
| 1054 | ret = group->meth->point_set_compressed_coordinates(group, point, | ||
| 1055 | x, y_bit, ctx); | ||
| 1056 | |||
| 1057 | err: | ||
| 1058 | if (ctx != ctx_in) | ||
| 1059 | BN_CTX_free(ctx); | ||
| 1060 | |||
| 1061 | return ret; | ||
| 1062 | } | ||
| 1063 | LCRYPTO_ALIAS(EC_POINT_set_compressed_coordinates); | ||
| 1064 | |||
| 1065 | int | ||
| 1066 | EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *point, | ||
| 1067 | const BIGNUM *x, int y_bit, BN_CTX *ctx) | ||
| 1068 | { | ||
| 1069 | return EC_POINT_set_compressed_coordinates(group, point, x, y_bit, ctx); | ||
| 1070 | } | ||
| 1071 | LCRYPTO_ALIAS(EC_POINT_set_compressed_coordinates_GFp); | ||
| 1072 | |||
| 1073 | int | ||
| 1035 | EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, | 1074 | EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, |
| 1036 | const EC_POINT *b, BN_CTX *ctx_in) | 1075 | const EC_POINT *b, BN_CTX *ctx_in) |
| 1037 | { | 1076 | { |
