commit ba292e84786ed42902a56cd03037ba7064b194fe
parent 9bf064c70c54f78dc605bc247ac24d64863ca4f1
Author: Christian Grothoff <christian@grothoff.org>
Date: Sat, 5 Sep 2015 19:32:50 +0000
-fixing ECC calculation
Diffstat:
2 files changed, 20 insertions(+), 13 deletions(-)
diff --git a/src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c b/src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c
@@ -469,7 +469,15 @@ compute_scalar_product (struct AliceServiceSession *session,
return NULL;
}
ret = gcry_mpi_new (0);
- gcry_mpi_set_ui (ret, ai_bi);
+ if (ai_bi > 0)
+ {
+ gcry_mpi_set_ui (ret, ai_bi);
+ }
+ else
+ {
+ gcry_mpi_set_ui (ret, - ai_bi);
+ gcry_mpi_neg (ret, ret);
+ }
return ret;
}
@@ -663,14 +671,14 @@ send_alices_cryptodata_message (struct AliceServiceSession *s)
g_i = GNUNET_CRYPTO_ecc_dexp_mpi (edc,
r_i);
/* r_ia = r_i * a */
- gcry_mpi_mul (r_i,
- my_privkey,
- r_ia);
+ gcry_mpi_mul (r_ia,
+ r_i,
+ my_privkey);
gcry_mpi_release (r_i);
/* r_ia_ai = r_ia + a_i */
gcry_mpi_add (r_ia_ai,
- s->sorted_elements[i].value,
- r_ia);
+ r_ia,
+ s->sorted_elements[i].value);
h_i = GNUNET_CRYPTO_ecc_dexp_mpi (edc,
r_ia_ai);
GNUNET_CRYPTO_ecc_point_to_bin (edc,
diff --git a/src/scalarproduct/test_ecc_scalarproduct.c b/src/scalarproduct/test_ecc_scalarproduct.c
@@ -50,6 +50,8 @@ test_sp (const unsigned int *avec,
gcry_mpi_t a_inv;
gcry_mpi_t ri;
gcry_mpi_t val;
+ gcry_mpi_t ria;
+ gcry_mpi_t tmp;
gcry_mpi_point_t *g;
gcry_mpi_point_t *h;
gcry_mpi_point_t pg;
@@ -70,29 +72,26 @@ test_sp (const unsigned int *avec,
gcry_mpi_point_t);
h = GNUNET_new_array (len,
gcry_mpi_point_t);
+ ria = gcry_mpi_new (0);
+ tmp = gcry_mpi_new (0);
for (i=0;i<len;i++)
{
- gcry_mpi_t tmp;
- gcry_mpi_t ria;
-
ri = GNUNET_CRYPTO_ecc_random_mod_n (edc);
g[i] = GNUNET_CRYPTO_ecc_dexp_mpi (edc,
ri);
/* ria = ri * a */
- ria = gcry_mpi_new (0);
gcry_mpi_mul (ria,
ri,
a);
/* tmp = ria + avec[i] */
- tmp = gcry_mpi_new (0);
gcry_mpi_add_ui (tmp,
ria,
avec[i]);
- gcry_mpi_release (ria);
h[i] = GNUNET_CRYPTO_ecc_dexp_mpi (edc,
tmp);
- gcry_mpi_release (tmp);
}
+ gcry_mpi_release (ria);
+ gcry_mpi_release (tmp);
/* Bob */
val = gcry_mpi_new (0);