diff options
author | Florian Dold <florian.dold@gmail.com> | 2014-01-21 09:44:50 +0000 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2014-01-21 09:44:50 +0000 |
commit | 37e8e8840403bf7da9446b5997878153419a9dc3 (patch) | |
tree | c0bc598feb6f48279590976390b6b150ae60f1d3 /src/secretsharing/gnunet-service-secretsharing.c | |
parent | 0fef52ef6595387d26ffc4b3233bf751b1bb8078 (diff) | |
download | gnunet-37e8e8840403bf7da9446b5997878153419a9dc3.tar.gz gnunet-37e8e8840403bf7da9446b5997878153419a9dc3.zip |
remove paillier_create in secretsharing
Diffstat (limited to 'src/secretsharing/gnunet-service-secretsharing.c')
-rw-r--r-- | src/secretsharing/gnunet-service-secretsharing.c | 66 |
1 files changed, 10 insertions, 56 deletions
diff --git a/src/secretsharing/gnunet-service-secretsharing.c b/src/secretsharing/gnunet-service-secretsharing.c index 29899c2ac..64851009d 100644 --- a/src/secretsharing/gnunet-service-secretsharing.c +++ b/src/secretsharing/gnunet-service-secretsharing.c | |||
@@ -529,59 +529,6 @@ compute_lagrange_coefficient (gcry_mpi_t coeff, unsigned int j, | |||
529 | 529 | ||
530 | 530 | ||
531 | /** | 531 | /** |
532 | * Create a key pair for the paillier crypto system. | ||
533 | * | ||
534 | * Uses the simplified key generation of Jonathan Katz, Yehuda Lindell, | ||
535 | * "Introduction to Modern Cryptography: Principles and Protocols". | ||
536 | * | ||
537 | * @param n n-component of public key | ||
538 | * @param lambda lambda-component of private key | ||
539 | * @param mu mu-componenent of private key | ||
540 | */ | ||
541 | static void | ||
542 | paillier_create (gcry_mpi_t n, gcry_mpi_t lambda, gcry_mpi_t mu) | ||
543 | { | ||
544 | gcry_mpi_t p; | ||
545 | gcry_mpi_t q; | ||
546 | gcry_mpi_t phi; | ||
547 | gcry_mpi_t tmp; | ||
548 | |||
549 | GNUNET_assert (NULL != (phi = gcry_mpi_new (GNUNET_CRYPTO_PAILLIER_BITS))); | ||
550 | GNUNET_assert (NULL != (tmp = gcry_mpi_new (GNUNET_CRYPTO_PAILLIER_BITS))); | ||
551 | |||
552 | p = q = NULL; | ||
553 | |||
554 | // Generate two distinct primes. | ||
555 | // The probability that the loop body | ||
556 | // is executed more than once is very low. | ||
557 | do { | ||
558 | if (NULL != p) | ||
559 | gcry_mpi_release (p); | ||
560 | if (NULL != q) | ||
561 | gcry_mpi_release (q); | ||
562 | // generate rsa modulus | ||
563 | GNUNET_assert (0 == gcry_prime_generate (&p, GNUNET_CRYPTO_PAILLIER_BITS / 2, 0, NULL, NULL, NULL, | ||
564 | GCRY_WEAK_RANDOM, 0)); | ||
565 | GNUNET_assert (0 == gcry_prime_generate (&q, GNUNET_CRYPTO_PAILLIER_BITS / 2, 0, NULL, NULL, NULL, | ||
566 | GCRY_WEAK_RANDOM, 0)); | ||
567 | } while (0 == gcry_mpi_cmp (p, q)); | ||
568 | gcry_mpi_mul (n, p, q); | ||
569 | // compute phi(n) = (p-1)(q-1) | ||
570 | gcry_mpi_sub_ui (phi, p, 1); | ||
571 | gcry_mpi_sub_ui (tmp, q, 1); | ||
572 | gcry_mpi_mul (phi, phi, tmp); | ||
573 | gcry_mpi_set (lambda, phi); | ||
574 | // compute mu | ||
575 | GNUNET_assert (0 != gcry_mpi_invm (mu, phi, n)); | ||
576 | |||
577 | gcry_mpi_release (p); | ||
578 | gcry_mpi_release (q); | ||
579 | gcry_mpi_release (phi); | ||
580 | gcry_mpi_release (tmp); | ||
581 | } | ||
582 | |||
583 | |||
584 | /** | ||
585 | * Encrypt a value using Paillier's scheme. | 532 | * Encrypt a value using Paillier's scheme. |
586 | * | 533 | * |
587 | * @param[out] c resulting ciphertext | 534 | * @param[out] c resulting ciphertext |
@@ -1208,6 +1155,8 @@ static void handle_client_keygen (void *cls, | |||
1208 | (const struct GNUNET_SECRETSHARING_CreateMessage *) message; | 1155 | (const struct GNUNET_SECRETSHARING_CreateMessage *) message; |
1209 | struct KeygenSession *ks; | 1156 | struct KeygenSession *ks; |
1210 | unsigned int i; | 1157 | unsigned int i; |
1158 | struct GNUNET_CRYPTO_PaillierPrivateKey private_key; | ||
1159 | struct GNUNET_CRYPTO_PaillierPublicKey public_key; | ||
1211 | 1160 | ||
1212 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, "client requested key generation\n"); | 1161 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, "client requested key generation\n"); |
1213 | 1162 | ||
@@ -1241,9 +1190,14 @@ static void handle_client_keygen (void *cls, | |||
1241 | GNUNET_assert (0 != (ks->paillier_lambda = mpi_new (0))); | 1190 | GNUNET_assert (0 != (ks->paillier_lambda = mpi_new (0))); |
1242 | GNUNET_assert (0 != (ks->paillier_mu = mpi_new (0))); | 1191 | GNUNET_assert (0 != (ks->paillier_mu = mpi_new (0))); |
1243 | 1192 | ||
1244 | paillier_create (ks->info[ks->local_peer_idx].paillier_n, | 1193 | GNUNET_CRYPTO_paillier_create (&public_key, &private_key); |
1245 | ks->paillier_lambda, | 1194 | |
1246 | ks->paillier_mu); | 1195 | GNUNET_CRYPTO_mpi_scan_unsigned (&ks->info[ks->local_peer_idx].paillier_n, |
1196 | &public_key, sizeof public_key); | ||
1197 | GNUNET_CRYPTO_mpi_scan_unsigned (&ks->paillier_lambda, | ||
1198 | &private_key.lambda, sizeof private_key.lambda); | ||
1199 | GNUNET_CRYPTO_mpi_scan_unsigned (&ks->paillier_mu, | ||
1200 | &private_key.mu, sizeof private_key.mu); | ||
1247 | 1201 | ||
1248 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: Generated paillier key pair\n", ks->local_peer_idx); | 1202 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: Generated paillier key pair\n", ks->local_peer_idx); |
1249 | 1203 | ||