summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/anastasis_backup.c140
-rw-r--r--src/lib/anastasis_recovery.c106
2 files changed, 113 insertions, 133 deletions
diff --git a/src/lib/anastasis_backup.c b/src/lib/anastasis_backup.c
index ea55e6a..d97bdae 100644
--- a/src/lib/anastasis_backup.c
+++ b/src/lib/anastasis_backup.c
@@ -134,29 +134,28 @@ ANASTASIS_truth_from_json (const json_t *json)
json_t *
ANASTASIS_truth_to_json (const struct ANASTASIS_Truth *t)
{
- return json_pack (
- "{s:o,s:o,s:o,s:o,s:o"
- ",s:o,s:s,s:s,s:s,s:s?}",
- "uuid",
- GNUNET_JSON_from_data_auto (&t->uuid),
- "key_share",
- GNUNET_JSON_from_data_auto (&t->key_share),
- "truth_key",
- GNUNET_JSON_from_data_auto (&t->truth_key),
- "salt",
- GNUNET_JSON_from_data_auto (&t->salt),
- "nonce",
- GNUNET_JSON_from_data_auto (&t->nonce),
- "provider_salt",
- GNUNET_JSON_from_data_auto (&t->provider_salt),
- "url",
- t->url,
- "type",
- t->type,
- "instructions",
- t->instructions,
- "mime_type",
- t->mime_type);
+ return GNUNET_JSON_PACK (
+ GNUNET_JSON_pack_data_auto ("uuid",
+ &t->uuid),
+ GNUNET_JSON_pack_data_auto ("key_share",
+ &t->key_share),
+ GNUNET_JSON_pack_data_auto ("truth_key",
+ &t->truth_key),
+ GNUNET_JSON_pack_data_auto ("salt",
+ &t->salt),
+ GNUNET_JSON_pack_data_auto ("nonce",
+ &t->nonce),
+ GNUNET_JSON_pack_data_auto ("provider_salt",
+ &t->provider_salt),
+ GNUNET_JSON_pack_string ("url",
+ t->url),
+ GNUNET_JSON_pack_string ("type",
+ t->type),
+ GNUNET_JSON_pack_string ("instructions",
+ t->instructions),
+ GNUNET_JSON_pack_allow_null (
+ GNUNET_JSON_pack_string ("mime_type",
+ t->mime_type)));
}
@@ -778,23 +777,16 @@ ANASTASIS_secret_share (struct GNUNET_CURL_Context *ctx,
uuids,
GNUNET_JSON_from_data_auto (
&policy->truths[b]->uuid)));
- if (0 !=
- json_array_append_new (
- dec_policies,
- json_pack ("{s:o, s:o, s:o}",
- "master_key",
- GNUNET_JSON_from_data_auto (
- &encrypted_master_keys[k]),
- "uuids",
- uuids,
- "salt",
- GNUNET_JSON_from_data_auto (&policy->salt))))
- {
- GNUNET_break (0);
- json_decref (dec_policies);
- ANASTASIS_secret_share_cancel (ss);
- return NULL;
- }
+ GNUNET_assert (0 ==
+ json_array_append_new (
+ dec_policies,
+ GNUNET_JSON_PACK (
+ GNUNET_JSON_pack_data_auto ("master_key",
+ &encrypted_master_keys[k]),
+ GNUNET_JSON_pack_array_steal ("uuids",
+ uuids),
+ GNUNET_JSON_pack_data_auto ("salt",
+ &policy->salt))));
}
esc_methods = json_array ();
@@ -825,38 +817,24 @@ ANASTASIS_secret_share (struct GNUNET_CURL_Context *ctx,
if (! unique)
continue;
- if (0 !=
- json_array_append_new (
- esc_methods,
- json_pack ("{s:o," /* truth uuid */
- " s:s," /* provider url */
- " s:s," /* instructions */
- " s:o," /* truth key */
- " s:o," /* truth salt */
- " s:o," /* provider salt */
- " s:s}", /* escrow method */
- "uuid",
- GNUNET_JSON_from_data_auto (
- &pt->uuid),
- "url",
- pt->url,
- "instructions",
- pt->instructions,
- "truth_key", GNUNET_JSON_from_data_auto (
- &pt->truth_key),
- "salt", GNUNET_JSON_from_data_auto (
- &pt->salt),
- "provider_salt", GNUNET_JSON_from_data_auto (
- &pt->provider_salt),
- "escrow_type",
- pt->type)))
- {
- GNUNET_break (0);
- json_decref (esc_methods);
- json_decref (dec_policies);
- ANASTASIS_secret_share_cancel (ss);
- return NULL;
- }
+ GNUNET_assert (0 ==
+ json_array_append_new (
+ esc_methods,
+ GNUNET_JSON_PACK (
+ GNUNET_JSON_pack_data_auto ("uuid",
+ &pt->uuid),
+ GNUNET_JSON_pack_string ("url",
+ pt->url),
+ GNUNET_JSON_pack_string ("instructions",
+ pt->instructions),
+ GNUNET_JSON_pack_data_auto ("truth_key",
+ &pt->truth_key),
+ GNUNET_JSON_pack_data_auto ("salt",
+ &pt->salt),
+ GNUNET_JSON_pack_data_auto ("provider_salt",
+ &pt->provider_salt),
+ GNUNET_JSON_pack_string ("escrow_type",
+ pt->type))));
}
}
@@ -869,13 +847,17 @@ ANASTASIS_secret_share (struct GNUNET_CURL_Context *ctx,
int ret;
uint32_t be_size;
- recovery_document = json_pack (
- "{s:s?, s:o, s:o, s:o}",
- "secret_name", secret_name,
- "policies", dec_policies,
- "escrow_methods", esc_methods,
- "encrypted_core_secret", GNUNET_JSON_from_data (encrypted_core_secret,
- core_secret_size));
+ recovery_document = GNUNET_JSON_PACK (
+ GNUNET_JSON_pack_allow_null (
+ GNUNET_JSON_pack_string ("secret_name",
+ secret_name)),
+ GNUNET_JSON_pack_array_steal ("policies",
+ dec_policies),
+ GNUNET_JSON_pack_array_steal ("escrow_methods",
+ esc_methods),
+ GNUNET_JSON_pack_data_varsize ("encrypted_core_secret",
+ encrypted_core_secret,
+ core_secret_size));
GNUNET_assert (NULL != recovery_document);
GNUNET_free (encrypted_core_secret);
diff --git a/src/lib/anastasis_recovery.c b/src/lib/anastasis_recovery.c
index 5b0726f..2a606d2 100644
--- a/src/lib/anastasis_recovery.c
+++ b/src/lib/anastasis_recovery.c
@@ -963,22 +963,20 @@ ANASTASIS_recovery_serialize (const struct ANASTASIS_Recovery *r)
const struct ANASTASIS_Challenge *c = dp->pub_details.challenges[j];
json_t *cs;
- cs = json_pack ("{s:o}",
- "uuid",
- GNUNET_JSON_from_data_auto (&c->ci.uuid));
- GNUNET_assert (NULL != cs);
+ cs = GNUNET_JSON_PACK (
+ GNUNET_JSON_pack_data_auto ("uuid",
+ &c->ci.uuid));
GNUNET_assert (0 ==
json_array_append_new (c_arr,
cs));
}
- dps = json_pack ("{s:o, s:o, s:o}",
- "emk",
- GNUNET_JSON_from_data_auto (&dp->emk),
- "salt",
- GNUNET_JSON_from_data_auto (&dp->salt),
- "challenges",
- c_arr);
- GNUNET_assert (NULL != dps);
+ dps = GNUNET_JSON_PACK (
+ GNUNET_JSON_pack_data_auto ("emk",
+ &dp->emk),
+ GNUNET_JSON_pack_data_auto ("salt",
+ &dp->salt),
+ GNUNET_JSON_pack_array_steal ("challenges",
+ c_arr));
GNUNET_assert (0 ==
json_array_append_new (dps_arr,
dps));
@@ -990,53 +988,53 @@ ANASTASIS_recovery_serialize (const struct ANASTASIS_Recovery *r)
const struct ANASTASIS_Challenge *c = &r->cs[i];
json_t *cs;
- cs = json_pack ("{s:o,s:o,s:o,s:o,s:o?,"
- " s:s,s:s,s:s,s:b}",
- "uuid",
- GNUNET_JSON_from_data_auto (&c->ci.uuid),
- "truth_key",
- GNUNET_JSON_from_data_auto (&c->truth_key),
- "salt",
- GNUNET_JSON_from_data_auto (&c->salt),
- "provider_salt",
- GNUNET_JSON_from_data_auto (&c->provider_salt),
- "key_share",
- c->ci.solved
- ? GNUNET_JSON_from_data_auto (&c->key_share)
- : NULL,
- "url",
- c->url,
- "type",
- c->type,
- "instructions",
- c->instructions,
- "solved",
- c->ci.solved);
- GNUNET_assert (NULL != cs);
+ cs = GNUNET_JSON_PACK (
+ GNUNET_JSON_pack_data_auto ("uuid",
+ &c->ci.uuid),
+ GNUNET_JSON_pack_data_auto ("truth_key",
+ &c->truth_key),
+ GNUNET_JSON_pack_data_auto ("salt",
+ &c->salt),
+ GNUNET_JSON_pack_data_auto ("provider_salt",
+ &c->provider_salt),
+ GNUNET_JSON_pack_allow_null (
+ GNUNET_JSON_pack_data_varsize ("key_share",
+ c->ci.solved
+ ? &c->key_share
+ : NULL,
+ sizeof (c->key_share))),
+ GNUNET_JSON_pack_string ("url",
+ c->url),
+ GNUNET_JSON_pack_string ("type",
+ c->type),
+ GNUNET_JSON_pack_string ("instructions",
+ c->instructions),
+ GNUNET_JSON_pack_bool ("solved",
+ c->ci.solved));
GNUNET_assert (0 ==
json_array_append_new (cs_arr,
cs));
}
- return json_pack ("{s:o, s:o, s:o, s:I, s:O, "
- " s:s, s:s?, s:o}",
- "id",
- GNUNET_JSON_from_data_auto (&r->id),
- "dps",
- dps_arr,
- "cs",
- cs_arr,
- "version",
- (json_int_t) r->ri.version,
- "id_data",
- r->id_data,
- "provider_url",
- r->provider_url,
- "secret_name",
- r->secret_name,
- "core_secret",
- GNUNET_JSON_from_data (r->enc_core_secret,
- r->enc_core_secret_size));
+ return GNUNET_JSON_PACK (
+ GNUNET_JSON_pack_data_auto ("id",
+ &r->id),
+ GNUNET_JSON_pack_array_steal ("dps",
+ dps_arr),
+ GNUNET_JSON_pack_array_steal ("cs",
+ cs_arr),
+ GNUNET_JSON_pack_uint64 ("version",
+ r->ri.version),
+ GNUNET_JSON_pack_object_incref ("id_data",
+ (json_t *) r->id_data),
+ GNUNET_JSON_pack_string ("provider_url",
+ r->provider_url),
+ GNUNET_JSON_pack_allow_null (
+ GNUNET_JSON_pack_string ("secret_name",
+ r->secret_name)),
+ GNUNET_JSON_pack_data_varsize ("core_secret",
+ r->enc_core_secret,
+ r->enc_core_secret_size));
}