diff options
author | Marcello Stanisci <marcello.stanisci@inria.fr> | 2015-10-29 16:17:37 +0100 |
---|---|---|
committer | Marcello Stanisci <marcello.stanisci@inria.fr> | 2015-10-29 16:17:37 +0100 |
commit | 4a435a29de050d17ef5de531cc2e61a366998422 (patch) | |
tree | 61fa04955065fdaac47ee3be607153aa8223ae5e | |
parent | bfcb32339fbed0513090b0f546b04c90c11ea474 (diff) | |
download | merchant-4a435a29de050d17ef5de531cc2e61a366998422.tar.gz merchant-4a435a29de050d17ef5de531cc2e61a366998422.tar.bz2 merchant-4a435a29de050d17ef5de531cc2e61a366998422.zip |
completing /contract REST call
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/backend/taler-merchant-httpd_contract.c | 19 | ||||
-rw-r--r-- | src/backend/taler-merchant-httpd_obsolete.c | 1 | ||||
-rw-r--r-- | src/include/merchant.h | 4 | ||||
-rw-r--r-- | src/tests/test_contract.c | 4 |
6 files changed, 21 insertions, 10 deletions
diff --git a/configure.ac b/configure.ac index 55d1e196..67d84f11 100644 --- a/configure.ac +++ b/configure.ac @@ -180,7 +180,6 @@ AC_CHECK_FUNCS([strdup]) AC_CONFIG_FILES([Makefile src/Makefile src/include/Makefile -src/tests/Makefile src/backend/Makefile src/backend-lib/Makefile]) AC_OUTPUT diff --git a/src/Makefile.am b/src/Makefile.am index 9a5b5646..665be7d3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,2 +1,2 @@ AM_CPPFLAGS = -I$(top_srcdir)/src/include -SUBDIRS = include backend-lib backend tests +SUBDIRS = include backend-lib backend diff --git a/src/backend/taler-merchant-httpd_contract.c b/src/backend/taler-merchant-httpd_contract.c index e7278c7c..d28ad4ed 100644 --- a/src/backend/taler-merchant-httpd_contract.c +++ b/src/backend/taler-merchant-httpd_contract.c @@ -25,6 +25,7 @@ #include <jansson.h> #include <gnunet/gnunet_util_lib.h> #include <curl/curl.h> +#include <taler/taler_signatures.h> #include <taler/taler_amount_lib.h> #include <taler/taler_json_lib.h> #include <taler/taler_mint_service.h> @@ -73,6 +74,7 @@ MH_handler_contract (struct TMH_RequestHandler *rh, struct GNUNET_CRYPTO_EddsaPublicKey pubkey; struct MERCHANT_Contract contract; char *contract_str; + struct GNUNET_CRYPTO_EddsaSignature contract_sig; res = TMH_PARSE_post_json (connection, connection_cls, @@ -135,7 +137,20 @@ MH_handler_contract (struct TMH_RequestHandler *rh, TALER_json_from_data (&pubkey, sizeof (pubkey))); /* Sign */ - - return TMH_RESPONSE_reply_json (connection, root, MHD_HTTP_OK); + contract_str = json_dumps (root, JSON_COMPACT | JSON_SORT_KEYS); + GNUNET_CRYPTO_hash (contract_str, strlen (contract_str), &contract.h_contract); + contract.purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_CONTRACT); + contract.purpose.size = htonl (sizeof (contract)); + GNUNET_CRYPTO_eddsa_sign (&privkey, &contract.purpose, &contract_sig); + + return TMH_RESPONSE_reply_json_pack (connection, + MHD_HTTP_OK, + "{s:o, s:o, s:o}", + "contract", root, + "sig", TALER_json_from_data + (&contract_sig, sizeof (contract_sig)), + "h_contract", TALER_json_from_data + (&contract.h_contract, + sizeof (contract.h_contract))); } diff --git a/src/backend/taler-merchant-httpd_obsolete.c b/src/backend/taler-merchant-httpd_obsolete.c index ddbda549..a96dad59 100644 --- a/src/backend/taler-merchant-httpd_obsolete.c +++ b/src/backend/taler-merchant-httpd_obsolete.c @@ -25,6 +25,7 @@ #include <jansson.h> #include <gnunet/gnunet_util_lib.h> #include <curl/curl.h> +#include <taler/taler_signatures.h> #include <taler/taler_json_lib.h> #include <taler/taler_mint_service.h> #include "taler-mint-httpd_parsing.h" diff --git a/src/include/merchant.h b/src/include/merchant.h index 04dd253d..0efd4388 100644 --- a/src/include/merchant.h +++ b/src/include/merchant.h @@ -75,9 +75,9 @@ struct MERCHANT_Contract /** * Hash of the JSON contract in UTF-8 including 0-termination, - * using JSON_COMPACT encoding with sorted fields. + * using JSON_COMPACT | JSON_SORT_KEYS */ - struct GNUNET_HashCode h_contract_details; + struct GNUNET_HashCode h_contract; }; diff --git a/src/tests/test_contract.c b/src/tests/test_contract.c index d086449d..147ea4f3 100644 --- a/src/tests/test_contract.c +++ b/src/tests/test_contract.c @@ -101,11 +101,7 @@ run (void *cls, char *const *args, const char *cfgfile, struct TALER_Amount amount; int64_t t_id; int64_t p_id; - #ifdef OBSOLETE - struct ContractNBO contract; - #else struct Contract contract; - #endif struct GNUNET_TIME_Absolute edate; struct GNUNET_TIME_Absolute now; uint64_t nounce; |