aboutsummaryrefslogtreecommitdiff
path: root/src/secretsharing/gnunet-service-secretsharing.c
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2014-01-21 09:44:50 +0000
committerFlorian Dold <florian.dold@gmail.com>2014-01-21 09:44:50 +0000
commit37e8e8840403bf7da9446b5997878153419a9dc3 (patch)
treec0bc598feb6f48279590976390b6b150ae60f1d3 /src/secretsharing/gnunet-service-secretsharing.c
parent0fef52ef6595387d26ffc4b3233bf751b1bb8078 (diff)
downloadgnunet-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.c66
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 */
541static void
542paillier_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