aboutsummaryrefslogtreecommitdiff
path: root/src/secretsharing/gnunet-service-secretsharing.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-02-14 11:00:59 +0100
committerChristian Grothoff <christian@grothoff.org>2019-02-14 11:00:59 +0100
commit7ab593ff491129df2e4d438e39a182f3bd96ba47 (patch)
tree434ce6ecbf273bb792902bfe79faf4ac2b2daea0 /src/secretsharing/gnunet-service-secretsharing.c
parentb7433c7e45b47dcff9a8c9d1dfc8966c85bb8f14 (diff)
downloadgnunet-7ab593ff491129df2e4d438e39a182f3bd96ba47.tar.gz
gnunet-7ab593ff491129df2e4d438e39a182f3bd96ba47.zip
mystery solved?
Diffstat (limited to 'src/secretsharing/gnunet-service-secretsharing.c')
-rw-r--r--src/secretsharing/gnunet-service-secretsharing.c35
1 files changed, 23 insertions, 12 deletions
diff --git a/src/secretsharing/gnunet-service-secretsharing.c b/src/secretsharing/gnunet-service-secretsharing.c
index e423217f2..011e79b27 100644
--- a/src/secretsharing/gnunet-service-secretsharing.c
+++ b/src/secretsharing/gnunet-service-secretsharing.c
@@ -984,7 +984,8 @@ restore_fair (const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
984 984
985 985
986static void 986static void
987get_fair_encryption_challenge (const struct GNUNET_SECRETSHARING_FairEncryption *fe, gcry_mpi_t e) 987get_fair_encryption_challenge (const struct GNUNET_SECRETSHARING_FairEncryption *fe,
988 gcry_mpi_t *e)
988{ 989{
989 struct { 990 struct {
990 struct GNUNET_CRYPTO_PaillierCiphertext c; 991 struct GNUNET_CRYPTO_PaillierCiphertext c;
@@ -1004,13 +1005,17 @@ get_fair_encryption_challenge (const struct GNUNET_SECRETSHARING_FairEncryption
1004 GNUNET_CRYPTO_hash (&hash_data, 1005 GNUNET_CRYPTO_hash (&hash_data,
1005 sizeof (hash_data), 1006 sizeof (hash_data),
1006 &e_hash); 1007 &e_hash);
1007 GNUNET_CRYPTO_mpi_scan_unsigned (&e, &e_hash, sizeof (struct GNUNET_HashCode)); 1008 /* This allocates "e" */
1008 gcry_mpi_mod (e, e, elgamal_q); 1009 GNUNET_CRYPTO_mpi_scan_unsigned (e,
1010 &e_hash,
1011 sizeof (struct GNUNET_HashCode));
1012 gcry_mpi_mod (*e, *e, elgamal_q);
1009} 1013}
1010 1014
1011 1015
1012static int 1016static int
1013verify_fair (const struct GNUNET_CRYPTO_PaillierPublicKey *ppub, const struct GNUNET_SECRETSHARING_FairEncryption *fe) 1017verify_fair (const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
1018 const struct GNUNET_SECRETSHARING_FairEncryption *fe)
1014{ 1019{
1015 gcry_mpi_t n; 1020 gcry_mpi_t n;
1016 gcry_mpi_t n_sq; 1021 gcry_mpi_t n_sq;
@@ -1028,11 +1033,13 @@ verify_fair (const struct GNUNET_CRYPTO_PaillierPublicKey *ppub, const struct GN
1028 GNUNET_assert (NULL != (n_sq = gcry_mpi_new (0))); 1033 GNUNET_assert (NULL != (n_sq = gcry_mpi_new (0)));
1029 GNUNET_assert (NULL != (tmp1 = gcry_mpi_new (0))); 1034 GNUNET_assert (NULL != (tmp1 = gcry_mpi_new (0)));
1030 GNUNET_assert (NULL != (tmp2 = gcry_mpi_new (0))); 1035 GNUNET_assert (NULL != (tmp2 = gcry_mpi_new (0)));
1031 GNUNET_assert (NULL != (e = gcry_mpi_new (0)));
1032 1036
1033 get_fair_encryption_challenge (fe, e); 1037 get_fair_encryption_challenge (fe,
1038 &e /* this allocates e */);
1034 1039
1035 GNUNET_CRYPTO_mpi_scan_unsigned (&n, ppub, sizeof (struct GNUNET_CRYPTO_PaillierPublicKey)); 1040 GNUNET_CRYPTO_mpi_scan_unsigned (&n,
1041 ppub,
1042 sizeof (struct GNUNET_CRYPTO_PaillierPublicKey));
1036 GNUNET_CRYPTO_mpi_scan_unsigned (&t1, fe->t1, GNUNET_CRYPTO_PAILLIER_BITS / 8); 1043 GNUNET_CRYPTO_mpi_scan_unsigned (&t1, fe->t1, GNUNET_CRYPTO_PAILLIER_BITS / 8);
1037 GNUNET_CRYPTO_mpi_scan_unsigned (&z, fe->z, GNUNET_SECRETSHARING_ELGAMAL_BITS / 8); 1044 GNUNET_CRYPTO_mpi_scan_unsigned (&z, fe->z, GNUNET_SECRETSHARING_ELGAMAL_BITS / 8);
1038 GNUNET_CRYPTO_mpi_scan_unsigned (&y, fe->h, GNUNET_SECRETSHARING_ELGAMAL_BITS / 8); 1045 GNUNET_CRYPTO_mpi_scan_unsigned (&y, fe->h, GNUNET_SECRETSHARING_ELGAMAL_BITS / 8);
@@ -1101,7 +1108,9 @@ cleanup:
1101 * @param[out] fe the fair encryption 1108 * @param[out] fe the fair encryption
1102 */ 1109 */
1103static void 1110static void
1104encrypt_fair (gcry_mpi_t v, const struct GNUNET_CRYPTO_PaillierPublicKey *ppub, struct GNUNET_SECRETSHARING_FairEncryption *fe) 1111encrypt_fair (gcry_mpi_t v,
1112 const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
1113 struct GNUNET_SECRETSHARING_FairEncryption *fe)
1105{ 1114{
1106 gcry_mpi_t r; 1115 gcry_mpi_t r;
1107 gcry_mpi_t s; 1116 gcry_mpi_t s;
@@ -1116,6 +1125,7 @@ encrypt_fair (gcry_mpi_t v, const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
1116 gcry_mpi_t Y; 1125 gcry_mpi_t Y;
1117 gcry_mpi_t G; 1126 gcry_mpi_t G;
1118 gcry_mpi_t h; 1127 gcry_mpi_t h;
1128
1119 GNUNET_assert (NULL != (r = gcry_mpi_new (0))); 1129 GNUNET_assert (NULL != (r = gcry_mpi_new (0)));
1120 GNUNET_assert (NULL != (s = gcry_mpi_new (0))); 1130 GNUNET_assert (NULL != (s = gcry_mpi_new (0)));
1121 GNUNET_assert (NULL != (t1 = gcry_mpi_new (0))); 1131 GNUNET_assert (NULL != (t1 = gcry_mpi_new (0)));
@@ -1123,13 +1133,14 @@ encrypt_fair (gcry_mpi_t v, const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
1123 GNUNET_assert (NULL != (z = gcry_mpi_new (0))); 1133 GNUNET_assert (NULL != (z = gcry_mpi_new (0)));
1124 GNUNET_assert (NULL != (w = gcry_mpi_new (0))); 1134 GNUNET_assert (NULL != (w = gcry_mpi_new (0)));
1125 GNUNET_assert (NULL != (n_sq = gcry_mpi_new (0))); 1135 GNUNET_assert (NULL != (n_sq = gcry_mpi_new (0)));
1126 GNUNET_assert (NULL != (e = gcry_mpi_new (0)));
1127 GNUNET_assert (NULL != (u = gcry_mpi_new (0))); 1136 GNUNET_assert (NULL != (u = gcry_mpi_new (0)));
1128 GNUNET_assert (NULL != (Y = gcry_mpi_new (0))); 1137 GNUNET_assert (NULL != (Y = gcry_mpi_new (0)));
1129 GNUNET_assert (NULL != (G = gcry_mpi_new (0))); 1138 GNUNET_assert (NULL != (G = gcry_mpi_new (0)));
1130 GNUNET_assert (NULL != (h = gcry_mpi_new (0))); 1139 GNUNET_assert (NULL != (h = gcry_mpi_new (0)));
1131 1140
1132 GNUNET_CRYPTO_mpi_scan_unsigned (&n, ppub, sizeof (struct GNUNET_CRYPTO_PaillierPublicKey)); 1141 GNUNET_CRYPTO_mpi_scan_unsigned (&n,
1142 ppub,
1143 sizeof (struct GNUNET_CRYPTO_PaillierPublicKey));
1133 gcry_mpi_mul (n_sq, n, n); 1144 gcry_mpi_mul (n_sq, n, n);
1134 gcry_mpi_add_ui (G, n, 1); 1145 gcry_mpi_add_ui (G, n, 1);
1135 1146
@@ -1175,8 +1186,8 @@ encrypt_fair (gcry_mpi_t v, const struct GNUNET_CRYPTO_PaillierPublicKey *ppub,
1175 GNUNET_CRYPTO_PAILLIER_BITS * 2 / 8, 1186 GNUNET_CRYPTO_PAILLIER_BITS * 2 / 8,
1176 t2); 1187 t2);
1177 1188
1178 1189 get_fair_encryption_challenge (fe,
1179 get_fair_encryption_challenge (fe, e); 1190 &e /* This allocates "e" */);
1180 1191
1181 // compute z 1192 // compute z
1182 gcry_mpi_mul (z, e, v); 1193 gcry_mpi_mul (z, e, v);