diff options
-rw-r--r-- | src/include/gnunet_json_lib.h | 13 | ||||
-rw-r--r-- | src/lib/json/json_pack.c | 38 |
2 files changed, 51 insertions, 0 deletions
diff --git a/src/include/gnunet_json_lib.h b/src/include/gnunet_json_lib.h index 203976b5c..0b6b299d1 100644 --- a/src/include/gnunet_json_lib.h +++ b/src/include/gnunet_json_lib.h | |||
@@ -966,6 +966,19 @@ GNUNET_JSON_pack_rsa_signature (const char *name, | |||
966 | const struct GNUNET_CRYPTO_RsaSignature *sig); | 966 | const struct GNUNET_CRYPTO_RsaSignature *sig); |
967 | 967 | ||
968 | 968 | ||
969 | /** | ||
970 | * Generate packer instruction for a JSON field of type | ||
971 | * unblinded signature. | ||
972 | * | ||
973 | * @param name name of the field to add to the object | ||
974 | * @param sig unblinded signature | ||
975 | * @return json pack specification | ||
976 | */ | ||
977 | struct GNUNET_JSON_PackSpec | ||
978 | GNUNET_JSON_pack_unblinded_signature (const char *name, | ||
979 | const struct GNUNET_CRYPTO_UnblindedSignature *sig); | ||
980 | |||
981 | |||
969 | #endif | 982 | #endif |
970 | 983 | ||
971 | /* end of gnunet_json_lib.h */ | 984 | /* end of gnunet_json_lib.h */ |
diff --git a/src/lib/json/json_pack.c b/src/lib/json/json_pack.c index 18487c3f4..40cd55c1c 100644 --- a/src/lib/json/json_pack.c +++ b/src/lib/json/json_pack.c | |||
@@ -24,6 +24,7 @@ | |||
24 | */ | 24 | */ |
25 | #include "platform.h" | 25 | #include "platform.h" |
26 | #include "gnunet_json_lib.h" | 26 | #include "gnunet_json_lib.h" |
27 | #include <gnunet/gnunet_json_lib.h> | ||
27 | 28 | ||
28 | 29 | ||
29 | json_t * | 30 | json_t * |
@@ -364,4 +365,41 @@ GNUNET_JSON_pack_rsa_signature (const char *name, | |||
364 | } | 365 | } |
365 | 366 | ||
366 | 367 | ||
368 | struct GNUNET_JSON_PackSpec | ||
369 | GNUNET_JSON_pack_unblinded_signature (const char *name, | ||
370 | const struct GNUNET_CRYPTO_UnblindedSignature *sig) | ||
371 | { | ||
372 | struct GNUNET_JSON_PackSpec ps = { | ||
373 | .field_name = name | ||
374 | }; | ||
375 | |||
376 | if (NULL == sig) | ||
377 | return ps; | ||
378 | |||
379 | switch (sig->cipher) | ||
380 | { | ||
381 | case GNUNET_CRYPTO_BSA_INVALID: | ||
382 | break; | ||
383 | case GNUNET_CRYPTO_BSA_RSA: | ||
384 | ps.object = GNUNET_JSON_PACK ( | ||
385 | GNUNET_JSON_pack_string ("cipher", | ||
386 | "RSA"), | ||
387 | GNUNET_JSON_pack_rsa_signature ("rsa_signature", | ||
388 | sig->details.rsa_signature)); | ||
389 | return ps; | ||
390 | case GNUNET_CRYPTO_BSA_CS: | ||
391 | ps.object = GNUNET_JSON_PACK ( | ||
392 | GNUNET_JSON_pack_string ("cipher", | ||
393 | "CS"), | ||
394 | GNUNET_JSON_pack_data_auto ("cs_signature_r", | ||
395 | &sig->details.cs_signature.r_point), | ||
396 | GNUNET_JSON_pack_data_auto ("cs_signature_s", | ||
397 | &sig->details.cs_signature.s_scalar)); | ||
398 | return ps; | ||
399 | } | ||
400 | GNUNET_assert (0); | ||
401 | return ps; | ||
402 | } | ||
403 | |||
404 | |||
367 | /* end of json_pack.c */ | 405 | /* end of json_pack.c */ |