[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r29991 - gnunet/src/scalarproduct
From: |
gnunet |
Subject: |
[GNUnet-SVN] r29991 - gnunet/src/scalarproduct |
Date: |
Tue, 8 Oct 2013 15:55:23 +0200 |
Author: cfuchs
Date: 2013-10-08 15:55:23 +0200 (Tue, 08 Oct 2013)
New Revision: 29991
Modified:
gnunet/src/scalarproduct/gnunet-service-scalarproduct.c
Log:
more multipart work
Modified: gnunet/src/scalarproduct/gnunet-service-scalarproduct.c
===================================================================
--- gnunet/src/scalarproduct/gnunet-service-scalarproduct.c 2013-10-08
13:54:26 UTC (rev 29990)
+++ gnunet/src/scalarproduct/gnunet-service-scalarproduct.c 2013-10-08
13:55:23 UTC (rev 29991)
@@ -2190,7 +2190,6 @@
struct ServiceSession * session;
const struct GNUNET_SCALARPRODUCT_service_response * msg = (const struct
GNUNET_SCALARPRODUCT_service_response *) message;
unsigned char * current;
- uint32_t count;
gcry_mpi_t s = NULL;
gcry_mpi_t s_prime = NULL;
size_t read;
@@ -2208,9 +2207,8 @@
return GNUNET_SYSERR;
}
- count = session->used_element_count;
session->product = NULL;
- session->state = SERVICE_RESPONSE_RECEIVED;
+ session->state = WAITING_FOR_MULTIPART_TRANSMISSION;
//we need at least a peer and one message id to compare
if (sizeof (struct GNUNET_SCALARPRODUCT_service_response) > ntohs
(msg->header.size)) {
@@ -2222,11 +2220,11 @@
+ 2 * contained_element_count * PAILLIER_ELEMENT_LENGTH
+ 2 * PAILLIER_ELEMENT_LENGTH;
//sanity check: is the message as long as the message_count fields suggests?
- if ((ntohs (msg->header.size) != msg_size) || (count !=
contained_element_count)) {
+ if ((ntohs (msg->header.size) != msg_size) || (session->used_element_count <
contained_element_count)) {
GNUNET_break_op (0);
goto invalid_msg;
}
-
+ session->transferred_element_count = contained_element_count;
//convert s
current = (unsigned char *) &msg[1];
if (0 != (rc = gcry_mpi_scan (&s, GCRYMPI_FMT_USG, current,
@@ -2244,10 +2242,10 @@
goto invalid_msg;
}
current += PAILLIER_ELEMENT_LENGTH;
-
r = GNUNET_malloc (sizeof (gcry_mpi_t) * count);
- // Convert each kp[] to its MPI_value
- for (i = 0; i < count; i++) {
+ r_prime = GNUNET_malloc (sizeof (gcry_mpi_t) * count);
+ // Convert each k[][perm] to its MPI_value
+ for (i = 0; i < contained_element_count; i++) {
if (0 != (rc = gcry_mpi_scan (&r[i], GCRYMPI_FMT_USG, current,
PAILLIER_ELEMENT_LENGTH, &read))) {
LOG_GCRY (GNUNET_ERROR_TYPE_DEBUG, "gcry_mpi_scan", rc);
@@ -2255,12 +2253,6 @@
goto invalid_msg;
}
current += PAILLIER_ELEMENT_LENGTH;
- }
-
-
- r_prime = GNUNET_malloc (sizeof (gcry_mpi_t) * count);
- // Convert each kq[] to its MPI_value
- for (i = 0; i < count; i++) {
if (0 != (rc = gcry_mpi_scan (&r_prime[i], GCRYMPI_FMT_USG, current,
PAILLIER_ELEMENT_LENGTH, &read))) {
LOG_GCRY (GNUNET_ERROR_TYPE_DEBUG, "gcry_mpi_scan", rc);
@@ -2269,16 +2261,20 @@
}
current += PAILLIER_ELEMENT_LENGTH;
}
- session->product = compute_scalar_product (session, r, r_prime, s, s_prime);
-
+ if (session->transferred_element_count == session->used_element_count){
+ session->state = SERVICE_RESPONSE_RECEIVED;
+ session->product = compute_scalar_product (session, r, r_prime, s,
s_prime);
+ return GNUNET_SYSERR;
+ }
+ return GNUNET_OK;
invalid_msg:
if (s)
gcry_mpi_release (s);
if (s_prime)
gcry_mpi_release (s_prime);
- for (i = 0; r && i < count; i++)
+ for (i = 0; r && i < contained_element_count; i++)
if (r[i]) gcry_mpi_release (r[i]);
- for (i = 0; r_prime && i < count; i++)
+ for (i = 0; r_prime && i < contained_element_count; i++)
if (r_prime[i]) gcry_mpi_release (r_prime[i]);
GNUNET_free_non_null (r);
GNUNET_free_non_null (r_prime);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r29991 - gnunet/src/scalarproduct,
gnunet <=