diff options
Diffstat (limited to 'src/lib/libcrypto/ec/ecp_mont.c')
| -rw-r--r-- | src/lib/libcrypto/ec/ecp_mont.c | 57 |
1 files changed, 20 insertions, 37 deletions
diff --git a/src/lib/libcrypto/ec/ecp_mont.c b/src/lib/libcrypto/ec/ecp_mont.c index ffbce81d4c..af8014ed38 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.8 2014/06/12 15:49:29 deraadt Exp $ */ | 1 | /* $OpenBSD: ecp_mont.c,v 1.9 2014/07/12 16:03:37 miod 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 | */ |
| @@ -128,14 +128,10 @@ ec_GFp_mont_group_init(EC_GROUP * group) | |||
| 128 | void | 128 | void |
| 129 | ec_GFp_mont_group_finish(EC_GROUP * group) | 129 | ec_GFp_mont_group_finish(EC_GROUP * group) |
| 130 | { | 130 | { |
| 131 | if (group->field_data1 != NULL) { | 131 | BN_MONT_CTX_free(group->field_data1); |
| 132 | BN_MONT_CTX_free(group->field_data1); | 132 | group->field_data1 = NULL; |
| 133 | group->field_data1 = NULL; | 133 | BN_free(group->field_data2); |
| 134 | } | 134 | group->field_data2 = NULL; |
| 135 | if (group->field_data2 != NULL) { | ||
| 136 | BN_free(group->field_data2); | ||
| 137 | group->field_data2 = NULL; | ||
| 138 | } | ||
| 139 | ec_GFp_simple_group_finish(group); | 135 | ec_GFp_simple_group_finish(group); |
| 140 | } | 136 | } |
| 141 | 137 | ||
| @@ -143,14 +139,10 @@ ec_GFp_mont_group_finish(EC_GROUP * group) | |||
| 143 | void | 139 | void |
| 144 | ec_GFp_mont_group_clear_finish(EC_GROUP * group) | 140 | ec_GFp_mont_group_clear_finish(EC_GROUP * group) |
| 145 | { | 141 | { |
| 146 | if (group->field_data1 != NULL) { | 142 | BN_MONT_CTX_free(group->field_data1); |
| 147 | BN_MONT_CTX_free(group->field_data1); | 143 | group->field_data1 = NULL; |
| 148 | group->field_data1 = NULL; | 144 | BN_clear_free(group->field_data2); |
| 149 | } | 145 | group->field_data2 = NULL; |
| 150 | if (group->field_data2 != NULL) { | ||
| 151 | BN_clear_free(group->field_data2); | ||
| 152 | group->field_data2 = NULL; | ||
| 153 | } | ||
| 154 | ec_GFp_simple_group_clear_finish(group); | 146 | ec_GFp_simple_group_clear_finish(group); |
| 155 | } | 147 | } |
| 156 | 148 | ||
| @@ -158,14 +150,11 @@ ec_GFp_mont_group_clear_finish(EC_GROUP * group) | |||
| 158 | int | 150 | int |
| 159 | ec_GFp_mont_group_copy(EC_GROUP * dest, const EC_GROUP * src) | 151 | ec_GFp_mont_group_copy(EC_GROUP * dest, const EC_GROUP * src) |
| 160 | { | 152 | { |
| 161 | if (dest->field_data1 != NULL) { | 153 | BN_MONT_CTX_free(dest->field_data1); |
| 162 | BN_MONT_CTX_free(dest->field_data1); | 154 | dest->field_data1 = NULL; |
| 163 | dest->field_data1 = NULL; | 155 | BN_clear_free(dest->field_data2); |
| 164 | } | 156 | dest->field_data2 = NULL; |
| 165 | if (dest->field_data2 != NULL) { | 157 | |
| 166 | BN_clear_free(dest->field_data2); | ||
| 167 | dest->field_data2 = NULL; | ||
| 168 | } | ||
| 169 | if (!ec_GFp_simple_group_copy(dest, src)) | 158 | if (!ec_GFp_simple_group_copy(dest, src)) |
| 170 | return 0; | 159 | return 0; |
| 171 | 160 | ||
| @@ -201,14 +190,10 @@ ec_GFp_mont_group_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, | |||
| 201 | BIGNUM *one = NULL; | 190 | BIGNUM *one = NULL; |
| 202 | int ret = 0; | 191 | int ret = 0; |
| 203 | 192 | ||
| 204 | if (group->field_data1 != NULL) { | 193 | BN_MONT_CTX_free(group->field_data1); |
| 205 | BN_MONT_CTX_free(group->field_data1); | 194 | group->field_data1 = NULL; |
| 206 | group->field_data1 = NULL; | 195 | BN_free(group->field_data2); |
| 207 | } | 196 | group->field_data2 = NULL; |
| 208 | if (group->field_data2 != NULL) { | ||
| 209 | BN_free(group->field_data2); | ||
| 210 | group->field_data2 = NULL; | ||
| 211 | } | ||
| 212 | if (ctx == NULL) { | 197 | if (ctx == NULL) { |
| 213 | ctx = new_ctx = BN_CTX_new(); | 198 | ctx = new_ctx = BN_CTX_new(); |
| 214 | if (ctx == NULL) | 199 | if (ctx == NULL) |
| @@ -241,10 +226,8 @@ ec_GFp_mont_group_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, | |||
| 241 | group->field_data2 = NULL; | 226 | group->field_data2 = NULL; |
| 242 | } | 227 | } |
| 243 | err: | 228 | err: |
| 244 | if (new_ctx != NULL) | 229 | BN_CTX_free(new_ctx); |
| 245 | BN_CTX_free(new_ctx); | 230 | BN_MONT_CTX_free(mont); |
| 246 | if (mont != NULL) | ||
| 247 | BN_MONT_CTX_free(mont); | ||
| 248 | return ret; | 231 | return ret; |
| 249 | } | 232 | } |
| 250 | 233 | ||
