From 4b748acb26818b75c2760e4218388cdafb5a771b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Bl=C3=A4ttler?= Date: Sat, 11 May 2024 16:01:55 +0200 Subject: use gnunet json helper for blinded signature --- src/json/json_helper.c | 121 +------------------------------------------------ 1 file 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); } -- cgit v1.2.3