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. |