[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r31978 - gnunet/src/secretsharing
From: |
gnunet |
Subject: |
[GNUnet-SVN] r31978 - gnunet/src/secretsharing |
Date: |
Tue, 21 Jan 2014 11:01:07 +0100 |
Author: dold
Date: 2014-01-21 11:01:07 +0100 (Tue, 21 Jan 2014)
New Revision: 31978
Modified:
gnunet/src/secretsharing/gnunet-service-secretsharing.c
Log:
remove paillier_decrypt in secretsharing
Modified: gnunet/src/secretsharing/gnunet-service-secretsharing.c
===================================================================
--- gnunet/src/secretsharing/gnunet-service-secretsharing.c 2014-01-21
09:51:01 UTC (rev 31977)
+++ gnunet/src/secretsharing/gnunet-service-secretsharing.c 2014-01-21
10:01:07 UTC (rev 31978)
@@ -528,35 +528,7 @@
}
-/**
- * Decrypt a ciphertext using Paillier's scheme.
- *
- * @param[out] m resulting plaintext
- * @param c ciphertext to decrypt
- * @param lambda lambda-component of private key
- * @param mu mu-component of private key
- * @param n n-component of public key
- */
static void
-paillier_decrypt (gcry_mpi_t m, gcry_mpi_t c, gcry_mpi_t mu, gcry_mpi_t
lambda, gcry_mpi_t n)
-{
- gcry_mpi_t n_square;
-
- GNUNET_assert (0 != (n_square = gcry_mpi_new (0)));
-
- gcry_mpi_mul (n_square, n, n);
- // m = c^lambda mod n^2
- gcry_mpi_powm (m, c, lambda, n_square);
- // m = m - 1
- gcry_mpi_sub_ui (m, m, 1);
- // m <- m/n
- gcry_mpi_div (m, NULL, m, n, 0);
- gcry_mpi_mulm (m, m, mu, n);
- gcry_mpi_release (n_square);
-}
-
-
-static void
decrypt_session_destroy (struct DecryptSession *ds)
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "destroying decrypt session\n");
@@ -990,7 +962,6 @@
GNUNET_log (GNUNET_ERROR_TYPE_INFO, "got round2 element\n");
-
pos = (void *) &d[1];
// skip exponentiated pre-shares
pos += GNUNET_SECRETSHARING_ELGAMAL_BITS / 8 * ks->num_peers;
@@ -1007,10 +978,25 @@
GNUNET_CRYPTO_mpi_scan_unsigned (&c, pos, GNUNET_CRYPTO_PAILLIER_BITS * 2 /
8);
- GNUNET_assert (0 != (info->decrypted_preshare = mpi_new (0)));
+ // FIXME: remove this ugly block once we changed all MPIs to containers
+ {
+ struct GNUNET_CRYPTO_PaillierPublicKey public_key;
+ struct GNUNET_CRYPTO_PaillierPrivateKey private_key;
+ struct GNUNET_CRYPTO_PaillierPlaintext plaintext;
+ struct GNUNET_CRYPTO_PaillierCiphertext ciphertext;
- paillier_decrypt (info->decrypted_preshare, c, ks->paillier_mu,
ks->paillier_lambda,
- ks->info[ks->local_peer_idx].paillier_n);
+ GNUNET_CRYPTO_mpi_print_unsigned (&public_key, sizeof public_key,
ks->info[ks->local_peer_idx].paillier_n);
+ GNUNET_CRYPTO_mpi_print_unsigned (&private_key.lambda, sizeof
private_key.lambda, ks->paillier_lambda);
+ GNUNET_CRYPTO_mpi_print_unsigned (&private_key.mu, sizeof private_key.mu,
ks->paillier_mu);
+ GNUNET_CRYPTO_mpi_print_unsigned (&ciphertext, sizeof ciphertext, c);
+
+
+ GNUNET_CRYPTO_paillier_decrypt (&private_key, &public_key,
+ &ciphertext, &plaintext);
+ GNUNET_CRYPTO_mpi_scan_unsigned (&info->decrypted_preshare, &plaintext,
+ sizeof plaintext);
+ }
+
// TODO: validate zero knowledge proofs
if (ntohl (d->purpose.size) !=
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r31978 - gnunet/src/secretsharing,
gnunet <=