aboutsummaryrefslogtreecommitdiff
path: root/src/secretsharing
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2014-02-17 15:54:59 +0000
committerFlorian Dold <florian.dold@gmail.com>2014-02-17 15:54:59 +0000
commit1d6824b116658d2490aaa1a5d1662e3857e86d3f (patch)
tree261c8c08828cb21a09a8158f389bf3d802757f2d /src/secretsharing
parentd559d7f1d52159cc757336e1890f0ad804a08f3f (diff)
downloadgnunet-1d6824b116658d2490aaa1a5d1662e3857e86d3f.tar.gz
gnunet-1d6824b116658d2490aaa1a5d1662e3857e86d3f.zip
- secretsharing api test for single peer
- fixed wrong endianess conversion
Diffstat (limited to 'src/secretsharing')
-rw-r--r--src/secretsharing/gnunet-service-secretsharing.c3
-rw-r--r--src/secretsharing/secretsharing_api.c3
-rw-r--r--src/secretsharing/secretsharing_common.c4
-rw-r--r--src/secretsharing/test_secretsharing_api.c74
4 files changed, 80 insertions, 4 deletions
diff --git a/src/secretsharing/gnunet-service-secretsharing.c b/src/secretsharing/gnunet-service-secretsharing.c
index 435c10b2b..1778b6ca0 100644
--- a/src/secretsharing/gnunet-service-secretsharing.c
+++ b/src/secretsharing/gnunet-service-secretsharing.c
@@ -786,6 +786,9 @@ keygen_round2_conclude (void *cls)
786 786
787 GNUNET_assert (GNUNET_OK == GNUNET_SECRETSHARING_share_write (share, NULL, 0, &share_size)); 787 GNUNET_assert (GNUNET_OK == GNUNET_SECRETSHARING_share_write (share, NULL, 0, &share_size));
788 788
789 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "writing share of size %u\n",
790 (unsigned int) share_size);
791
789 ev = GNUNET_MQ_msg_extra (m, share_size, 792 ev = GNUNET_MQ_msg_extra (m, share_size,
790 GNUNET_MESSAGE_TYPE_SECRETSHARING_CLIENT_SECRET_READY); 793 GNUNET_MESSAGE_TYPE_SECRETSHARING_CLIENT_SECRET_READY);
791 794
diff --git a/src/secretsharing/secretsharing_api.c b/src/secretsharing/secretsharing_api.c
index d46d24e9d..6e347f6da 100644
--- a/src/secretsharing/secretsharing_api.c
+++ b/src/secretsharing/secretsharing_api.c
@@ -144,6 +144,9 @@ handle_secret_ready (void *cls, const struct GNUNET_MessageHeader *msg)
144 const struct GNUNET_SECRETSHARING_SecretReadyMessage *m = (const void *) msg; 144 const struct GNUNET_SECRETSHARING_SecretReadyMessage *m = (const void *) msg;
145 size_t share_size; 145 size_t share_size;
146 146
147 LOG (GNUNET_ERROR_TYPE_DEBUG, "got secret ready message of size %u\n",
148 ntohs (m->header.size));
149
147 share_size = ntohs (m->header.size) - sizeof *m; 150 share_size = ntohs (m->header.size) - sizeof *m;
148 151
149 share = GNUNET_SECRETSHARING_share_read (&m[1], share_size, NULL); 152 share = GNUNET_SECRETSHARING_share_read (&m[1], share_size, NULL);
diff --git a/src/secretsharing/secretsharing_common.c b/src/secretsharing/secretsharing_common.c
index 7fe8f4666..2f5b3f583 100644
--- a/src/secretsharing/secretsharing_common.c
+++ b/src/secretsharing/secretsharing_common.c
@@ -62,7 +62,7 @@ GNUNET_SECRETSHARING_share_read (const void *data, size_t len, size_t *readlen)
62 p += n; 62 p += n;
63 63
64 n = share->num_peers * sizeof (struct GNUNET_SECRETSHARING_FieldElement); 64 n = share->num_peers * sizeof (struct GNUNET_SECRETSHARING_FieldElement);
65 share->sigmas= GNUNET_malloc (n); 65 share->sigmas = GNUNET_malloc (n);
66 memcpy (share->sigmas, p, n); 66 memcpy (share->sigmas, p, n);
67 p += n; 67 p += n;
68 68
@@ -94,7 +94,7 @@ GNUNET_SECRETSHARING_share_write (const struct GNUNET_SECRETSHARING_Share *share
94 char *p; 94 char *p;
95 int n; 95 int n;
96 96
97 payload_size = ntohs (share->num_peers) * 97 payload_size = share->num_peers *
98 (sizeof (uint16_t) + sizeof (struct GNUNET_SECRETSHARING_FieldElement) + 98 (sizeof (uint16_t) + sizeof (struct GNUNET_SECRETSHARING_FieldElement) +
99 sizeof (struct GNUNET_PeerIdentity)); 99 sizeof (struct GNUNET_PeerIdentity));
100 100
diff --git a/src/secretsharing/test_secretsharing_api.c b/src/secretsharing/test_secretsharing_api.c
index a6f3cb127..d131805e7 100644
--- a/src/secretsharing/test_secretsharing_api.c
+++ b/src/secretsharing/test_secretsharing_api.c
@@ -1,6 +1,6 @@
1/* 1/*
2 This file is part of GNUnet. 2 This file is part of GNUnet.
3 (C) 2013 Christian Grothoff (and other contributing authors) 3 (C) 2014 Christian Grothoff (and other contributing authors)
4 4
5 GNUnet is free software; you can redistribute it and/or modify 5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published 6 it under the terms of the GNU General Public License as published
@@ -24,10 +24,80 @@
24 */ 24 */
25#include "platform.h" 25#include "platform.h"
26#include "gnunet_util_lib.h" 26#include "gnunet_util_lib.h"
27#include "gnunet_testing_lib.h"
28#include "gnunet_secretsharing_service.h"
29
30
31static int success;
32
33static struct GNUNET_SECRETSHARING_Session *keygen;
34
35
36static void secret_ready_cb (void *cls,
37 struct GNUNET_SECRETSHARING_Share *my_share,
38 struct GNUNET_SECRETSHARING_PublicKey *public_key,
39 unsigned int num_ready_peers,
40 struct GNUNET_PeerIdentity *ready_peers)
41{
42 keygen = NULL;
43 if (num_ready_peers == 1)
44 success = 1;
45 // FIXME: check that our share is valid, which we can do as there's only
46 // one peer.
47 GNUNET_SCHEDULER_shutdown ();
48}
49
50static void
51handle_shutdown (void *cls,
52 const struct GNUNET_SCHEDULER_TaskContext * tc)
53{
54 if (NULL != keygen)
55 {
56 GNUNET_SECRETSHARING_session_destroy (keygen);
57 keygen = NULL;
58 }
59}
60
61static void
62run (void *cls,
63 const struct GNUNET_CONFIGURATION_Handle *cfg,
64 struct GNUNET_TESTING_Peer *peer)
65{
66 struct GNUNET_HashCode session_id;
67 struct GNUNET_TIME_Absolute start;
68 struct GNUNET_TIME_Absolute deadline;
69
70 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
71 handle_shutdown, NULL);
72
73 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "testing secretsharing api\n");
74
75 GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK, &session_id);
76
77 start = GNUNET_TIME_absolute_get ();
78 deadline = GNUNET_TIME_absolute_add (start, GNUNET_TIME_UNIT_SECONDS);
79
80 keygen = GNUNET_SECRETSHARING_create_session (cfg,
81 0, NULL, /* only the local peer */
82 &session_id,
83 start, deadline,
84 1,
85 secret_ready_cb, NULL);
86
87
88}
89
27 90
28int 91int
29main (int argc, char **argv) 92main (int argc, char **argv)
30{ 93{
31 return 0; 94
95 int ret;
96 ret = GNUNET_TESTING_peer_run ("test_secretsharing_api",
97 "test_secretsharing.conf",
98 &run, NULL);
99 if (0 != ret)
100 return ret;
101 return (GNUNET_YES == success) ? 0 : 1;
32} 102}
33 103