diff options
author | Christian Fuchs <christian.fuchs@cfuchs.net> | 2014-02-04 10:15:29 +0000 |
---|---|---|
committer | Christian Fuchs <christian.fuchs@cfuchs.net> | 2014-02-04 10:15:29 +0000 |
commit | 9728378c983196c86c2fc6b7902964955e41e379 (patch) | |
tree | 1ecd82f008f053fc7bccf7dc0b331dc6a5db2a0e /src/scalarproduct | |
parent | 3a831d404fdb12a6b8aa4c34f04d9c96ac032a03 (diff) | |
download | gnunet-9728378c983196c86c2fc6b7902964955e41e379.tar.gz gnunet-9728378c983196c86c2fc6b7902964955e41e379.zip |
- extended paillier-api to also include caller-suggested maximum supported homs
Diffstat (limited to 'src/scalarproduct')
-rw-r--r-- | src/scalarproduct/gnunet-service-scalarproduct.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/scalarproduct/gnunet-service-scalarproduct.c b/src/scalarproduct/gnunet-service-scalarproduct.c index 063365611..67ddbc06a 100644 --- a/src/scalarproduct/gnunet-service-scalarproduct.c +++ b/src/scalarproduct/gnunet-service-scalarproduct.c | |||
@@ -1280,7 +1280,8 @@ compute_service_response (struct ServiceSession * request, | |||
1280 | gcry_mpi_sub (r[i], my_offset, rand_pi[i]); | 1280 | gcry_mpi_sub (r[i], my_offset, rand_pi[i]); |
1281 | gcry_mpi_sub (r[i], r[i], b_pi[i]); | 1281 | gcry_mpi_sub (r[i], r[i], b_pi[i]); |
1282 | GNUNET_CRYPTO_paillier_encrypt (&request->remote_pubkey, | 1282 | GNUNET_CRYPTO_paillier_encrypt (&request->remote_pubkey, |
1283 | r[i], | 1283 | r[i], |
1284 | 2, | ||
1284 | &R[i]); | 1285 | &R[i]); |
1285 | 1286 | ||
1286 | // E(S - r_pi - b_pi) * E(S + a_pi) == E(2*S + a - r - b) | 1287 | // E(S - r_pi - b_pi) * E(S + a_pi) == E(2*S + a - r - b) |
@@ -1300,12 +1301,14 @@ compute_service_response (struct ServiceSession * request, | |||
1300 | gcry_mpi_sub (r_prime[i], my_offset, rand_pi_prime[i]); | 1301 | gcry_mpi_sub (r_prime[i], my_offset, rand_pi_prime[i]); |
1301 | GNUNET_CRYPTO_paillier_encrypt (&request->remote_pubkey, | 1302 | GNUNET_CRYPTO_paillier_encrypt (&request->remote_pubkey, |
1302 | r_prime[i], | 1303 | r_prime[i], |
1304 | 2, | ||
1303 | &R_prime[i]); | 1305 | &R_prime[i]); |
1304 | 1306 | ||
1305 | // E(S - r_qi) * E(S + a_qi) == E(2*S + a_qi - r_qi) | 1307 | // E(S - r_qi) * E(S + a_qi) == E(2*S + a_qi - r_qi) |
1306 | GNUNET_CRYPTO_paillier_hom_add (&request->remote_pubkey, | 1308 | GNUNET_CRYPTO_paillier_hom_add (&request->remote_pubkey, |
1307 | &R_prime[i], | 1309 | &R_prime[i], |
1308 | &A_pi_prime[i], | 1310 | &A_pi_prime[i], |
1311 | 2, | ||
1309 | &R_prime[i]); | 1312 | &R_prime[i]); |
1310 | } | 1313 | } |
1311 | GNUNET_free (a_pi_prime); | 1314 | GNUNET_free (a_pi_prime); |
@@ -1319,6 +1322,7 @@ compute_service_response (struct ServiceSession * request, | |||
1319 | s_prime = compute_square_sum (rand, count); | 1322 | s_prime = compute_square_sum (rand, count); |
1320 | GNUNET_CRYPTO_paillier_encrypt (&request->remote_pubkey, | 1323 | GNUNET_CRYPTO_paillier_encrypt (&request->remote_pubkey, |
1321 | s_prime, | 1324 | s_prime, |
1325 | 1, | ||
1322 | &S_prime); | 1326 | &S_prime); |
1323 | 1327 | ||
1324 | // Calculate S = E(SUM( (r_i + b_i)^2 )) | 1328 | // Calculate S = E(SUM( (r_i + b_i)^2 )) |
@@ -1327,7 +1331,8 @@ compute_service_response (struct ServiceSession * request, | |||
1327 | } | 1331 | } |
1328 | s = compute_square_sum (rand, count); | 1332 | s = compute_square_sum (rand, count); |
1329 | GNUNET_CRYPTO_paillier_encrypt (&request->remote_pubkey, | 1333 | GNUNET_CRYPTO_paillier_encrypt (&request->remote_pubkey, |
1330 | s[i], | 1334 | s[i], |
1335 | 1, | ||
1331 | &S); | 1336 | &S); |
1332 | 1337 | ||
1333 | // release r and tmp | 1338 | // release r and tmp |