diff options
author | Florian Dold <florian.dold@gmail.com> | 2014-02-17 15:54:59 +0000 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2014-02-17 15:54:59 +0000 |
commit | 1d6824b116658d2490aaa1a5d1662e3857e86d3f (patch) | |
tree | 261c8c08828cb21a09a8158f389bf3d802757f2d /src/secretsharing | |
parent | d559d7f1d52159cc757336e1890f0ad804a08f3f (diff) | |
download | gnunet-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.c | 3 | ||||
-rw-r--r-- | src/secretsharing/secretsharing_api.c | 3 | ||||
-rw-r--r-- | src/secretsharing/secretsharing_common.c | 4 | ||||
-rw-r--r-- | src/secretsharing/test_secretsharing_api.c | 74 |
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 | |||
31 | static int success; | ||
32 | |||
33 | static struct GNUNET_SECRETSHARING_Session *keygen; | ||
34 | |||
35 | |||
36 | static 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 | |||
50 | static void | ||
51 | handle_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 | |||
61 | static void | ||
62 | run (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 | ||
28 | int | 91 | int |
29 | main (int argc, char **argv) | 92 | main (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 | ||