gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r32185 - in gnunet/src: include scalarproduct secretsharing


From: gnunet
Subject: [GNUnet-SVN] r32185 - in gnunet/src: include scalarproduct secretsharing util
Date: Tue, 4 Feb 2014 11:15:29 +0100

Author: cfuchs
Date: 2014-02-04 11:15:29 +0100 (Tue, 04 Feb 2014)
New Revision: 32185

Modified:
   gnunet/src/include/gnunet_crypto_lib.h
   gnunet/src/scalarproduct/gnunet-service-scalarproduct.c
   gnunet/src/secretsharing/gnunet-service-secretsharing.c
   gnunet/src/util/crypto_paillier.c
   gnunet/src/util/test_crypto_paillier.c
Log:
- extended paillier-api to also include caller-suggested maximum supported homs

Modified: gnunet/src/include/gnunet_crypto_lib.h
===================================================================
--- gnunet/src/include/gnunet_crypto_lib.h      2014-02-03 23:21:25 UTC (rev 
32184)
+++ gnunet/src/include/gnunet_crypto_lib.h      2014-02-04 10:15:29 UTC (rev 
32185)
@@ -1330,13 +1330,16 @@
  *
  * @param public_key Public key to use.
  * @param m Plaintext to encrypt.
+ * @param desired_ops How many homomorphic ops the caller intends to use
  * @param[out] ciphertext Encrytion of @a plaintext with @a public_key.
  * @return guaranteed number of supported homomorphic operations >= 1, 
- *         -1 if less than one homomorphic operation is possible
+ *         or desired_ops, in case that is lower,
+ *         or -1 if less than one homomorphic operation is possible
  */
 int
 GNUNET_CRYPTO_paillier_encrypt (const struct GNUNET_CRYPTO_PaillierPublicKey 
*public_key,
                                 const gcry_mpi_t m,
+                                int desired_ops,
                                 struct GNUNET_CRYPTO_PaillierCiphertext 
*ciphertext);
 
 

Modified: gnunet/src/scalarproduct/gnunet-service-scalarproduct.c
===================================================================
--- gnunet/src/scalarproduct/gnunet-service-scalarproduct.c     2014-02-03 
23:21:25 UTC (rev 32184)
+++ gnunet/src/scalarproduct/gnunet-service-scalarproduct.c     2014-02-04 
10:15:29 UTC (rev 32185)
@@ -1280,7 +1280,8 @@
     gcry_mpi_sub (r[i], my_offset, rand_pi[i]);
     gcry_mpi_sub (r[i], r[i], b_pi[i]);
     GNUNET_CRYPTO_paillier_encrypt (&request->remote_pubkey, 
-                                    r[i], 
+                                    r[i],
+                                    2,
                                     &R[i]);
     
     // E(S - r_pi - b_pi) * E(S + a_pi) ==  E(2*S + a - r - b)
@@ -1300,12 +1301,14 @@
     gcry_mpi_sub (r_prime[i], my_offset, rand_pi_prime[i]);
     GNUNET_CRYPTO_paillier_encrypt (&request->remote_pubkey, 
                                     r_prime[i], 
+                                    2,
                                     &R_prime[i]);
 
     // E(S - r_qi) * E(S + a_qi) == E(2*S + a_qi - r_qi)
     GNUNET_CRYPTO_paillier_hom_add (&request->remote_pubkey, 
                                     &R_prime[i], 
-                                    &A_pi_prime[i], 
+                                    &A_pi_prime[i],
+                                    2,
                                     &R_prime[i]);
   }
   GNUNET_free (a_pi_prime);
@@ -1319,6 +1322,7 @@
   s_prime = compute_square_sum (rand, count);
   GNUNET_CRYPTO_paillier_encrypt (&request->remote_pubkey, 
                                   s_prime, 
+                                  1,
                                   &S_prime);
 
   // Calculate S = E(SUM( (r_i + b_i)^2 ))
@@ -1327,7 +1331,8 @@
   }
   s = compute_square_sum (rand, count);
   GNUNET_CRYPTO_paillier_encrypt (&request->remote_pubkey, 
-                                  s[i], 
+                                  s[i],
+                                  1,
                                   &S);
 
   // release r and tmp

