diff options
author | Christian Fuchs <christian.fuchs@cfuchs.net> | 2014-01-29 14:28:07 +0000 |
---|---|---|
committer | Christian Fuchs <christian.fuchs@cfuchs.net> | 2014-01-29 14:28:07 +0000 |
commit | 1d5ab4f4f4fe1d86a10cd9bd95464dcfbff3da8e (patch) | |
tree | e959ae4772e51f32bd11a8fff1921e4dff1d6cb9 /src | |
parent | ecaa90d24cde249ab9c739713bfc37f6b108b7e7 (diff) | |
download | gnunet-1d5ab4f4f4fe1d86a10cd9bd95464dcfbff3da8e.tar.gz gnunet-1d5ab4f4f4fe1d86a10cd9bd95464dcfbff3da8e.zip |
- re-added testcase for crypto-paillier
- fixed remaining pailier-test bug
- now: achieve world domination or off to new shores
Diffstat (limited to 'src')
-rw-r--r-- | src/util/Makefile.am | 1 | ||||
-rw-r--r-- | src/util/crypto_paillier.c | 13 | ||||
-rw-r--r-- | src/util/test_crypto_paillier.c | 25 |
3 files changed, 23 insertions, 16 deletions
diff --git a/src/util/Makefile.am b/src/util/Makefile.am index 3c49c0b65..acebb39da 100644 --- a/src/util/Makefile.am +++ b/src/util/Makefile.am | |||
@@ -245,6 +245,7 @@ check_PROGRAMS = \ | |||
245 | test_crypto_ecdhe \ | 245 | test_crypto_ecdhe \ |
246 | test_crypto_hash \ | 246 | test_crypto_hash \ |
247 | test_crypto_hkdf \ | 247 | test_crypto_hkdf \ |
248 | test_crypto_paillier \ | ||
248 | test_crypto_random \ | 249 | test_crypto_random \ |
249 | test_disk \ | 250 | test_disk \ |
250 | test_getopt \ | 251 | test_getopt \ |
diff --git a/src/util/crypto_paillier.c b/src/util/crypto_paillier.c index e83bcb4bb..8a9ea5040 100644 --- a/src/util/crypto_paillier.c +++ b/src/util/crypto_paillier.c | |||
@@ -45,8 +45,8 @@ GNUNET_CRYPTO_paillier_create (struct GNUNET_CRYPTO_PaillierPublicKey *public_ke | |||
45 | gcry_mpi_t phi; | 45 | gcry_mpi_t phi; |
46 | gcry_mpi_t n; | 46 | gcry_mpi_t n; |
47 | 47 | ||
48 | GNUNET_assert (NULL != (phi = gcry_mpi_new (GNUNET_CRYPTO_PAILLIER_BITS))); | 48 | GNUNET_assert (NULL != (phi = gcry_mpi_new (0))); |
49 | GNUNET_assert (NULL != (n = gcry_mpi_new (GNUNET_CRYPTO_PAILLIER_BITS))); | 49 | GNUNET_assert (NULL != (n = gcry_mpi_new (0))); |
50 | 50 | ||
51 | p = q = NULL; | 51 | p = q = NULL; |
52 | 52 | ||
@@ -113,15 +113,14 @@ GNUNET_CRYPTO_paillier_encrypt (const struct GNUNET_CRYPTO_PaillierPublicKey *pu | |||
113 | GNUNET_assert (NULL != (tmp1 = gcry_mpi_set_ui(NULL, 1))); | 113 | GNUNET_assert (NULL != (tmp1 = gcry_mpi_set_ui(NULL, 1))); |
114 | GNUNET_assert (NULL != (tmp2 = gcry_mpi_set_ui(NULL, 2))); | 114 | GNUNET_assert (NULL != (tmp2 = gcry_mpi_set_ui(NULL, 2))); |
115 | gcry_mpi_mul_2exp(tmp1,tmp1,GNUNET_CRYPTO_PAILLIER_BITS); | 115 | gcry_mpi_mul_2exp(tmp1,tmp1,GNUNET_CRYPTO_PAILLIER_BITS); |
116 | for (possible_opts = 0; gcry_mpi_cmp(tmp1,m) > 0; possible_opts++){ | 116 | |
117 | gcry_mpi_div(tmp1, NULL, tmp1, tmp2 ,0); | 117 | for (possible_opts = -1; gcry_mpi_cmp(tmp1, m) > 0; possible_opts++){ |
118 | gcry_mpi_div(tmp1, NULL, tmp1, tmp2, 0); | ||
118 | } | 119 | } |
119 | gcry_mpi_release(tmp1); | 120 | gcry_mpi_release(tmp1); |
120 | gcry_mpi_release(tmp2); | 121 | gcry_mpi_release(tmp2); |
121 | if (0 >= possible_opts) | 122 | if (possible_opts < 1) |
122 | { | ||
123 | return -1; | 123 | return -1; |
124 | } | ||
125 | else | 124 | else |
126 | // reduce by one to guarantee the final homomorphic operation | 125 | // reduce by one to guarantee the final homomorphic operation |
127 | ciphertext->remaining_ops = htonl(possible_opts); | 126 | ciphertext->remaining_ops = htonl(possible_opts); |
diff --git a/src/util/test_crypto_paillier.c b/src/util/test_crypto_paillier.c index 47bd09002..aaefd5ac0 100644 --- a/src/util/test_crypto_paillier.c +++ b/src/util/test_crypto_paillier.c | |||
@@ -42,15 +42,19 @@ main (int argc, char *argv[]) | |||
42 | struct GNUNET_CRYPTO_PaillierCiphertext c_result; | 42 | struct GNUNET_CRYPTO_PaillierCiphertext c_result; |
43 | struct GNUNET_CRYPTO_PaillierPublicKey public_key; | 43 | struct GNUNET_CRYPTO_PaillierPublicKey public_key; |
44 | struct GNUNET_CRYPTO_PaillierPrivateKey private_key; | 44 | struct GNUNET_CRYPTO_PaillierPrivateKey private_key; |
45 | 45 | ||
46 | GNUNET_CRYPTO_paillier_create (&public_key, &private_key); | 46 | GNUNET_CRYPTO_paillier_create (&public_key, &private_key); |
47 | 47 | ||
48 | GNUNET_assert (NULL != (m1 = gcry_mpi_new (GNUNET_CRYPTO_PAILLIER_BITS-2))); | 48 | GNUNET_assert (NULL != (m1 = gcry_mpi_new (0))); |
49 | GNUNET_assert (NULL != (m2 = gcry_mpi_new (GNUNET_CRYPTO_PAILLIER_BITS-2))); | 49 | GNUNET_assert (NULL != (m2 = gcry_mpi_new (0))); |
50 | GNUNET_assert (NULL != (result = gcry_mpi_new (GNUNET_CRYPTO_PAILLIER_BITS))); | 50 | GNUNET_assert (NULL != (result = gcry_mpi_new (0))); |
51 | GNUNET_assert (NULL != (hom_result = gcry_mpi_new (GNUNET_CRYPTO_PAILLIER_BITS))); | 51 | GNUNET_assert (NULL != (hom_result = gcry_mpi_new (0))); |
52 | gcry_mpi_randomize (m1, GNUNET_CRYPTO_PAILLIER_BITS-2, GCRY_WEAK_RANDOM); | 52 | //gcry_mpi_randomize (m1, GNUNET_CRYPTO_PAILLIER_BITS-2, GCRY_WEAK_RANDOM); |
53 | gcry_mpi_randomize (m2, GNUNET_CRYPTO_PAILLIER_BITS-2, GCRY_WEAK_RANDOM); | 53 | m1 = gcry_mpi_set_ui(m1,1); |
54 | gcry_mpi_mul_2exp(m1,m1,GNUNET_CRYPTO_PAILLIER_BITS-2); | ||
55 | //gcry_mpi_randomize (m2, GNUNET_CRYPTO_PAILLIER_BITS-2, GCRY_WEAK_RANDOM); | ||
56 | m2 = gcry_mpi_set_ui(m2,1); | ||
57 | gcry_mpi_mul_2exp(m2,m2,GNUNET_CRYPTO_PAILLIER_BITS-2); | ||
54 | gcry_mpi_add(result,m1,m2); | 58 | gcry_mpi_add(result,m1,m2); |
55 | 59 | ||
56 | if (1 != (ret = GNUNET_CRYPTO_paillier_encrypt (&public_key, m1, &c1))){ | 60 | if (1 != (ret = GNUNET_CRYPTO_paillier_encrypt (&public_key, m1, &c1))){ |
@@ -71,10 +75,13 @@ main (int argc, char *argv[]) | |||
71 | 75 | ||
72 | GNUNET_CRYPTO_paillier_decrypt (&private_key, &public_key, | 76 | GNUNET_CRYPTO_paillier_decrypt (&private_key, &public_key, |
73 | &c_result, hom_result); | 77 | &c_result, hom_result); |
74 | 78 | ||
75 | if (0 != gcry_mpi_cmp(result, hom_result)) | 79 | gcry_log_debugmpi("\n", hom_result); |
80 | gcry_log_debugmpi("\n", result); | ||
81 | if (0 != gcry_mpi_cmp(result, hom_result)){ | ||
76 | printf ("GNUNET_CRYPTO_paillier miscalculated!\n"); | 82 | printf ("GNUNET_CRYPTO_paillier miscalculated!\n"); |
77 | return 1; | 83 | return 1; |
84 | } | ||
78 | 85 | ||
79 | return 0; | 86 | return 0; |
80 | } | 87 | } |