diff options
author | Christian Grothoff <christian@grothoff.org> | 2010-10-08 16:13:16 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2010-10-08 16:13:16 +0000 |
commit | 592e1b7a112512b7b13384246030e17b9a13e32f (patch) | |
tree | 07d3a3965c39cf865f7d7f66397e499b8d9edbdb /src/util/crypto_ksk.c | |
parent | a4927bca8f8d3dab2680c6a1b534d17d35f5ad6f (diff) | |
download | gnunet-592e1b7a112512b7b13384246030e17b9a13e32f.tar.gz gnunet-592e1b7a112512b7b13384246030e17b9a13e32f.zip |
better
Diffstat (limited to 'src/util/crypto_ksk.c')
-rw-r--r-- | src/util/crypto_ksk.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/util/crypto_ksk.c b/src/util/crypto_ksk.c index 8fe75f372..687aece16 100644 --- a/src/util/crypto_ksk.c +++ b/src/util/crypto_ksk.c | |||
@@ -292,13 +292,12 @@ gen_prime (gcry_mpi_t *ptest, unsigned int nbits, GNUNET_HashCode * hc) | |||
292 | gcry_mpi_t prime, pminus1, val_2, val_3, result; | 292 | gcry_mpi_t prime, pminus1, val_2, val_3, result; |
293 | unsigned int i; | 293 | unsigned int i; |
294 | unsigned int step; | 294 | unsigned int step; |
295 | unsigned int *mods; | 295 | unsigned int mods[no_of_small_prime_numbers]; |
296 | gcry_mpi_t tmp; | 296 | gcry_mpi_t tmp; |
297 | gcry_mpi_t sp; | 297 | gcry_mpi_t sp; |
298 | 298 | ||
299 | GNUNET_assert (nbits >= 16); | 299 | GNUNET_assert (nbits >= 16); |
300 | 300 | ||
301 | mods = GNUNET_malloc (no_of_small_prime_numbers * sizeof (*mods)); | ||
302 | /* Make nbits fit into mpz_t implementation. */ | 301 | /* Make nbits fit into mpz_t implementation. */ |
303 | val_2 = gcry_mpi_set_ui (NULL, 2); | 302 | val_2 = gcry_mpi_set_ui (NULL, 2); |
304 | val_3 = gcry_mpi_set_ui (NULL, 3); | 303 | val_3 = gcry_mpi_set_ui (NULL, 3); |
@@ -306,6 +305,8 @@ gen_prime (gcry_mpi_t *ptest, unsigned int nbits, GNUNET_HashCode * hc) | |||
306 | result = gcry_mpi_new(0); | 305 | result = gcry_mpi_new(0); |
307 | pminus1 = gcry_mpi_new(0); | 306 | pminus1 = gcry_mpi_new(0); |
308 | *ptest = gcry_mpi_new(0); | 307 | *ptest = gcry_mpi_new(0); |
308 | tmp = gcry_mpi_new (0); | ||
309 | sp = gcry_mpi_new (0); | ||
309 | while (1) | 310 | while (1) |
310 | { | 311 | { |
311 | /* generate a random number */ | 312 | /* generate a random number */ |
@@ -319,8 +320,6 @@ gen_prime (gcry_mpi_t *ptest, unsigned int nbits, GNUNET_HashCode * hc) | |||
319 | gcry_mpi_set_bit (prime, 0); | 320 | gcry_mpi_set_bit (prime, 0); |
320 | 321 | ||
321 | /* Calculate all remainders. */ | 322 | /* Calculate all remainders. */ |
322 | tmp = gcry_mpi_new (0); | ||
323 | sp = gcry_mpi_new (0); | ||
324 | for (i = 0; i < no_of_small_prime_numbers; i++) | 323 | for (i = 0; i < no_of_small_prime_numbers; i++) |
325 | { | 324 | { |
326 | size_t written; | 325 | size_t written; |
@@ -328,11 +327,12 @@ gen_prime (gcry_mpi_t *ptest, unsigned int nbits, GNUNET_HashCode * hc) | |||
328 | gcry_mpi_set_ui(sp, small_prime_numbers[i]); | 327 | gcry_mpi_set_ui(sp, small_prime_numbers[i]); |
329 | gcry_mpi_div (NULL, tmp, prime, sp, -1); | 328 | gcry_mpi_div (NULL, tmp, prime, sp, -1); |
330 | mods[i] = 0; | 329 | mods[i] = 0; |
331 | written = sizeof (*mods); | 330 | written = sizeof (unsigned int); |
332 | gcry_mpi_print (GCRYMPI_FMT_USG, (unsigned char *) &mods[i], sizeof(*mods), &written, tmp); | 331 | GNUNET_assert (0 == |
333 | } | 332 | gcry_mpi_print (GCRYMPI_FMT_USG, |
334 | gcry_mpi_release (sp); | 333 | (unsigned char*) &mods[i], written, &written, |
335 | gcry_mpi_release (tmp); | 334 | tmp)); |
335 | } | ||
336 | /* Now try some primes starting with prime. */ | 336 | /* Now try some primes starting with prime. */ |
337 | for (step = 0; step < 20000; step += 2) | 337 | for (step = 0; step < 20000; step += 2) |
338 | { | 338 | { |
@@ -358,12 +358,13 @@ gen_prime (gcry_mpi_t *ptest, unsigned int nbits, GNUNET_HashCode * hc) | |||
358 | if ((!gcry_mpi_cmp_ui (result, 1)) && (is_prime (*ptest, 5, hc))) | 358 | if ((!gcry_mpi_cmp_ui (result, 1)) && (is_prime (*ptest, 5, hc))) |
359 | { | 359 | { |
360 | /* Got it. */ | 360 | /* Got it. */ |
361 | gcry_mpi_release (sp); | ||
362 | gcry_mpi_release (tmp); | ||
361 | gcry_mpi_release (val_2); | 363 | gcry_mpi_release (val_2); |
362 | gcry_mpi_release (val_3); | 364 | gcry_mpi_release (val_3); |
363 | gcry_mpi_release (result); | 365 | gcry_mpi_release (result); |
364 | gcry_mpi_release (pminus1); | 366 | gcry_mpi_release (pminus1); |
365 | gcry_mpi_release (prime); | 367 | gcry_mpi_release (prime); |
366 | GNUNET_free (mods); | ||
367 | return; | 368 | return; |
368 | } | 369 | } |
369 | } | 370 | } |