Clean up weirdness in initializing EC_GROUP cofactor & order.
Previously, |x| was reset to the value of the cofactor for no reason,
and there was an unnecessary copy made of |order|.
Change-Id: Ib6b06f651e280838299dff534c38726ebf4ccc97
Reviewed-on: https://boringssl-review.googlesource.com/4447
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/crypto/ec/ec.c b/crypto/ec/ec.c
index 23d07e0..df0407c 100644
--- a/crypto/ec/ec.c
+++ b/crypto/ec/ec.c
@@ -328,7 +328,7 @@
EC_GROUP *group = NULL;
EC_POINT *P = NULL;
BN_CTX *ctx = NULL;
- BIGNUM *p = NULL, *a = NULL, *b = NULL, *x = NULL, *y = NULL, *order = NULL;
+ BIGNUM *p = NULL, *a = NULL, *b = NULL, *x = NULL, *y = NULL;
int ok = 0;
unsigned param_len;
const EC_METHOD *meth;
@@ -380,20 +380,14 @@
OPENSSL_PUT_ERROR(EC, ERR_R_EC_LIB);
goto err;
}
- if (!(order = BN_bin2bn(params + 5 * param_len, param_len, NULL)) ||
- !BN_set_word(x, (BN_ULONG)data->cofactor)) {
+ if (!BN_bin2bn(params + 5 * param_len, param_len, &group->order) ||
+ !BN_set_word(&group->cofactor, (BN_ULONG)data->cofactor)) {
OPENSSL_PUT_ERROR(EC, ERR_R_BN_LIB);
goto err;
}
group->generator = P;
P = NULL;
- if (!BN_copy(&group->order, order) ||
- !BN_set_word(&group->cofactor, (BN_ULONG)data->cofactor)) {
- OPENSSL_PUT_ERROR(EC, ERR_R_BN_LIB);
- goto err;
- }
-
ok = 1;
err:
@@ -406,7 +400,6 @@
BN_free(p);
BN_free(a);
BN_free(b);
- BN_free(order);
BN_free(x);
BN_free(y);
return group;