[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [taler-merchant] branch master updated: add session_sig to
From: |
gnunet |
Subject: |
[GNUnet-SVN] [taler-merchant] branch master updated: add session_sig to pay response |
Date: |
Wed, 10 Jan 2018 00:16:51 +0100 |
This is an automated email from the git hooks/post-receive script.
dold pushed a commit to branch master
in repository merchant.
The following commit(s) were added to refs/heads/master by this push:
new cde5619 add session_sig to pay response
cde5619 is described below
commit cde5619bea8fe11d4e19fa0baefc99582a9c14af
Author: Florian Dold <address@hidden>
AuthorDate: Wed Jan 10 00:16:16 2018 +0100
add session_sig to pay response
---
src/backend/taler-merchant-httpd_check-payment.c | 8 +--
src/backend/taler-merchant-httpd_pay.c | 62 ++++++++++++++++++------
2 files changed, 51 insertions(+), 19 deletions(-)
diff --git a/src/backend/taler-merchant-httpd_check-payment.c
b/src/backend/taler-merchant-httpd_check-payment.c
index 3079c5c..9f5bf0e 100644
--- a/src/backend/taler-merchant-httpd_check-payment.c
+++ b/src/backend/taler-merchant-httpd_check-payment.c
@@ -218,10 +218,10 @@ MH_handler_check_payment (struct TMH_RequestHandler *rh,
do_pay:
{
char *url = TMH_make_absolute_backend_url (connection, "trigger-pay",
- "contract_url", contract_url,
- "session_id", session_id,
- "h_contract_terms",
h_contract_terms_str,
- NULL);
+ "contract_url", contract_url,
+ "session_id", session_id,
+ "h_contract_terms",
h_contract_terms_str,
+ NULL);
int ret = TMH_RESPONSE_reply_json_pack (connection,
MHD_HTTP_OK,
"{s:s}",
diff --git a/src/backend/taler-merchant-httpd_pay.c
b/src/backend/taler-merchant-httpd_pay.c
index 974c092..a635c65 100644
--- a/src/backend/taler-merchant-httpd_pay.c
+++ b/src/backend/taler-merchant-httpd_pay.c
@@ -210,11 +210,6 @@ struct PayContext
void *json_parse_context;
/**
- * Transaction ID given in @e root.
- */
- const char *order_id;
-
- /**
* Hashed proposal.
*/
struct GNUNET_HashCode h_contract_terms;
@@ -354,6 +349,17 @@ struct PayContext
* Which operational mode is the /pay request made in?
*/
enum { PC_MODE_PAY, PC_MODE_ABORT_REFUND } mode;
+
+ /**
+ * Optional session id given in @e root.
+ * NULL if not given.
+ */
+ const char *session_id;
+
+ /**
+ * Transaction ID given in @e root.
+ */
+ const char *order_id;
};
@@ -457,6 +463,7 @@ sign_success_response (struct PayContext *pc)
struct GNUNET_CRYPTO_EddsaSignature sig;
struct PaymentResponsePS mr;
+
refunds = TM_get_refund_json (pc->mi,
&pc->h_contract_terms,
&ec,
@@ -474,16 +481,37 @@ sign_success_response (struct PayContext *pc)
&mr.purpose,
&sig);
- return TMH_RESPONSE_make_json_pack ("{s:O, s:o, s:o, s:o}",
- "contract_terms",
- pc->contract_terms,
- "sig",
- GNUNET_JSON_from_data_auto (&sig),
- "h_contract_terms",
- GNUNET_JSON_from_data
(&pc->h_contract_terms,
- sizeof (struct
GNUNET_HashCode)),
- "refund_permissions",
- refunds);
+ json_t *resp = json_pack ("{s:O, s:o, s:o, s:o}",
+ "contract_terms",
+ pc->contract_terms,
+ "sig",
+ GNUNET_JSON_from_data_auto (&sig),
+ "h_contract_terms",
+ GNUNET_JSON_from_data (&pc->h_contract_terms,
+ sizeof (struct
GNUNET_HashCode)),
+ "refund_permissions",
+ refunds);
+
+
+ if (NULL != pc->session_id) {
+ struct GNUNET_CRYPTO_EddsaSignature session_sig;
+ struct TALER_MerchantPaySessionSigPS mps;
+
+ GNUNET_assert (NULL != pc->order_id);
+
+ mps.purpose.size = htonl (sizeof (struct TALER_MerchantPaySessionSigPS));
+ mps.purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_PAY_SESSION);
+ GNUNET_CRYPTO_hash (pc->order_id, strlen (pc->order_id), &mps.h_order_id);
+ GNUNET_CRYPTO_hash (pc->session_id, strlen (pc->session_id),
&mps.h_session_id);
+
+ GNUNET_CRYPTO_eddsa_sign (&pc->mi->privkey.eddsa_priv,
+ &mps.purpose,
+ &session_sig);
+
+ json_object_set (resp, "session_sig", GNUNET_JSON_from_data_auto
(&session_sig));
+ }
+
+ return TMH_RESPONSE_make_json (resp);
}
@@ -1272,6 +1300,10 @@ parse_pay (struct MHD_Connection *connection,
GNUNET_break (0);
return res;
}
+
+ pc->session_id = json_string_value (json_object_get (root, "session_id"));
+ pc->order_id = order_id;
+
qs = db->find_contract_terms (db->cls,
&pc->contract_terms,
order_id,
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [taler-merchant] branch master updated: add session_sig to pay response,
gnunet <=