[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r36324 - gnunet/src/scalarproduct
From: |
gnunet |
Subject: |
[GNUnet-SVN] r36324 - gnunet/src/scalarproduct |
Date: |
Sat, 5 Sep 2015 21:20:06 +0200 |
Author: grothoff
Date: 2015-09-05 21:20:06 +0200 (Sat, 05 Sep 2015)
New Revision: 36324
Modified:
gnunet/src/scalarproduct/Makefile.am
gnunet/src/scalarproduct/test_ecc_scalarproduct.c
Log:
add testcase for SP logic
Modified: gnunet/src/scalarproduct/Makefile.am
===================================================================
--- gnunet/src/scalarproduct/Makefile.am 2015-09-05 19:00:26 UTC (rev
36323)
+++ gnunet/src/scalarproduct/Makefile.am 2015-09-05 19:20:06 UTC (rev
36324)
@@ -114,4 +114,5 @@
test_ecc_scalarproduct_SOURCES = \
test_ecc_scalarproduct.c
test_ecc_scalarproduct_LDADD = \
- $(top_builddir)/src/util/libgnunetutil.la
+ $(top_builddir)/src/util/libgnunetutil.la \
+ -lgcrypt
Modified: gnunet/src/scalarproduct/test_ecc_scalarproduct.c
===================================================================
--- gnunet/src/scalarproduct/test_ecc_scalarproduct.c 2015-09-05 19:00:26 UTC
(rev 36323)
+++ gnunet/src/scalarproduct/test_ecc_scalarproduct.c 2015-09-05 19:20:06 UTC
(rev 36324)
@@ -27,7 +27,12 @@
#include "gnunet_util_lib.h"
#include <gcrypt.h>
+/**
+ * Global context.
+ */
+static struct GNUNET_CRYPTO_EccDlogContext *edc;
+
/**
* Perform SP calculation.
*
@@ -39,7 +44,110 @@
test_sp (const unsigned int *avec,
const unsigned int *bvec)
{
- return -1;
+ unsigned int len;
+ unsigned int i;
+ gcry_mpi_t a;
+ gcry_mpi_t a_inv;
+ gcry_mpi_t ri;
+ gcry_mpi_t val;
+ gcry_mpi_point_t *g;
+ gcry_mpi_point_t *h;
+ gcry_mpi_point_t pg;
+ gcry_mpi_point_t ph;
+ gcry_mpi_point_t pgi;
+ gcry_mpi_point_t gsp;
+ int sp;
+
+ /* determine length */
+ for (len=0;0 != avec[len];len++) ;
+ if (0 == len)
+ return 0;
+
+ /* Alice */
+ GNUNET_CRYPTO_ecc_rnd_mpi (edc,
+ &a, &a_inv);
+ g = GNUNET_new_array (len,
+ gcry_mpi_point_t);
+ h = GNUNET_new_array (len,
+ gcry_mpi_point_t);
+ 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);
+ }
+
+ /* Bob */
+ val = gcry_mpi_new (0);
+ gcry_mpi_set_ui (val, bvec[0]);
+ pg = GNUNET_CRYPTO_ecc_pmul_mpi (edc,
+ g[0],
+ val);
+ ph = GNUNET_CRYPTO_ecc_pmul_mpi (edc,
+ h[0],
+ val);
+ for (i=1;i<len;i++)
+ {
+ gcry_mpi_point_t m;
+ gcry_mpi_point_t tmp;
+
+ gcry_mpi_set_ui (val, bvec[i]);
+ m = GNUNET_CRYPTO_ecc_pmul_mpi (edc,
+ g[i],
+ val);
+ tmp = GNUNET_CRYPTO_ecc_add (edc,
+ m,
+ pg);
+ gcry_mpi_point_release (m);
+ gcry_mpi_point_release (pg);
+ gcry_mpi_point_release (g[i]);
+ pg = tmp;
+
+ m = GNUNET_CRYPTO_ecc_pmul_mpi (edc,
+ h[i],
+ val);
+ tmp = GNUNET_CRYPTO_ecc_add (edc,
+ m,
+ ph);
+ gcry_mpi_point_release (m);
+ gcry_mpi_point_release (ph);
+ gcry_mpi_point_release (h[i]);
+ ph = tmp;
+ }
+ gcry_mpi_release (val);
+ GNUNET_free (g);
+ GNUNET_free (h);
+
+ /* Alice */
+ pgi = GNUNET_CRYPTO_ecc_pmul_mpi (edc,
+ pg,
+ a_inv);
+ gsp = GNUNET_CRYPTO_ecc_add (edc,
+ pgi,
+ ph);
+ gcry_mpi_point_release (pgi);
+ gcry_mpi_point_release (ph);
+ sp = GNUNET_CRYPTO_ecc_dlog (edc,
+ gsp);
+ gcry_mpi_point_release (gsp);
+ return sp;
}
@@ -51,11 +159,10 @@
static unsigned int v35[] = { 3, 5, 0 };
static unsigned int v24[] = { 2, 4, 0 };
- if (1)
- return 0; // disable for now
GNUNET_log_setup ("test-ecc-scalarproduct",
"WARNING",
NULL);
+ edc = GNUNET_CRYPTO_ecc_dlog_prepare (128, 128);
GNUNET_assert ( 2 == test_sp (v11, v11));
GNUNET_assert ( 4 == test_sp (v22, v11));
GNUNET_assert ( 8 == test_sp (v35, v11));
@@ -62,6 +169,7 @@
GNUNET_assert (26 == test_sp (v35, v24));
GNUNET_assert (26 == test_sp (v24, v35));
GNUNET_assert (16 == test_sp (v22, v35));
+ GNUNET_CRYPTO_ecc_dlog_release (edc);
return 0;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r36324 - gnunet/src/scalarproduct,
gnunet <=