diff --git a/crypto/ec/ec_lcl.h b/crypto/ec/ec_lcl.h index 36432e16f5..2c5e1d901d 100644 --- a/crypto/ec/ec_lcl.h +++ b/crypto/ec/ec_lcl.h @@ -308,6 +308,8 @@ NISTP521_PRE_COMP *EC_nistp521_pre_comp_dup(NISTP521_PRE_COMP *); NISTZ256_PRE_COMP *EC_nistz256_pre_comp_dup(NISTZ256_PRE_COMP *); NISTP256_PRE_COMP *EC_nistp256_pre_comp_dup(NISTP256_PRE_COMP *); EC_PRE_COMP *EC_ec_pre_comp_dup(EC_PRE_COMP *); + +void EC_pre_comp_free(EC_GROUP *group); void EC_nistp224_pre_comp_free(NISTP224_PRE_COMP *); void EC_nistp256_pre_comp_free(NISTP256_PRE_COMP *); void EC_nistp521_pre_comp_free(NISTP521_PRE_COMP *); diff --git a/crypto/ec/ec_lib.c b/crypto/ec/ec_lib.c index 890a274b97..6fb4268b8c 100644 --- a/crypto/ec/ec_lib.c +++ b/crypto/ec/ec_lib.c @@ -109,7 +109,7 @@ EC_GROUP *EC_GROUP_new(const EC_METHOD *meth) return NULL; } -static void ec_group_free_precomp(EC_GROUP *group) +void EC_pre_comp_free(EC_GROUP *group) { switch (group->pre_comp_type) { default: @@ -145,7 +145,7 @@ void EC_GROUP_free(EC_GROUP *group) if (group->meth->group_finish != 0) group->meth->group_finish(group); - ec_group_free_precomp(group); + EC_pre_comp_free(group); BN_MONT_CTX_free(group->mont_data); EC_POINT_free(group->generator); BN_free(group->order); @@ -164,7 +164,7 @@ void EC_GROUP_clear_free(EC_GROUP *group) else if (group->meth->group_finish != 0) group->meth->group_finish(group); - ec_group_free_precomp(group); + EC_pre_comp_free(group); BN_MONT_CTX_free(group->mont_data); EC_POINT_clear_free(group->generator); BN_clear_free(group->order); diff --git a/crypto/ec/ec_mult.c b/crypto/ec/ec_mult.c index 8a4e23d649..5908f594f1 100644 --- a/crypto/ec/ec_mult.c +++ b/crypto/ec/ec_mult.c @@ -562,7 +562,7 @@ int ec_wNAF_precompute_mult(EC_GROUP *group, BN_CTX *ctx) int ret = 0; /* if there is an old EC_PRE_COMP object, throw it away */ - EC_ec_pre_comp_free(group->pre_comp.ec); + EC_pre_comp_free(group); if ((pre_comp = ec_pre_comp_new(group)) == NULL) return 0; diff --git a/crypto/ec/ecp_nistp224.c b/crypto/ec/ecp_nistp224.c index a2def18031..e17ac18255 100644 --- a/crypto/ec/ecp_nistp224.c +++ b/crypto/ec/ecp_nistp224.c @@ -1559,8 +1559,7 @@ int ec_GFp_nistp224_precompute_mult(EC_GROUP *group, BN_CTX *ctx) felem tmp_felems[32]; /* throw away old precomputation */ - EC_nistp224_pre_comp_free(group->pre_comp.nistp224); - group->pre_comp.nistp224 = NULL; + EC_pre_comp_free(group); if (ctx == NULL) if ((ctx = new_ctx = BN_CTX_new()) == NULL) return 0; diff --git a/crypto/ec/ecp_nistp256.c b/crypto/ec/ecp_nistp256.c index 11bde8a50f..9db5ffa7f2 100644 --- a/crypto/ec/ecp_nistp256.c +++ b/crypto/ec/ecp_nistp256.c @@ -2184,8 +2184,7 @@ int ec_GFp_nistp256_precompute_mult(EC_GROUP *group, BN_CTX *ctx) felem x_tmp, y_tmp, z_tmp; /* throw away old precomputation */ - EC_nistp256_pre_comp_free(group->pre_comp.nistp256); - group->pre_comp.nistp256 = NULL; + EC_pre_comp_free(group); if (ctx == NULL) if ((ctx = new_ctx = BN_CTX_new()) == NULL) return 0; diff --git a/crypto/ec/ecp_nistp521.c b/crypto/ec/ecp_nistp521.c index d656517791..ee9c07e885 100644 --- a/crypto/ec/ecp_nistp521.c +++ b/crypto/ec/ecp_nistp521.c @@ -2008,8 +2008,7 @@ int ec_GFp_nistp521_precompute_mult(EC_GROUP *group, BN_CTX *ctx) felem tmp_felems[16]; /* throw away old precomputation */ - EC_nistp521_pre_comp_free(group->pre_comp.nistp521); - group->pre_comp.nistp521 = NULL; + EC_pre_comp_free(group); if (ctx == NULL) if ((ctx = new_ctx = BN_CTX_new()) == NULL) return 0; diff --git a/crypto/ec/ecp_nistz256.c b/crypto/ec/ecp_nistz256.c index c25a7daf3c..579a3ad622 100644 --- a/crypto/ec/ecp_nistz256.c +++ b/crypto/ec/ecp_nistz256.c @@ -769,8 +769,7 @@ __owur static int ecp_nistz256_mult_precompute(EC_GROUP *group, BN_CTX *ctx) unsigned char *precomp_storage = NULL; /* if there is an old NISTZ256_PRE_COMP object, throw it away */ - EC_nistz256_pre_comp_free(group->pre_comp.nistz256); - group->pre_comp.nistz256 = NULL; + EC_pre_comp_free(group); generator = EC_GROUP_get0_generator(group); if (generator == NULL) { ECerr(EC_F_ECP_NISTZ256_MULT_PRECOMPUTE, EC_R_UNDEFINED_GENERATOR);