diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/Makefile.am | 4 | ||||
-rw-r--r-- | src/lib/merchant_api_json.c | 491 | ||||
-rw-r--r-- | src/lib/merchant_api_json.h | 331 | ||||
-rw-r--r-- | src/lib/merchant_api_pay.c | 59 | ||||
-rw-r--r-- | src/lib/test_merchant_api.c | 4 |
5 files changed, 36 insertions, 853 deletions
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index 81ad63fe..0d163d7e 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -15,10 +15,12 @@ libtalermerchant_la_LDFLAGS = \ libtalermerchant_la_SOURCES = \ merchant_api_context.c merchant_api_context.h \ - merchant_api_json.c merchant_api_json.h \ merchant_api_pay.c libtalermerchant_la_LIBADD = \ + -ltalerjson \ + -ltalerutil \ + -lgnunetjson \ -lgnunetutil \ -ljansson \ $(XLIB) diff --git a/src/lib/merchant_api_json.c b/src/lib/merchant_api_json.c deleted file mode 100644 index f3caac30..00000000 --- a/src/lib/merchant_api_json.c +++ /dev/null @@ -1,491 +0,0 @@ -/* - This file is part of TALER - Copyright (C) 2014, 2015, 2016 GNUnet e.V. - - TALER is free software; you can redistribute it and/or modify it under the - terms of the GNU Lesser General Public License as published by the Free Software - Foundation; either version 3, or (at your option) any later version. - - TALER is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License along with - TALER; see the file COPYING.LGPL. If not, If not, see <http://www.gnu.org/licenses/> -*/ -/** - * @file lib/merchant_api_json.c - * @brief functions to parse incoming requests (JSON snippets) - * @author Florian Dold - * @author Benedikt Mueller - * @author Christian Grothoff - */ -#include "platform.h" -#include "merchant_api_json.h" - -/** - * Navigate and parse data in a JSON tree. - * - * @param root the JSON node to start the navigation at. - * @param spec parse specification array - * @return offset in @a spec where parsing failed, -1 on success (!) - */ -static int -parse_json (json_t *root, - struct MAJ_Specification *spec) -{ - int i; - json_t *pos; /* what's our current position? */ - - pos = root; - for (i=0;MAJ_CMD_END != spec[i].cmd;i++) - { - pos = json_object_get (root, - spec[i].field); - if (NULL == pos) - { - GNUNET_break_op (0); - return i; - } - switch (spec[i].cmd) - { - case MAJ_CMD_END: - GNUNET_assert (0); - return i; - case MAJ_CMD_AMOUNT: - if (GNUNET_OK != - TALER_json_to_amount (pos, - spec[i].details.amount)) - { - GNUNET_break_op (0); - return i; - } - break; - case MAJ_CMD_TIME_ABSOLUTE: - if (GNUNET_OK != - TALER_json_to_abs (pos, - spec[i].details.abs_time)) - { - GNUNET_break_op (0); - return i; - } - break; - - case MAJ_CMD_STRING: - { - const char *str; - - str = json_string_value (pos); - if (NULL == str) - { - GNUNET_break_op (0); - return i; - } - *spec[i].details.strptr = str; - } - break; - - case MAJ_CMD_BINARY_FIXED: - { - const char *str; - int res; - - str = json_string_value (pos); - if (NULL == str) - { - GNUNET_break_op (0); - return i; - } - res = GNUNET_STRINGS_string_to_data (str, strlen (str), - spec[i].details.fixed_data.dest, - spec[i].details.fixed_data.dest_size); - if (GNUNET_OK != res) - { - GNUNET_break_op (0); - return i; - } - } - break; - - case MAJ_CMD_BINARY_VARIABLE: - { - const char *str; - size_t size; - void *data; - int res; - - str = json_string_value (pos); - if (NULL == str) - { - GNUNET_break_op (0); - return i; - } - size = (strlen (str) * 5) / 8; - if (size >= 1024) - { - GNUNET_break_op (0); - return i; - } - data = GNUNET_malloc (size); - res = GNUNET_STRINGS_string_to_data (str, - strlen (str), - data, - size); - if (GNUNET_OK != res) - { - GNUNET_break_op (0); - GNUNET_free (data); - return i; - } - *spec[i].details.variable_data.dest_p = data; - *spec[i].details.variable_data.dest_size_p = size; - } - break; - - case MAJ_CMD_RSA_PUBLIC_KEY: - { - size_t size; - const char *str; - int res; - void *buf; - - str = json_string_value (pos); - if (NULL == str) - { - GNUNET_break_op (0); - return i; - } - size = (strlen (str) * 5) / 8; - buf = GNUNET_malloc (size); - res = GNUNET_STRINGS_string_to_data (str, - strlen (str), - buf, - size); - if (GNUNET_OK != res) - { - GNUNET_free (buf); - GNUNET_break_op (0); - return i; - } - *spec[i].details.rsa_public_key - = GNUNET_CRYPTO_rsa_public_key_decode (buf, - size); - GNUNET_free (buf); - if (NULL == spec[i].details.rsa_public_key) - { - GNUNET_break_op (0); - return i; - } - } - break; - - case MAJ_CMD_RSA_SIGNATURE: - { - size_t size; - const char *str; - int res; - void *buf; - - str = json_string_value (pos); - if (NULL == str) - { - GNUNET_break_op (0); - return i; - } - size = (strlen (str) * 5) / 8; - buf = GNUNET_malloc (size); - res = GNUNET_STRINGS_string_to_data (str, - strlen (str), - buf, - size); - if (GNUNET_OK != res) - { - GNUNET_free (buf); - GNUNET_break_op (0); - return i; - } - *spec[i].details.rsa_signature - = GNUNET_CRYPTO_rsa_signature_decode (buf, - size); - GNUNET_free (buf); - if (NULL == spec[i].details.rsa_signature) - return i; - } - break; - - case MAJ_CMD_UINT16: - { - json_int_t val; - - if (! json_is_integer (pos)) - { - GNUNET_break_op (0); - return i; - } - val = json_integer_value (pos); - if ( (0 > val) || (val > UINT16_MAX) ) - { - GNUNET_break_op (0); - return i; - } - *spec[i].details.u16 = (uint16_t) val; - } - break; - - case MAJ_CMD_JSON_OBJECT: - { - if (! (json_is_object (pos) || json_is_array (pos)) ) - { - GNUNET_break_op (0); - return i; - } - json_incref (pos); - *spec[i].details.obj = pos; - } - break; - - default: - GNUNET_break (0); - return i; - } - } - return -1; /* all OK! */ -} - - -/** - * Free all elements allocated during a - * #MAJ_parse_json() operation. - * - * @param spec specification of the parse operation - * @param end number of elements in @a spec to process - */ -static void -parse_free (struct MAJ_Specification *spec, - int end) -{ - int i; - - for (i=0;i<end;i++) - { - switch (spec[i].cmd) - { - case MAJ_CMD_END: - GNUNET_assert (0); - return; - case MAJ_CMD_AMOUNT: - break; - case MAJ_CMD_TIME_ABSOLUTE: - break; - case MAJ_CMD_BINARY_FIXED: - break; - case MAJ_CMD_STRING: - break; - case MAJ_CMD_BINARY_VARIABLE: - GNUNET_free (*spec[i].details.variable_data.dest_p); - *spec[i].details.variable_data.dest_p = NULL; - *spec[i].details.variable_data.dest_size_p = 0; - break; - case MAJ_CMD_RSA_PUBLIC_KEY: - GNUNET_CRYPTO_rsa_public_key_free (*spec[i].details.rsa_public_key); - *spec[i].details.rsa_public_key = NULL; - break; - case MAJ_CMD_RSA_SIGNATURE: - GNUNET_CRYPTO_rsa_signature_free (*spec[i].details.rsa_signature); - *spec[i].details.rsa_signature = NULL; - break; - case MAJ_CMD_JSON_OBJECT: - json_decref (*spec[i].details.obj); - *spec[i].details.obj = NULL; - break; - default: - GNUNET_break (0); - break; - } - } -} - - -/** - * Navigate and parse data in a JSON tree. - * - * @param root the JSON node to start the navigation at. - * @param spec parse specification array - * @return #GNUNET_OK on success, #GNUNET_SYSERR on error - */ -int -MAJ_parse_json (const json_t *root, - struct MAJ_Specification *spec) -{ - int ret; - - ret = parse_json ((json_t *) root, - spec); - if (-1 == ret) - return GNUNET_OK; - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "JSON field `%s` (%d) had unexpected value\n", - spec[ret].field, - ret); - parse_free (spec, ret); - return GNUNET_SYSERR; -} - - -/** - * Free all elements allocated during a - * #MAJ_parse_json() operation. - * - * @param spec specification of the parse operation - */ -void -MAJ_parse_free (struct MAJ_Specification *spec) -{ - int i; - - for (i=0;MAJ_CMD_END != spec[i].cmd;i++) ; - parse_free (spec, i); -} - - -/** - * The expected field stores a string. - * - * @param name name of the JSON field - * @param strptr where to store a pointer to the field - */ -struct MAJ_Specification -MAJ_spec_string (const char *name, - const char **strptr) -{ - struct MAJ_Specification ret = - { - .cmd = MAJ_CMD_STRING, - .field = name, - .details.strptr = strptr - }; - return ret; -} - - -/** - * Specification for parsing an absolute time value. - * - * @param name name of the JSON field - * @param at where to store the absolute time found under @a name - */ -struct MAJ_Specification -MAJ_spec_absolute_time (const char *name, - struct GNUNET_TIME_Absolute *at) -{ - struct MAJ_Specification ret = - { - .cmd = MAJ_CMD_TIME_ABSOLUTE, - .field = name, - .details.abs_time = at - }; - return ret; -} - - -/** - * Specification for parsing an amount value. - * - * @param name name of the JSON field - * @param amount where to store the amount found under @a name - */ -struct MAJ_Specification -MAJ_spec_amount (const char *name, - struct TALER_Amount *amount) -{ - struct MAJ_Specification ret = - { - .cmd = MAJ_CMD_AMOUNT, - .field = name, - .details.amount = amount - }; - return ret; -} - - -/** - * 16-bit integer. - * - * @param name name of the JSON field - * @param[out] u16 where to store the integer found under @a name - */ -struct MAJ_Specification -MAJ_spec_uint16 (const char *name, - uint16_t *u16) -{ - struct MAJ_Specification ret = - { - .cmd = MAJ_CMD_UINT16, - .field = name, - .details.u16 = u16 - }; - return ret; -} - - -/** - * JSON object. - * - * @param name name of the JSON field - * @param[out] jsonp where to store the JSON found under @a name - */ -struct MAJ_Specification -MAJ_spec_json (const char *name, - json_t **jsonp) -{ - struct MAJ_Specification ret = - { - .cmd = MAJ_CMD_JSON_OBJECT, - .field = name, - .details.obj = jsonp - }; - return ret; -} - - -/** - * Specification for parsing an RSA public key. - * - * @param name name of the JSON field - * @param pk where to store the RSA key found under @a name - */ -struct MAJ_Specification -MAJ_spec_rsa_public_key (const char *name, - struct GNUNET_CRYPTO_rsa_PublicKey **pk) -{ - struct MAJ_Specification ret = - { - .cmd = MAJ_CMD_RSA_PUBLIC_KEY, - .field = name, - .details.rsa_public_key = pk - }; - return ret; -} - - -/** - * Specification for parsing an RSA signature. - * - * @param name name of the JSON field - * @param sig where to store the RSA signature found under @a name - */ -struct MAJ_Specification -MAJ_spec_rsa_signature (const char *name, - struct GNUNET_CRYPTO_rsa_Signature **sig) -{ - struct MAJ_Specification ret = - { - .cmd = MAJ_CMD_RSA_SIGNATURE, - .field = name, - .details.rsa_signature = sig - }; - return ret; -} - - -/* end of merchant_api_json.c */ diff --git a/src/lib/merchant_api_json.h b/src/lib/merchant_api_json.h deleted file mode 100644 index dad33967..00000000 --- a/src/lib/merchant_api_json.h +++ /dev/null @@ -1,331 +0,0 @@ -/* - This file is part of TALER - Copyright (C) 2014, 2015, 2016 GNUnet e.V. - - TALER is free software; you can redistribute it and/or modify it under the - terms of the GNU Lesser General Public License as published by the Free Software - Foundation; either version 2.1, or (at your option) any later version. - - TALER is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Affero General Public License along with - TALER; see the file COPYING.LGPL. If not, If not, see <http://www.gnu.org/licenses/> -*/ -/** - * @file lib/merchant_api_json.h - * @brief functions to parse incoming requests (JSON snippets) - * @author Florian Dold - * @author Benedikt Mueller - * @author Christian Grothoff - */ -#include "platform.h" -#include <gnunet/gnunet_util_lib.h> -#include <taler/taler_util.h> -#include <jansson.h> - - -/** - * Enumeration with the various commands for the - * #MAJ_parse_json interpreter. - */ -enum MAJ_Command -{ - - /** - * End of command list. - */ - MAJ_CMD_END, - - /** - * Parse amount at current position. - */ - MAJ_CMD_AMOUNT, - - /** - * Parse absolute time at current position. - */ - MAJ_CMD_TIME_ABSOLUTE, - - /** - * Parse fixed binary value at current position. - */ - MAJ_CMD_BINARY_FIXED, - - /** - * Parse variable-size binary value at current position. - */ - MAJ_CMD_BINARY_VARIABLE, - - /** - * Parse RSA public key at current position. - */ - MAJ_CMD_RSA_PUBLIC_KEY, - - /** - * Parse RSA signature at current position. - */ - MAJ_CMD_RSA_SIGNATURE, - - /** - * Parse `const char *` JSON string at current position. - */ - MAJ_CMD_STRING, - - /** - * Parse `uint16_t` integer at the current position. - */ - MAJ_CMD_UINT16, - - /** - * Parse JSON object at the current position. - */ - MAJ_CMD_JSON_OBJECT, - - /** - * Parse ??? at current position. - */ - MAJ_CMD_C - -}; - - -/** - * @brief Entry in parser specification for #MAJ_parse_json. - */ -struct MAJ_Specification -{ - - /** - * Command to execute. - */ - enum MAJ_Command cmd; - - /** - * Name of the field to access. - */ - const char *field; - - /** - * Further details for the command. - */ - union { - - /** - * Where to store amount for #MAJ_CMD_AMOUNT. - */ - struct TALER_Amount *amount; - - /** - * Where to store time, for #MAJ_CMD_TIME_ABSOLUTE. - */ - struct GNUNET_TIME_Absolute *abs_time; - - /** - * Where to write binary data, for #MAJ_CMD_BINARY_FIXED. - */ - struct { - /** - * Where to write the data. - */ - void *dest; - - /** - * How many bytes to write to @e dest. - */ - size_t dest_size; - - } fixed_data; - - /** - * Where to write binary data, for #MAJ_CMD_BINARY_VARIABLE. - */ - struct { - /** - * Where to store the pointer with the data (is allocated). - */ - void **dest_p; - - /** - * Where to store the number of bytes allocated at `*dest`. - */ - size_t *dest_size_p; - - } variable_data; - - /** - * Where to store the RSA public key for #MAJ_CMD_RSA_PUBLIC_KEY - */ - struct GNUNET_CRYPTO_rsa_PublicKey **rsa_public_key; - - /** - * Where to store the RSA signature for #MAJ_CMD_RSA_SIGNATURE - */ - struct GNUNET_CRYPTO_rsa_Signature **rsa_signature; - - /** - * Details for #MAJ_CMD_EDDSA_SIGNATURE - */ - struct { - - /** - * Where to store the purpose. - */ - struct GNUNET_CRYPTO_EccSignaturePurpose **purpose_p; - - /** - * Key to verify the signature against. - */ - const struct GNUNET_CRYPTO_EddsaPublicKey *pub_key; - - } eddsa_signature; - - /** - * Where to store a pointer to the string. - */ - const char **strptr; - - /** - * Where to store 16-bit integer. - */ - uint16_t *u16; - - /** - * Where to store a JSON object. - */ - json_t **obj; - - } details; - -}; - - -/** - * Navigate and parse data in a JSON tree. - * - * @param root the JSON node to start the navigation at. - * @param spec parse specification array - * @return #GNUNET_OK on success, #GNUNET_SYSERR on error - */ -int -MAJ_parse_json (const json_t *root, - struct MAJ_Specification *spec); - - -/** - * Free all elements allocated during a - * #MAJ_parse_json() operation. - * - * @param spec specification of the parse operation - */ -void -MAJ_parse_free (struct MAJ_Specification *spec); - - -/** - * End of a parser specification. - */ -#define MAJ_spec_end { .cmd = MAJ_CMD_END } - -/** - * Fixed size object (in network byte order, encoded using Crockford - * Base32hex encoding). - * - * @param name name of the JSON field - * @param obj pointer where to write the data (type of `*obj` will determine size) - */ -#define MAJ_spec_fixed_auto(name,obj) { .cmd = MAJ_CMD_BINARY_FIXED, .field = name, .details.fixed_data.dest = obj, .details.fixed_data.dest_size = sizeof (*obj) } - - -/** - * Variable size object (in network byte order, encoded using Crockford - * Base32hex encoding). - * - * @param name name of the JSON field - * @param obj pointer where to write the data (a `void **`) - * @param size where to store the number of bytes allocated for @a obj (of type `size_t *` - */ -#define MAJ_spec_varsize(name,obj,size) { .cmd = MAJ_CMD_BINARY_VARIABLE, .field = name, .details.variable_data.dest_p = obj, .details.variable_data.dest_size_p = size } - - -/** - * The expected field stores a string. - * - * @param name name of the JSON field - * @param strptr where to store a pointer to the field - */ -struct MAJ_Specification -MAJ_spec_string (const char *name, - const char **strptr); - - -/** - * Absolute time. - * - * @param name name of the JSON field - * @param[out] at where to store the absolute time found under @a name - */ -struct MAJ_Specification -MAJ_spec_absolute_time (const char *name, - struct GNUNET_TIME_Absolute *at); - - -/** - * 16-bit integer. - * - * @param name name of the JSON field - * @param[out] u16 where to store the integer found under @a name - */ -struct MAJ_Specification -MAJ_spec_uint16 (const char *name, - uint16_t *u16); - - -/** - * JSON object. - * - * @param name name of the JSON field - * @param[out] jsonp where to store the JSON found under @a name - */ -struct MAJ_Specification -MAJ_spec_json (const char *name, - json_t **jsonp); - - -/** - * Specification for parsing an amount value. - * - * @param name name of the JSON field - * @param amount where to store the amount under @a name - */ -struct MAJ_Specification -MAJ_spec_amount (const char *name, - struct TALER_Amount *amount); - - -/** - * Specification for parsing an RSA public key. - * - * @param name name of the JSON field - * @param pk where to store the RSA key found under @a name - */ -struct MAJ_Specification -MAJ_spec_rsa_public_key (const char *name, - struct GNUNET_CRYPTO_rsa_PublicKey **pk); - - -/** - * Specification for parsing an RSA signature. - * - * @param name name of the JSON field - * @param sig where to store the RSA signature found under @a name - */ -struct MAJ_Specification -MAJ_spec_rsa_signature (const char *name, - struct GNUNET_CRYPTO_rsa_Signature **sig); - - - - -/* end of merchant_api_json.h */ diff --git a/src/lib/merchant_api_pay.c b/src/lib/merchant_api_pay.c index 2607f73f..b583dcda 100644 --- a/src/lib/merchant_api_pay.c +++ b/src/lib/merchant_api_pay.c @@ -25,7 +25,7 @@ #include <microhttpd.h> /* just for HTTP status codes */ #include <gnunet/gnunet_util_lib.h> #include "taler_merchant_service.h" -#include "merchant_api_json.h" +#include <taler/taler_json_lib.h> #include "merchant_api_context.h" #include <taler/taler_signatures.h> @@ -160,17 +160,18 @@ handle_pay_finished (void *cls, struct TALER_MERCHANT_Pay * TALER_MERCHANT_pay_wallet (struct TALER_MERCHANT_Context *merchant, const char *merchant_uri, - const char *exchange_uri, - const struct GNUNET_HashCode *h_wire, const struct GNUNET_HashCode *h_contract, - struct GNUNET_TIME_Absolute timestamp, uint64_t transaction_id, + const struct TALER_Amount *amount, + const struct TALER_Amount *max_fee, const struct TALER_MerchantPublicKeyP *merchant_pub, + const struct TALER_MerchantSignatureP *merchant_sig, + struct GNUNET_TIME_Absolute timestamp, struct GNUNET_TIME_Absolute refund_deadline, + const struct GNUNET_HashCode *h_wire, + const char *exchange_uri, unsigned int num_coins, const struct TALER_MERCHANT_PayCoin *coins, - const struct TALER_Amount *max_fee, - const struct TALER_Amount *amount, TALER_MERCHANT_PayCallback pay_cb, void *pay_cb_cls) { @@ -220,18 +221,19 @@ TALER_MERCHANT_pay_wallet (struct TALER_MERCHANT_Context *merchant, } return TALER_MERCHANT_pay_frontend (merchant, merchant_uri, - exchange_uri, - h_wire, h_contract, - timestamp, + amount, + max_fee, transaction_id, merchant_pub, + merchant_sig, refund_deadline, + timestamp, GNUNET_TIME_UNIT_ZERO_ABS, + h_wire, + exchange_uri, num_coins, pc, - max_fee, - amount, pay_cb, pay_cb_cls); } @@ -264,18 +266,19 @@ TALER_MERCHANT_pay_wallet (struct TALER_MERCHANT_Context *merchant, struct TALER_MERCHANT_Pay * TALER_MERCHANT_pay_frontend (struct TALER_MERCHANT_Context *merchant, const char *merchant_uri, - const char *exchange_uri, - const struct GNUNET_HashCode *h_wire, const struct GNUNET_HashCode *h_contract, - struct GNUNET_TIME_Absolute timestamp, + const struct TALER_Amount *amount, + const struct TALER_Amount *max_fee, uint64_t transaction_id, const struct TALER_MerchantPublicKeyP *merchant_pub, + const struct TALER_MerchantSignatureP *merchant_sig, struct GNUNET_TIME_Absolute refund_deadline, + struct GNUNET_TIME_Absolute timestamp, struct GNUNET_TIME_Absolute execution_deadline, + const struct GNUNET_HashCode *h_wire, + const char *exchange_uri, unsigned int num_coins, const struct TALER_MERCHANT_PaidCoin *coins, - const struct TALER_Amount *max_fee, - const struct TALER_Amount *amount, TALER_MERCHANT_PayCallback pay_cb, void *pay_cb_cls) { @@ -337,12 +340,12 @@ TALER_MERCHANT_pay_frontend (struct TALER_MERCHANT_Context *merchant, j_coin = json_pack ("{s:o, s:o," /* f/coin_pub */ " s:o, s:o," /* denom_pub / ub_sig */ " s:o}", /* coin_sig */ - "f", TALER_json_from_amount (&pc->amount_with_fee), - "coin_pub", TALER_json_from_data (&pc->coin_pub, + "f", TALER_JSON_from_amount (&pc->amount_with_fee), + "coin_pub", GNUNET_JSON_from_data (&pc->coin_pub, sizeof (struct TALER_CoinSpendPublicKeyP)), - "denom_pub", TALER_json_from_rsa_public_key (pc->denom_pub.rsa_public_key), - "ub_sig", TALER_json_from_rsa_signature (pc->denom_sig.rsa_signature), - "coin_sig", TALER_json_from_data (&pc->coin_sig, + "denom_pub", GNUNET_JSON_from_rsa_public_key (pc->denom_pub.rsa_public_key), + "ub_sig", GNUNET_JSON_from_rsa_signature (pc->denom_sig.rsa_signature), + "coin_sig", GNUNET_JSON_from_data (&pc->coin_sig, sizeof (struct TALER_CoinSpendSignatureP)) ); json_array_append (j_coins, @@ -405,17 +408,17 @@ TALER_MERCHANT_pay_frontend (struct TALER_MERCHANT_Context *merchant, " s:o, s:s," /* refund_deadline, exchange */ " s:o, s:o," /* coins, max_fee */ " s:o}", /* amount */ - "H_wire", TALER_json_from_data (&h_wire, + "H_wire", GNUNET_JSON_from_data (&h_wire, sizeof (h_wire)), - "H_contract", TALER_json_from_data (h_contract, + "H_contract", GNUNET_JSON_from_data (h_contract, sizeof (struct GNUNET_HashCode)), "transaction_id", (json_int_t) transaction_id, - "timestamp", TALER_json_from_abs (timestamp), - "refund_deadline", TALER_json_from_abs (refund_deadline), + "timestamp", GNUNET_JSON_from_time_abs (timestamp), + "refund_deadline", GNUNET_JSON_from_time_abs (refund_deadline), "exchange", exchange_uri, "coins", j_coins, - "max_fee", TALER_json_from_amount (max_fee), - "amount", TALER_json_from_amount (amount) + "max_fee", TALER_JSON_from_amount (max_fee), + "amount", TALER_JSON_from_amount (amount) ); if (0 != execution_deadline.abs_value_us) @@ -423,7 +426,7 @@ TALER_MERCHANT_pay_frontend (struct TALER_MERCHANT_Context *merchant, /* Frontend did have an execution date in mind, add it */ json_object_set_new (pay_obj, "edate", - TALER_json_from_abs (execution_deadline)); + GNUNET_JSON_from_time_abs (execution_deadline)); } ph = GNUNET_new (struct TALER_MERCHANT_Pay); diff --git a/src/lib/test_merchant_api.c b/src/lib/test_merchant_api.c index 97964f64..1c8e5f79 100644 --- a/src/lib/test_merchant_api.c +++ b/src/lib/test_merchant_api.c @@ -1059,7 +1059,7 @@ interpreter_run (void *cls, fail (is); return; } - TALER_hash_json (wire, + TALER_JSON_hash (wire, &h_wire); json_decref (wire); @@ -1076,7 +1076,7 @@ interpreter_run (void *cls, fail (is); return; } - TALER_hash_json (contract, + TALER_JSON_hash (contract, &h_contract); json_decref (contract); |