aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Blättler <blatc2@bfh.ch>2024-05-11 16:01:55 +0200
committerChristian Blättler <blatc2@bfh.ch>2024-05-11 16:01:55 +0200
commit4b748acb26818b75c2760e4218388cdafb5a771b (patch)
treeb03b78364ad5300eb0861911351cf3eef2882530
parent67ced977a3b6d39e932d53d3b4f6f16085b19745 (diff)
downloadexchange-4b748acb26818b75c2760e4218388cdafb5a771b.tar.xz
use gnunet json helper for blinded signature
-rw-r--r--src/json/json_helper.c121
1 files changed, 2 insertions, 119 deletions
diff --git a/src/json/json_helper.c b/src/json/json_helper.c
index 7cad6a38c..2ade19446 100644
--- a/src/json/json_helper.c
+++ b/src/json/json_helper.c
@@ -802,131 +802,14 @@ TALER_JSON_spec_denom_sig (const char *field,
}
-/**
- * Parse given JSON object to blinded denomination signature.
- *
- * @param cls closure, NULL
- * @param root the json object representing data
- * @param[out] spec where to write the data
- * @return #GNUNET_OK upon successful parsing; #GNUNET_SYSERR upon error
- */
-static enum GNUNET_GenericReturnValue
-parse_blinded_denom_sig (void *cls,
- json_t *root,
- struct GNUNET_JSON_Specification *spec)
-{
- struct TALER_BlindedDenominationSignature *denom_sig = spec->ptr;
- struct GNUNET_CRYPTO_BlindedSignature *blinded_sig;
- const char *cipher;
- struct GNUNET_JSON_Specification dspec[] = {
- GNUNET_JSON_spec_string ("cipher",
- &cipher),
- GNUNET_JSON_spec_end ()
- };
- const char *emsg;
- unsigned int eline;
-
- (void) cls;
- if (GNUNET_OK !=
- GNUNET_JSON_parse (root,
- dspec,
- &emsg,
- &eline))
- {
- GNUNET_break_op (0);
- return GNUNET_SYSERR;
- }
- blinded_sig = GNUNET_new (struct GNUNET_CRYPTO_BlindedSignature);
- blinded_sig->cipher = string_to_cipher (cipher);
- blinded_sig->rc = 1;
- switch (blinded_sig->cipher)
- {
- case GNUNET_CRYPTO_BSA_INVALID:
- break;
- case GNUNET_CRYPTO_BSA_RSA:
- {
- struct GNUNET_JSON_Specification ispec[] = {
- GNUNET_JSON_spec_rsa_signature (
- "blinded_rsa_signature",
- &blinded_sig->details.blinded_rsa_signature),
- GNUNET_JSON_spec_end ()
- };
-
- if (GNUNET_OK !=
- GNUNET_JSON_parse (root,
- ispec,
- &emsg,
- &eline))
- {
- GNUNET_break_op (0);
- GNUNET_free (blinded_sig);
- return GNUNET_SYSERR;
- }
- denom_sig->blinded_sig = blinded_sig;
- return GNUNET_OK;
- }
- case GNUNET_CRYPTO_BSA_CS:
- {
- struct GNUNET_JSON_Specification ispec[] = {
- GNUNET_JSON_spec_uint32 ("b",
- &blinded_sig->details.blinded_cs_answer.b),
- GNUNET_JSON_spec_fixed_auto ("s",
- &blinded_sig->details.blinded_cs_answer.
- s_scalar),
- GNUNET_JSON_spec_end ()
- };
-
- if (GNUNET_OK !=
- GNUNET_JSON_parse (root,
- ispec,
- &emsg,
- &eline))
- {
- GNUNET_break_op (0);
- GNUNET_free (blinded_sig);
- return GNUNET_SYSERR;
- }
- denom_sig->blinded_sig = blinded_sig;
- return GNUNET_OK;
- }
- }
- GNUNET_break_op (0);
- GNUNET_free (blinded_sig);
- return GNUNET_SYSERR;
-}
-
-
-/**
- * Cleanup data left from parsing denomination public key.
- *
- * @param cls closure, NULL
- * @param[out] spec where to free the data
- */
-static void
-clean_blinded_denom_sig (void *cls,
- struct GNUNET_JSON_Specification *spec)
-{
- struct TALER_BlindedDenominationSignature *denom_sig = spec->ptr;
-
- (void) cls;
- TALER_blinded_denom_sig_free (denom_sig);
-}
-
-
struct GNUNET_JSON_Specification
TALER_JSON_spec_blinded_denom_sig (
const char *field,
struct TALER_BlindedDenominationSignature *sig)
{
- struct GNUNET_JSON_Specification ret = {
- .parser = &parse_blinded_denom_sig,
- .cleaner = &clean_blinded_denom_sig,
- .field = field,
- .ptr = sig
- };
-
sig->blinded_sig = NULL;
- return ret;
+ return GNUNET_JSON_spec_blinded_signature (field,
+ &sig->blinded_sig);
}