gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r31977 - gnunet/src/secretsharing


From: gnunet
Subject: [GNUnet-SVN] r31977 - gnunet/src/secretsharing
Date: Tue, 21 Jan 2014 10:51:01 +0100

Author: dold
Date: 2014-01-21 10:51:01 +0100 (Tue, 21 Jan 2014)
New Revision: 31977

Modified:
   gnunet/src/secretsharing/gnunet-service-secretsharing.c
Log:
remove paillier_encrypt in secretsharing

Modified: gnunet/src/secretsharing/gnunet-service-secretsharing.c
===================================================================
--- gnunet/src/secretsharing/gnunet-service-secretsharing.c     2014-01-21 
09:44:50 UTC (rev 31976)
+++ gnunet/src/secretsharing/gnunet-service-secretsharing.c     2014-01-21 
09:51:01 UTC (rev 31977)
@@ -529,45 +529,6 @@
 
 
 /**
- * Encrypt a value using Paillier's scheme.
- *
- * @param[out] c resulting ciphertext
- * @param m plaintext to encrypt
- * @param n n-component of public key
- */
-static void
-paillier_encrypt (gcry_mpi_t c, gcry_mpi_t m, gcry_mpi_t n)
-{
-  gcry_mpi_t n_square;
-  gcry_mpi_t r;
-  gcry_mpi_t g;
-
-  GNUNET_assert (0 != (n_square = gcry_mpi_new (0)));
-  GNUNET_assert (0 != (r = gcry_mpi_new (0)));
-  GNUNET_assert (0 != (g = gcry_mpi_new (0)));
-
-  gcry_mpi_add_ui (g, n, 1);
-
-  gcry_mpi_mul (n_square, n, n);
-
-  // generate r < n
-  do
-  {
-    gcry_mpi_randomize (r, GNUNET_CRYPTO_PAILLIER_BITS, GCRY_WEAK_RANDOM);
-  }
-  while (gcry_mpi_cmp (r, n) >= 0);
-
-  gcry_mpi_powm (c, g, m, n_square);
-  gcry_mpi_powm (r, r, n, n_square);
-  gcry_mpi_mulm (c, r, c, n_square);
-
-  gcry_mpi_release (n_square);
-  gcry_mpi_release (r);
-  gcry_mpi_release (g);
-}
-
-
-/**
  * Decrypt a ciphertext using Paillier's scheme.
  *
  * @param[out] m resulting plaintext
@@ -921,21 +882,24 @@
   for (i = 0; i < ks->num_peers; i++)
   {
     ptrdiff_t remaining = last_pos - pos;
+    struct GNUNET_CRYPTO_PaillierCiphertext *ciphertext;
+
     GNUNET_assert (remaining > 0);
-    if (GNUNET_NO == ks->info[i].round1_valid)
+    ciphertext = (void *) pos;
+    memset (ciphertext, 0, sizeof *ciphertext);
+    if (GNUNET_YES == ks->info[i].round1_valid)
     {
-      gcry_mpi_set_ui (c, 0);
-    }
-    else
-    {
+      struct GNUNET_CRYPTO_PaillierPlaintext plaintext;
+      struct GNUNET_CRYPTO_PaillierPublicKey public_key;
       gcry_mpi_set_ui (idx, i + 1);
       // evaluate the polynomial
       horner_eval (v, ks->presecret_polynomial, ks->threshold, idx, elgamal_q);
+      GNUNET_CRYPTO_mpi_print_unsigned (&plaintext, sizeof plaintext, v);
+      GNUNET_CRYPTO_mpi_print_unsigned (&public_key, sizeof public_key, 
ks->info[i].paillier_n);
       // encrypt the result
-      paillier_encrypt (c, v, ks->info[i].paillier_n);
+      GNUNET_CRYPTO_paillier_encrypt (&public_key, &plaintext, ciphertext);
     }
-    GNUNET_CRYPTO_mpi_print_unsigned (pos, GNUNET_CRYPTO_PAILLIER_BITS * 2 / 
8, c);
-    pos += GNUNET_CRYPTO_PAILLIER_BITS * 2 / 8;
+    pos += sizeof *ciphertext;
   }
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "P%u: computed enc preshares\n",




reply via email to

[Prev in Thread] Current Thread [Next in Thread]