diff options
Diffstat (limited to 'src/lib/libcrypto/ec/ecp_mont.c')
| -rw-r--r-- | src/lib/libcrypto/ec/ecp_mont.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/src/lib/libcrypto/ec/ecp_mont.c b/src/lib/libcrypto/ec/ecp_mont.c index 915cf15f72..b113855603 100644 --- a/src/lib/libcrypto/ec/ecp_mont.c +++ b/src/lib/libcrypto/ec/ecp_mont.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ecp_mont.c,v 1.28 2023/03/27 10:25:02 tb Exp $ */ | 1 | /* $OpenBSD: ecp_mont.c,v 1.29 2023/04/11 18:58:20 jsing 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 | */ |
| @@ -127,18 +127,12 @@ static int | |||
| 127 | ec_GFp_mont_group_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, | 127 | ec_GFp_mont_group_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, |
| 128 | const BIGNUM *b, BN_CTX *ctx) | 128 | const BIGNUM *b, BN_CTX *ctx) |
| 129 | { | 129 | { |
| 130 | BN_CTX *new_ctx = NULL; | ||
| 131 | BN_MONT_CTX *mont = NULL; | 130 | BN_MONT_CTX *mont = NULL; |
| 132 | BIGNUM *one = NULL; | 131 | BIGNUM *one = NULL; |
| 133 | int ret = 0; | 132 | int ret = 0; |
| 134 | 133 | ||
| 135 | ec_GFp_mont_group_clear(group); | 134 | ec_GFp_mont_group_clear(group); |
| 136 | 135 | ||
| 137 | if (ctx == NULL) { | ||
| 138 | ctx = new_ctx = BN_CTX_new(); | ||
| 139 | if (ctx == NULL) | ||
| 140 | return 0; | ||
| 141 | } | ||
| 142 | mont = BN_MONT_CTX_new(); | 136 | mont = BN_MONT_CTX_new(); |
| 143 | if (mont == NULL) | 137 | if (mont == NULL) |
| 144 | goto err; | 138 | goto err; |
| @@ -158,14 +152,13 @@ ec_GFp_mont_group_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, | |||
| 158 | one = NULL; | 152 | one = NULL; |
| 159 | 153 | ||
| 160 | ret = ec_GFp_simple_group_set_curve(group, p, a, b, ctx); | 154 | ret = ec_GFp_simple_group_set_curve(group, p, a, b, ctx); |
| 161 | |||
| 162 | if (!ret) | 155 | if (!ret) |
| 163 | ec_GFp_mont_group_clear(group); | 156 | ec_GFp_mont_group_clear(group); |
| 164 | 157 | ||
| 165 | err: | 158 | err: |
| 166 | BN_CTX_free(new_ctx); | ||
| 167 | BN_MONT_CTX_free(mont); | 159 | BN_MONT_CTX_free(mont); |
| 168 | BN_free(one); | 160 | BN_free(one); |
| 161 | |||
| 169 | return ret; | 162 | return ret; |
| 170 | } | 163 | } |
| 171 | 164 | ||
| @@ -222,6 +215,7 @@ ec_GFp_mont_field_set_to_one(const EC_GROUP *group, BIGNUM *r, BN_CTX *ctx) | |||
| 222 | } | 215 | } |
| 223 | if (!bn_copy(r, group->mont_one)) | 216 | if (!bn_copy(r, group->mont_one)) |
| 224 | return 0; | 217 | return 0; |
| 218 | |||
| 225 | return 1; | 219 | return 1; |
| 226 | } | 220 | } |
| 227 | 221 | ||
