diff options
author | Christian Grothoff <christian@grothoff.org> | 2015-09-05 19:32:50 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2015-09-05 19:32:50 +0000 |
commit | ba292e84786ed42902a56cd03037ba7064b194fe (patch) | |
tree | a6d0e5639c26a2ea337e02692356a5e5f6db2855 /src/scalarproduct | |
parent | 9bf064c70c54f78dc605bc247ac24d64863ca4f1 (diff) | |
download | gnunet-ba292e84786ed42902a56cd03037ba7064b194fe.tar.gz gnunet-ba292e84786ed42902a56cd03037ba7064b194fe.zip |
-fixing ECC calculation
Diffstat (limited to 'src/scalarproduct')
-rw-r--r-- | src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c | 20 | ||||
-rw-r--r-- | src/scalarproduct/test_ecc_scalarproduct.c | 13 |
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); |