[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-exchange] 09/130: work on FTBFS issues...
From: |
gnunet |
Subject: |
[taler-exchange] 09/130: work on FTBFS issues... |
Date: |
Wed, 17 Nov 2021 12:24:17 +0100 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository exchange.
commit 4d0102411f7fcccf6d418ab4621edd3b44c97b3f
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sat Oct 23 07:25:01 2021 +0200
work on FTBFS issues...
---
src/json/json_helper.c | 178 +++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 174 insertions(+), 4 deletions(-)
diff --git a/src/json/json_helper.c b/src/json/json_helper.c
index 1f8d320b..d468b4bc 100644
--- a/src/json/json_helper.c
+++ b/src/json/json_helper.c
@@ -425,12 +425,176 @@ TALER_JSON_spec_relative_time (const char *name,
}
+/**
+ * Parse given JSON object to denomination public key.
+ *
+ * @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 int
+parse_denom_pub (void *cls,
+ json_t *root,
+ struct GNUNET_JSON_Specification *spec)
+{
+ struct TALER_DenominationPublicKey *denom_pub = spec->ptr;
+ uint32_t cipher;
+ struct GNUNET_JSON_Specification dspec[] = {
+ GNUNET_JSON_spec_uint32 ("cipher",
+ &cipher),
+ GNUNET_JSON_spec_uint32 ("age_mask",
+ &denom_pub->age_mask),
+ GNUNET_JSON_spec_end ()
+ };
+ const char *emsg;
+ unsigned int eline;
+
+ if (GNUNET_OK !=
+ GNUNET_JSON_parse (root,
+ dspec,
+ &emsg,
+ &eline))
+ {
+ GNUNET_break_op (0);
+ return GNUNET_SYSERR;
+ }
+ denom_pub->cipher = (enum TALER_DenominationCipher) cipher;
+ switch (denom_pub->cipher)
+ {
+ case TALER_DENOMINATION_RSA:
+ {
+ struct GNUNET_JSON_Specification ispec[] = {
+ GNUNET_JSON_spec_rsa_public_key (
+ "rsa_public_key",
+ &denom_pub->details.rsa_public_key),
+ GNUNET_JSON_spec_end ()
+ };
+
+ if (GNUNET_OK !=
+ GNUNET_JSON_parse (root,
+ ispec,
+ &emsg,
+ &eline))
+ {
+ GNUNET_break_op (0);
+ return GNUNET_SYSERR;
+ }
+ return GNUNET_OK;
+ }
+ default:
+ GNUNET_break_op (0);
+ 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_denom_pub (void *cls,
+ struct GNUNET_JSON_Specification *spec)
+{
+ struct TALER_DenominationPublicKey *denom_pub = spec->ptr;
+
+ TALER_denom_pub_free (denom_pub);
+}
+
+
struct GNUNET_JSON_Specification
TALER_JSON_spec_denomination_public_key (const char *field,
struct TALER_DenominationPublicKey
*pk)
{
- return GNUNET_JSON_spec_rsa_public_key (field,
- &pk->rsa_public_key);
+ struct GNUNET_JSON_Specification ret = {
+ .parser = &parse_denom_pub,
+ .cleaner = &clean_denom_pub,
+ .field = field,
+ .ptr = pk
+ };
+
+ return ret;
+}
+
+
+/**
+ * Parse given JSON object to 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 int
+parse_denom_sig (void *cls,
+ json_t *root,
+ struct GNUNET_JSON_Specification *spec)
+{
+ struct TALER_DenominationSignature *denom_sig = spec->ptr;
+ uint32_t cipher;
+ struct GNUNET_JSON_Specification dspec[] = {
+ GNUNET_JSON_spec_uint32 ("cipher",
+ &cipher),
+ GNUNET_JSON_spec_end ()
+ };
+ const char *emsg;
+ unsigned int eline;
+
+ if (GNUNET_OK !=
+ GNUNET_JSON_parse (root,
+ dspec,
+ &emsg,
+ &eline))
+ {
+ GNUNET_break_op (0);
+ return GNUNET_SYSERR;
+ }
+ denom_sig->cipher = (enum TALER_DenominationCipher) cipher;
+ switch (denom_sig->cipher)
+ {
+ case TALER_DENOMINATION_RSA:
+ {
+ struct GNUNET_JSON_Specification ispec[] = {
+ GNUNET_JSON_spec_rsa_signature (
+ "rsa_signature",
+ &denom_sig->details.rsa_signature),
+ GNUNET_JSON_spec_end ()
+ };
+
+ if (GNUNET_OK !=
+ GNUNET_JSON_parse (root,
+ ispec,
+ &emsg,
+ &eline))
+ {
+ GNUNET_break_op (0);
+ return GNUNET_SYSERR;
+ }
+ return GNUNET_OK;
+ }
+ default:
+ GNUNET_break_op (0);
+ 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_denom_sig (void *cls,
+ struct GNUNET_JSON_Specification *spec)
+{
+ struct TALER_DenominationSignature *denom_sig = spec->ptr;
+
+ TALER_denom_sig_free (denom_sig);
}
@@ -438,8 +602,14 @@ struct GNUNET_JSON_Specification
TALER_JSON_spec_denomination_signature (const char *field,
struct TALER_DenominationSignature
*sig)
{
- return GNUNET_JSON_spec_rsa_signature (field,
- &sig->rsa_signature);
+ struct GNUNET_JSON_Specification ret = {
+ .parser = &parse_denom_sig,
+ .cleaner = &clean_denom_sig,
+ .field = field,
+ .ptr = sig
+ };
+
+ return ret;
}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-exchange] branch master updated (07cb6ac2 -> 0f5fc95e), gnunet, 2021/11/17
- [taler-exchange] 03/130: start to work on transformation, gnunet, 2021/11/17
- [taler-exchange] 02/130: brutally fixing types in src/include/, creating plenty of FTBFS issues, gnunet, 2021/11/17
- [taler-exchange] 12/130: -more changes towards fixing FTBFS, gnunet, 2021/11/17
- [taler-exchange] 11/130: -more changes towards fixing FTBFS, gnunet, 2021/11/17
- [taler-exchange] 05/130: fix remaining libtalerutil FTBFS issues, gnunet, 2021/11/17
- [taler-exchange] 01/130: database change -- breaks everything, gnunet, 2021/11/17
- [taler-exchange] 10/130: -more changes towards fixing FTBFS, gnunet, 2021/11/17
- [taler-exchange] 06/130: add missing file, gnunet, 2021/11/17
- [taler-exchange] 04/130: -fixing more FTBFS, gnunet, 2021/11/17
- [taler-exchange] 09/130: work on FTBFS issues...,
gnunet <=
- [taler-exchange] 08/130: -resovling more FTBFS issues, gnunet, 2021/11/17
- [taler-exchange] 60/130: consistently distinguish blinded/unblinded denomination sigs, gnunet, 2021/11/17
- [taler-exchange] 20/130: -fix more FTBFS, gnunet, 2021/11/17
- [taler-exchange] 43/130: address most FIXMEs in pg plugin, gnunet, 2021/11/17
- [taler-exchange] 44/130: address most FIXMEs in pg plugin, gnunet, 2021/11/17
- [taler-exchange] 07/130: fix remaining libtalerutil tests FTBFS issues, gnunet, 2021/11/17
- [taler-exchange] 21/130: -work on FTBFS, gnunet, 2021/11/17
- [taler-exchange] 25/130: -work on fTBFS, gnunet, 2021/11/17
- [taler-exchange] 29/130: fix lib/ FTBFS, gnunet, 2021/11/17
- [taler-exchange] 63/130: fix bug, gnunet, 2021/11/17