diff options
author | Schanzenbach, Martin <martin.schanzenbach@aisec.fraunhofer.de> | 2018-08-16 22:08:54 +0200 |
---|---|---|
committer | Schanzenbach, Martin <martin.schanzenbach@aisec.fraunhofer.de> | 2018-08-16 22:08:54 +0200 |
commit | 8cd6146318d890c5cb18a2edb72090feee9729b2 (patch) | |
tree | 814c8ba00476c2d80047994e90ec9a69a15d36db /src | |
parent | eba863424191f6a4e65b9b8444e247606dfc6005 (diff) | |
download | gnunet-8cd6146318d890c5cb18a2edb72090feee9729b2.tar.gz gnunet-8cd6146318d890c5cb18a2edb72090feee9729b2.zip |
store to ns
Diffstat (limited to 'src')
-rw-r--r-- | src/include/gnunet_gnsrecord_lib.h | 5 | ||||
-rw-r--r-- | src/zklaim/gnunet-service-zklaim.c | 46 |
2 files changed, 37 insertions, 14 deletions
diff --git a/src/include/gnunet_gnsrecord_lib.h b/src/include/gnunet_gnsrecord_lib.h index 693cc6cdb..b89588d1a 100644 --- a/src/include/gnunet_gnsrecord_lib.h +++ b/src/include/gnunet_gnsrecord_lib.h | |||
@@ -142,6 +142,11 @@ extern "C" | |||
142 | #define GNUNET_GNSRECORD_TYPE_RECLAIM_OIDC_REDIRECT 65553 | 142 | #define GNUNET_GNSRECORD_TYPE_RECLAIM_OIDC_REDIRECT 65553 |
143 | 143 | ||
144 | /** | 144 | /** |
145 | * Record type for zklaim contexts | ||
146 | */ | ||
147 | #define GNUNET_GNSRECORD_TYPE_ZKLAIM_CTX 65554 | ||
148 | |||
149 | /** | ||
145 | * Flags that can be set for a record. | 150 | * Flags that can be set for a record. |
146 | */ | 151 | */ |
147 | enum GNUNET_GNSRECORD_Flags | 152 | enum GNUNET_GNSRECORD_Flags |
diff --git a/src/zklaim/gnunet-service-zklaim.c b/src/zklaim/gnunet-service-zklaim.c index ac8455364..91e70fc99 100644 --- a/src/zklaim/gnunet-service-zklaim.c +++ b/src/zklaim/gnunet-service-zklaim.c | |||
@@ -237,10 +237,14 @@ handle_create_context_message (void *cls, | |||
237 | { | 237 | { |
238 | struct CreateContextHandle *cch; | 238 | struct CreateContextHandle *cch; |
239 | struct ZkClient *zkc = cls; | 239 | struct ZkClient *zkc = cls; |
240 | size_t data_len; | 240 | struct GNUNET_GNSRECORD_Data ctx_record; |
241 | size_t str_len; | ||
241 | char *tmp; | 242 | char *tmp; |
242 | char *pos; | 243 | char *pos; |
243 | unsigned char *data; | 244 | unsigned char *data; |
245 | char *rdata; | ||
246 | size_t data_len; | ||
247 | size_t rdata_len; | ||
244 | int num_attrs; | 248 | int num_attrs; |
245 | int num_pl; | 249 | int num_pl; |
246 | int i; | 250 | int i; |
@@ -249,13 +253,13 @@ handle_create_context_message (void *cls, | |||
249 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 253 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
250 | "Received CREATE_REQUEST message\n"); | 254 | "Received CREATE_REQUEST message\n"); |
251 | 255 | ||
252 | data_len = ntohs (crm->name_len); | 256 | str_len = ntohs (crm->name_len); |
253 | 257 | ||
254 | cch = GNUNET_new (struct CreateContextHandle); | 258 | cch = GNUNET_new (struct CreateContextHandle); |
255 | cch->name = GNUNET_strndup ((char*)&crm[1], data_len-1); | 259 | cch->name = GNUNET_strndup ((char*)&crm[1], str_len-1); |
256 | data_len = ntohs(crm->attrs_len); | 260 | str_len = ntohs(crm->attrs_len); |
257 | cch->attrs = GNUNET_strndup (((char*)&crm[1]) + strlen (cch->name) + 1, | 261 | cch->attrs = GNUNET_strndup (((char*)&crm[1]) + strlen (cch->name) + 1, |
258 | data_len-1); | 262 | str_len-1); |
259 | cch->private_key = crm->private_key; | 263 | cch->private_key = crm->private_key; |
260 | GNUNET_CRYPTO_ecdsa_key_get_public (&crm->private_key, | 264 | GNUNET_CRYPTO_ecdsa_key_get_public (&crm->private_key, |
261 | &cch->public_key); | 265 | &cch->public_key); |
@@ -297,16 +301,30 @@ handle_create_context_message (void *cls, | |||
297 | zklaim_ctx_free (ctx); | 301 | zklaim_ctx_free (ctx); |
298 | return; | 302 | return; |
299 | } | 303 | } |
300 | if (0 != zklaim_ctx_serialize (ctx, &data)) | 304 | data_len = zklaim_ctx_serialize (ctx, &data); |
301 | { | 305 | rdata_len = data_len + strlen (cch->attrs) + 1; |
302 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | ||
303 | "Context serialization failed.\n"); | ||
304 | send_result(GNUNET_SYSERR, cch); | ||
305 | zklaim_ctx_free (ctx); | ||
306 | return; | ||
307 | } | ||
308 | zklaim_ctx_free (ctx); | 306 | zklaim_ctx_free (ctx); |
309 | // store ctx,attrs as GNS record | 307 | rdata = GNUNET_malloc (rdata_len); |
308 | memcpy (rdata, | ||
309 | cch->attrs, | ||
310 | strlen (cch->attrs) + 1); | ||
311 | memcpy (rdata + strlen (cch->attrs) + 1, | ||
312 | data, | ||
313 | data_len); | ||
314 | ctx_record.data_size = rdata_len; | ||
315 | ctx_record.data = rdata; | ||
316 | ctx_record.expiration_time = GNUNET_TIME_UNIT_DAYS.rel_value_us; //TODO config | ||
317 | ctx_record.record_type = GNUNET_GNSRECORD_TYPE_ZKLAIM_CTX; | ||
318 | ctx_record.flags = GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION; | ||
319 | cch->ns_qe = GNUNET_NAMESTORE_records_store (ns_handle, | ||
320 | &cch->private_key, | ||
321 | cch->name, | ||
322 | 1, | ||
323 | &ctx_record, | ||
324 | &context_store_cont, | ||
325 | cch); | ||
326 | GNUNET_free (rdata); | ||
327 | GNUNET_free (data); | ||
310 | } | 328 | } |
311 | 329 | ||
312 | 330 | ||