Changeset View
Changeset View
Standalone View
Standalone View
b/cipher/primegen.c
| Context not available. | |||||
| if (g) | if (g) | ||||
| { | { | ||||
| /* Create a generator (start with 3). */ | /* Create a generator (start with 3). */ | ||||
| gcry_mpi_t tmp = mpi_alloc (mpi_get_nlimbs (prime)); | |||||
| gcry_mpi_t b = mpi_alloc (mpi_get_nlimbs (prime)); | |||||
| gcry_mpi_t pmin1 = mpi_alloc (mpi_get_nlimbs (prime)); | |||||
| if (need_q_factor) | if (need_q_factor) | ||||
| err = GPG_ERR_NOT_IMPLEMENTED; | err = GPG_ERR_NOT_IMPLEMENTED; | ||||
| else | else | ||||
| { | { | ||||
| gcry_mpi_t tmp = mpi_alloc (mpi_get_nlimbs (prime)); | |||||
| gcry_mpi_t b = mpi_alloc (mpi_get_nlimbs (prime)); | |||||
| gcry_mpi_t pmin1 = mpi_alloc (mpi_get_nlimbs (prime)); | |||||
| factors[n] = q; | factors[n] = q; | ||||
| factors[n + 1] = mpi_alloc_set_ui (2); | factors[n + 1] = mpi_alloc_set_ui (2); | ||||
| mpi_sub_ui (pmin1, prime, 1); | mpi_sub_ui (pmin1, prime, 1); | ||||
| Context not available. | |||||
| gcry_mpi_t b = mpi_new (0); | gcry_mpi_t b = mpi_new (0); | ||||
| gcry_mpi_t pmin1 = mpi_new (0); | gcry_mpi_t pmin1 = mpi_new (0); | ||||
| gcry_mpi_t g = start_g? mpi_copy (start_g) : mpi_set_ui (NULL, 3); | gcry_mpi_t g = start_g? mpi_copy (start_g) : mpi_set_ui (NULL, 3); | ||||
| gcry_err_code_t err = 0; | |||||
| int first = 1; | int first = 1; | ||||
| int i, n; | int i, n; | ||||
| if (!factors || !r_g || !prime) | if (!factors || !r_g || !prime) | ||||
| return GPG_ERR_INV_ARG; | { | ||||
| err= GPG_ERR_INV_ARG; | |||||
| goto leave; | |||||
| } | |||||
| *r_g = NULL; | *r_g = NULL; | ||||
| for (n=0; factors[n]; n++) | for (n=0; factors[n]; n++) | ||||
| ; | ; | ||||
| if (n < 2) | if (n < 2) | ||||
| return GPG_ERR_INV_ARG; | { | ||||
| err= GPG_ERR_INV_ARG; | |||||
| goto leave; | |||||
| } | |||||
| /* Extra sanity check - usually disabled. */ | /* Extra sanity check - usually disabled. */ | ||||
| /* mpi_set (tmp, factors[0]); */ | /* mpi_set (tmp, factors[0]); */ | ||||
| Context not available. | |||||
| } | } | ||||
| while (i < n); | while (i < n); | ||||
| leave: | |||||
| _gcry_mpi_release (tmp); | _gcry_mpi_release (tmp); | ||||
| _gcry_mpi_release (b); | _gcry_mpi_release (b); | ||||
| _gcry_mpi_release (pmin1); | _gcry_mpi_release (pmin1); | ||||
| if (err) | |||||
| { | |||||
| _gcry_mpi_release (g); | |||||
| return err; | |||||
| } | |||||
| *r_g = g; | *r_g = g; | ||||
| return 0; | return 0; | ||||
| Context not available. | |||||