aboutsummaryrefslogtreecommitdiff
path: root/src/scalarproduct
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2015-09-05 19:32:50 +0000
committerChristian Grothoff <christian@grothoff.org>2015-09-05 19:32:50 +0000
commitba292e84786ed42902a56cd03037ba7064b194fe (patch)
treea6d0e5639c26a2ea337e02692356a5e5f6db2855 /src/scalarproduct
parent9bf064c70c54f78dc605bc247ac24d64863ca4f1 (diff)
downloadgnunet-ba292e84786ed42902a56cd03037ba7064b194fe.tar.gz
gnunet-ba292e84786ed42902a56cd03037ba7064b194fe.zip
-fixing ECC calculation
Diffstat (limited to 'src/scalarproduct')
-rw-r--r--src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c20
-rw-r--r--src/scalarproduct/test_ecc_scalarproduct.c13
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
index 800b1329f..4b17bafee 100644
--- 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,
469 return NULL; 469 return NULL;
470 } 470 }
471 ret = gcry_mpi_new (0); 471 ret = gcry_mpi_new (0);
472 gcry_mpi_set_ui (ret, ai_bi); 472 if (ai_bi > 0)
473 {
474 gcry_mpi_set_ui (ret, ai_bi);
475 }
476 else
477 {
478 gcry_mpi_set_ui (ret, - ai_bi);
479 gcry_mpi_neg (ret, ret);
480 }
473 return ret; 481 return ret;
474} 482}
475 483
@@ -663,14 +671,14 @@ send_alices_cryptodata_message (struct AliceServiceSession *s)
663 g_i = GNUNET_CRYPTO_ecc_dexp_mpi (edc, 671 g_i = GNUNET_CRYPTO_ecc_dexp_mpi (edc,
664 r_i); 672 r_i);
665 /* r_ia = r_i * a */ 673 /* r_ia = r_i * a */
666 gcry_mpi_mul (r_i, 674 gcry_mpi_mul (r_ia,
667 my_privkey, 675 r_i,
668 r_ia); 676 my_privkey);
669 gcry_mpi_release (r_i); 677 gcry_mpi_release (r_i);
670 /* r_ia_ai = r_ia + a_i */ 678 /* r_ia_ai = r_ia + a_i */
671 gcry_mpi_add (r_ia_ai, 679 gcry_mpi_add (r_ia_ai,
672 s->sorted_elements[i].value, 680 r_ia,
673 r_ia); 681 s->sorted_elements[i].value);
674 h_i = GNUNET_CRYPTO_ecc_dexp_mpi (edc, 682 h_i = GNUNET_CRYPTO_ecc_dexp_mpi (edc,
675 r_ia_ai); 683 r_ia_ai);
676 GNUNET_CRYPTO_ecc_point_to_bin (edc, 684 GNUNET_CRYPTO_ecc_point_to_bin (edc,
diff --git a/src/scalarproduct/test_ecc_scalarproduct.c b/src/scalarproduct/test_ecc_scalarproduct.c
index 3d81dbd31..ce6338beb 100644
--- a/src/scalarproduct/test_ecc_scalarproduct.c
+++ b/src/scalarproduct/test_ecc_scalarproduct.c
@@ -50,6 +50,8 @@ test_sp (const unsigned int *avec,
50 gcry_mpi_t a_inv; 50 gcry_mpi_t a_inv;
51 gcry_mpi_t ri; 51 gcry_mpi_t ri;
52 gcry_mpi_t val; 52 gcry_mpi_t val;
53 gcry_mpi_t ria;
54 gcry_mpi_t tmp;
53 gcry_mpi_point_t *g; 55 gcry_mpi_point_t *g;
54 gcry_mpi_point_t *h; 56 gcry_mpi_point_t *h;
55 gcry_mpi_point_t pg; 57 gcry_mpi_point_t pg;
@@ -70,29 +72,26 @@ test_sp (const unsigned int *avec,
70 gcry_mpi_point_t); 72 gcry_mpi_point_t);
71 h = GNUNET_new_array (len, 73 h = GNUNET_new_array (len,
72 gcry_mpi_point_t); 74 gcry_mpi_point_t);
75 ria = gcry_mpi_new (0);
76 tmp = gcry_mpi_new (0);
73 for (i=0;i<len;i++) 77 for (i=0;i<len;i++)
74 { 78 {
75 gcry_mpi_t tmp;
76 gcry_mpi_t ria;
77
78 ri = GNUNET_CRYPTO_ecc_random_mod_n (edc); 79 ri = GNUNET_CRYPTO_ecc_random_mod_n (edc);
79 g[i] = GNUNET_CRYPTO_ecc_dexp_mpi (edc, 80 g[i] = GNUNET_CRYPTO_ecc_dexp_mpi (edc,
80 ri); 81 ri);
81 /* ria = ri * a */ 82 /* ria = ri * a */
82 ria = gcry_mpi_new (0);
83 gcry_mpi_mul (ria, 83 gcry_mpi_mul (ria,
84 ri, 84 ri,
85 a); 85 a);
86 /* tmp = ria + avec[i] */ 86 /* tmp = ria + avec[i] */
87 tmp = gcry_mpi_new (0);
88 gcry_mpi_add_ui (tmp, 87 gcry_mpi_add_ui (tmp,
89 ria, 88 ria,
90 avec[i]); 89 avec[i]);
91 gcry_mpi_release (ria);
92 h[i] = GNUNET_CRYPTO_ecc_dexp_mpi (edc, 90 h[i] = GNUNET_CRYPTO_ecc_dexp_mpi (edc,
93 tmp); 91 tmp);
94 gcry_mpi_release (tmp);
95 } 92 }
93 gcry_mpi_release (ria);
94 gcry_mpi_release (tmp);
96 95
97 /* Bob */ 96 /* Bob */
98 val = gcry_mpi_new (0); 97 val = gcry_mpi_new (0);