Modified: gnunet/src/secretsharing/gnunet-service-secretsharing.c
===================================================================
--- gnunet/src/secretsharing/gnunet-service-secretsharing.c     2014-02-03 
23:21:25 UTC (rev 32184)
+++ gnunet/src/secretsharing/gnunet-service-secretsharing.c     2014-02-04 
10:15:29 UTC (rev 32185)
@@ -866,7 +866,7 @@
       // evaluate the polynomial
       horner_eval (v, ks->presecret_polynomial, ks->threshold, idx, elgamal_q);
       // encrypt the result
-      GNUNET_CRYPTO_paillier_encrypt (&ks->info[i].paillier_public_key, v, 
ciphertext);
+      GNUNET_CRYPTO_paillier_encrypt (&ks->info[i].paillier_public_key, v, 0, 
ciphertext);
     }
     pos += sizeof *ciphertext;
   }

Modified: gnunet/src/util/crypto_paillier.c
===================================================================
--- gnunet/src/util/crypto_paillier.c   2014-02-03 23:21:25 UTC (rev 32184)
+++ gnunet/src/util/crypto_paillier.c   2014-02-04 10:15:29 UTC (rev 32185)
@@ -92,12 +92,16 @@
  *
  * @param public_key Public key to use.
  * @param m Plaintext to encrypt.
+ * @param desired_ops How many homomorphic ops the caller intends to use
  * @param[out] ciphertext Encrytion of @a plaintext with @a public_key.
- * @return guaranteed number of supported homomorphic operations, can be zero
+ * @return guaranteed number of supported homomorphic operations >= 1, 
+ *         or desired_ops, in case that is lower,
+ *         or -1 if less than one homomorphic operation is possible
  */
 int
 GNUNET_CRYPTO_paillier_encrypt (const struct GNUNET_CRYPTO_PaillierPublicKey 
*public_key,
                                 const gcry_mpi_t m,
+                                int desired_ops,
                                 struct GNUNET_CRYPTO_PaillierCiphertext 
*ciphertext)
 {
   int possible_opts;

Modified: gnunet/src/util/test_crypto_paillier.c
===================================================================
--- gnunet/src/util/test_crypto_paillier.c      2014-02-03 23:21:25 UTC (rev 
32184)
+++ gnunet/src/util/test_crypto_paillier.c      2014-02-04 10:15:29 UTC (rev 
32185)
@@ -45,7 +45,7 @@
 
   gcry_mpi_randomize (plaintext, GNUNET_CRYPTO_PAILLIER_BITS / 2, 
GCRY_WEAK_RANDOM);
 
-  GNUNET_CRYPTO_paillier_encrypt (&public_key, plaintext, &ciphertext);
+  GNUNET_CRYPTO_paillier_encrypt (&public_key, plaintext, 0, &ciphertext);
 
   GNUNET_CRYPTO_paillier_decrypt (&private_key, &public_key,
                                   &ciphertext, plaintext_result);
@@ -88,16 +88,14 @@
   gcry_mpi_mul_2exp(m2,m2,GNUNET_CRYPTO_PAILLIER_BITS-3);
   gcry_mpi_add(result,m1,m2);
 
-  if (1 != (ret = GNUNET_CRYPTO_paillier_encrypt (&public_key, m1, &c1))){
+  if (1 != (ret = GNUNET_CRYPTO_paillier_encrypt (&public_key, m1, 0, &c1))){
     printf ("GNUNET_CRYPTO_paillier_encrypt 1 failed, should return 1 allowed 
operation, got %d!\n", ret);
     return 1;
   }
-  if (1 != (ret = GNUNET_CRYPTO_paillier_encrypt (&public_key, m2, &c2))){
+  if (1 != (ret = GNUNET_CRYPTO_paillier_encrypt (&public_key, m2, 0, &c2))){
     printf ("GNUNET_CRYPTO_paillier_encrypt 2 failed, should return 1 allowed 
operation, got %d!\n", ret);
     return 1;
   }
-  
-  GNUNET_CRYPTO_paillier_encrypt (&public_key, m2, &c2);
 
   if (0 != (ret = GNUNET_CRYPTO_paillier_hom_add (&public_key, &c1,&c2, 
&c_result))){
     printf ("GNUNET_CRYPTO_paillier_hom_add failed, expected 0 remaining 
operations, got %d!\n", ret);




reply via email to

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