summaryrefslogtreecommitdiff
path: root/src/secretsharing/secretsharing_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/secretsharing/secretsharing_common.c')
-rw-r--r--src/secretsharing/secretsharing_common.c83
1 files changed, 44 insertions, 39 deletions
diff --git a/src/secretsharing/secretsharing_common.c b/src/secretsharing/secretsharing_common.c
index 4707c2462..3003109a4 100644
--- a/src/secretsharing/secretsharing_common.c
+++ b/src/secretsharing/secretsharing_common.c
@@ -30,9 +30,9 @@
30 * @return The share, or NULL on error. 30 * @return The share, or NULL on error.
31 */ 31 */
32struct GNUNET_SECRETSHARING_Share * 32struct GNUNET_SECRETSHARING_Share *
33GNUNET_SECRETSHARING_share_read(const void *data, 33GNUNET_SECRETSHARING_share_read (const void *data,
34 size_t len, 34 size_t len,
35 size_t *readlen) 35 size_t *readlen)
36{ 36{
37 struct GNUNET_SECRETSHARING_Share *share; 37 struct GNUNET_SECRETSHARING_Share *share;
38 const struct GNUNET_SECRETSHARING_ShareHeaderNBO *sh = data; 38 const struct GNUNET_SECRETSHARING_ShareHeaderNBO *sh = data;
@@ -40,40 +40,41 @@ GNUNET_SECRETSHARING_share_read(const void *data,
40 size_t n; 40 size_t n;
41 uint16_t payload_size; 41 uint16_t payload_size;
42 42
43 payload_size = ntohs(sh->num_peers) * 43 payload_size = ntohs (sh->num_peers)
44 (sizeof(uint16_t) + sizeof(struct GNUNET_SECRETSHARING_FieldElement) + 44 * (sizeof(uint16_t) + sizeof(struct
45 sizeof(struct GNUNET_PeerIdentity)); 45 GNUNET_SECRETSHARING_FieldElement)
46 + sizeof(struct GNUNET_PeerIdentity));
46 47
47 if (NULL != readlen) 48 if (NULL != readlen)
48 *readlen = payload_size + sizeof *sh; 49 *readlen = payload_size + sizeof *sh;
49 50
50 share = GNUNET_new(struct GNUNET_SECRETSHARING_Share); 51 share = GNUNET_new (struct GNUNET_SECRETSHARING_Share);
51 52
52 share->threshold = ntohs(sh->threshold); 53 share->threshold = ntohs (sh->threshold);
53 share->num_peers = ntohs(sh->num_peers); 54 share->num_peers = ntohs (sh->num_peers);
54 share->my_peer = ntohs(sh->my_peer); 55 share->my_peer = ntohs (sh->my_peer);
55 56
56 share->my_share = sh->my_share; 57 share->my_share = sh->my_share;
57 share->public_key = sh->public_key; 58 share->public_key = sh->public_key;
58 59
59 p = (const char *)&sh[1]; 60 p = (const char *) &sh[1];
60 61
61 n = share->num_peers * sizeof(struct GNUNET_PeerIdentity); 62 n = share->num_peers * sizeof(struct GNUNET_PeerIdentity);
62 share->peers = GNUNET_new_array(share->num_peers, 63 share->peers = GNUNET_new_array (share->num_peers,
63 struct GNUNET_PeerIdentity); 64 struct GNUNET_PeerIdentity);
64 GNUNET_memcpy(share->peers, p, n); 65 GNUNET_memcpy (share->peers, p, n);
65 p += n; 66 p += n;
66 67
67 n = share->num_peers * sizeof(struct GNUNET_SECRETSHARING_FieldElement); 68 n = share->num_peers * sizeof(struct GNUNET_SECRETSHARING_FieldElement);
68 share->sigmas = GNUNET_new_array(share->num_peers, 69 share->sigmas = GNUNET_new_array (share->num_peers,
69 struct GNUNET_SECRETSHARING_FieldElement); 70 struct GNUNET_SECRETSHARING_FieldElement);
70 GNUNET_memcpy(share->sigmas, p, n); 71 GNUNET_memcpy (share->sigmas, p, n);
71 p += n; 72 p += n;
72 73
73 n = share->num_peers * sizeof(uint16_t); 74 n = share->num_peers * sizeof(uint16_t);
74 share->original_indices = GNUNET_new_array(share->num_peers, 75 share->original_indices = GNUNET_new_array (share->num_peers,
75 uint16_t); 76 uint16_t);
76 GNUNET_memcpy(share->original_indices, p, n); 77 GNUNET_memcpy (share->original_indices, p, n);
77 78
78 return share; 79 return share;
79} 80}
@@ -91,63 +92,67 @@ GNUNET_SECRETSHARING_share_read(const void *data,
91 * @return #GNUNET_OK on success, #GNUNET_SYSERR on failure. 92 * @return #GNUNET_OK on success, #GNUNET_SYSERR on failure.
92 */ 93 */
93int 94int
94GNUNET_SECRETSHARING_share_write(const struct GNUNET_SECRETSHARING_Share *share, 95GNUNET_SECRETSHARING_share_write (const struct
95 void *buf, size_t buflen, size_t *writelen) 96 GNUNET_SECRETSHARING_Share *share,
97 void *buf, size_t buflen, size_t *writelen)
96{ 98{
97 uint16_t payload_size; 99 uint16_t payload_size;
98 struct GNUNET_SECRETSHARING_ShareHeaderNBO *sh; 100 struct GNUNET_SECRETSHARING_ShareHeaderNBO *sh;
99 char *p; 101 char *p;
100 int n; 102 int n;
101 103
102 payload_size = share->num_peers * 104 payload_size = share->num_peers
103 (sizeof(uint16_t) + sizeof(struct GNUNET_SECRETSHARING_FieldElement) + 105 * (sizeof(uint16_t) + sizeof(struct
104 sizeof(struct GNUNET_PeerIdentity)); 106 GNUNET_SECRETSHARING_FieldElement)
107 + sizeof(struct GNUNET_PeerIdentity));
105 108
106 if (NULL != writelen) 109 if (NULL != writelen)
107 *writelen = payload_size + sizeof(struct GNUNET_SECRETSHARING_ShareHeaderNBO); 110 *writelen = payload_size + sizeof(struct
111 GNUNET_SECRETSHARING_ShareHeaderNBO);
108 112
109 /* just a query for the writelen */ 113 /* just a query for the writelen */
110 if (buf == NULL) 114 if (buf == NULL)
111 return GNUNET_OK; 115 return GNUNET_OK;
112 116
113 /* wrong buffer size */ 117 /* wrong buffer size */
114 if (buflen < payload_size + sizeof(struct GNUNET_SECRETSHARING_ShareHeaderNBO)) 118 if (buflen < payload_size + sizeof(struct
119 GNUNET_SECRETSHARING_ShareHeaderNBO))
115 return GNUNET_SYSERR; 120 return GNUNET_SYSERR;
116 121
117 sh = buf; 122 sh = buf;
118 123
119 sh->threshold = htons(share->threshold); 124 sh->threshold = htons (share->threshold);
120 sh->num_peers = htons(share->num_peers); 125 sh->num_peers = htons (share->num_peers);
121 sh->my_peer = htons(share->my_peer); 126 sh->my_peer = htons (share->my_peer);
122 127
123 sh->my_share = share->my_share; 128 sh->my_share = share->my_share;
124 sh->public_key = share->public_key; 129 sh->public_key = share->public_key;
125 130
126 p = (void *)&sh[1]; 131 p = (void *) &sh[1];
127 132
128 n = share->num_peers * sizeof(struct GNUNET_PeerIdentity); 133 n = share->num_peers * sizeof(struct GNUNET_PeerIdentity);
129 GNUNET_memcpy(p, share->peers, n); 134 GNUNET_memcpy (p, share->peers, n);
130 p += n; 135 p += n;
131 136
132 n = share->num_peers * sizeof(struct GNUNET_SECRETSHARING_FieldElement); 137 n = share->num_peers * sizeof(struct GNUNET_SECRETSHARING_FieldElement);
133 GNUNET_memcpy(p, share->sigmas, n); 138 GNUNET_memcpy (p, share->sigmas, n);
134 p += n; 139 p += n;
135 140
136 n = share->num_peers * sizeof(uint16_t); 141 n = share->num_peers * sizeof(uint16_t);
137 GNUNET_memcpy(p, share->original_indices, n); 142 GNUNET_memcpy (p, share->original_indices, n);
138 143
139 return GNUNET_OK; 144 return GNUNET_OK;
140} 145}
141 146
142 147
143void 148void
144GNUNET_SECRETSHARING_share_destroy(struct GNUNET_SECRETSHARING_Share *share) 149GNUNET_SECRETSHARING_share_destroy (struct GNUNET_SECRETSHARING_Share *share)
145{ 150{
146 GNUNET_free(share->original_indices); 151 GNUNET_free (share->original_indices);
147 share->original_indices = NULL; 152 share->original_indices = NULL;
148 GNUNET_free(share->sigmas); 153 GNUNET_free (share->sigmas);
149 share->sigmas = NULL; 154 share->sigmas = NULL;
150 GNUNET_free(share->peers); 155 GNUNET_free (share->peers);
151 share->peers = NULL; 156 share->peers = NULL;
152 GNUNET_free(share); 157 GNUNET_free (share);
153} 158}