diff options
author | Thien-Thi Nguyen <ttn@gnuvola.org> | 2022-04-17 04:59:01 -0400 |
---|---|---|
committer | Thien-Thi Nguyen <ttn@gnuvola.org> | 2022-04-17 04:59:01 -0400 |
commit | 0bd63c1394e73d4eba97145724e953d16d3029c0 (patch) | |
tree | aae880d9187f7b711067236ea2900e964919a093 | |
parent | 58f1ae25c69e0e378af2c45b929c8bbf7d5c1b2a (diff) | |
download | merchant-0bd63c1394e73d4eba97145724e953d16d3029c0.tar.gz merchant-0bd63c1394e73d4eba97145724e953d16d3029c0.tar.bz2 merchant-0bd63c1394e73d4eba97145724e953d16d3029c0.zip |
Use new exchange funcs: TALER_merchant_pay_{sign,verify}
* src/backend/taler-merchant-httpd_post-orders-ID-paid.c
(TMH_post_orders_ID_paid): Rework to use ‘TALER_merchant_pay_verify’.
* src/backend/taler-merchant-httpd_post-orders-ID-pay.c
(execute_pay_transaction): Rework to use ‘TALER_merchant_pay_sign’.
* src/lib/merchant_api_post_order_pay.c
(handle_pay_finished): Rework to use ‘TALER_merchant_pay_verify’.
-rw-r--r-- | src/backend/taler-merchant-httpd_post-orders-ID-paid.c | 18 | ||||
-rw-r--r-- | src/backend/taler-merchant-httpd_post-orders-ID-pay.c | 14 | ||||
-rw-r--r-- | src/lib/merchant_api_post_order_pay.c | 12 |
3 files changed, 13 insertions, 31 deletions
diff --git a/src/backend/taler-merchant-httpd_post-orders-ID-paid.c b/src/backend/taler-merchant-httpd_post-orders-ID-paid.c index 0e7ea59e..bc8ccfd9 100644 --- a/src/backend/taler-merchant-httpd_post-orders-ID-paid.c +++ b/src/backend/taler-merchant-httpd_post-orders-ID-paid.c @@ -67,13 +67,10 @@ TMH_post_orders_ID_paid (const struct TMH_RequestHandler *rh, struct MHD_Connection *connection, struct TMH_HandlerContext *hc) { - struct TALER_PaymentResponsePS pr = { - .purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_PAYMENT_OK), - .purpose.size = htonl (sizeof (pr)) - }; const char *order_id = hc->infix; struct TALER_MerchantSignatureP merchant_sig; const char *session_id; + struct TALER_PrivateContractHashP hct; json_t *contract_terms; const char *fulfillment_url; enum GNUNET_DB_QueryStatus qs; @@ -83,7 +80,7 @@ TMH_post_orders_ID_paid (const struct TMH_RequestHandler *rh, GNUNET_JSON_spec_fixed_auto ("sig", &merchant_sig), GNUNET_JSON_spec_fixed_auto ("h_contract", - &pr.h_contract_terms), + &hct), GNUNET_JSON_spec_string ("session_id", &session_id), GNUNET_JSON_spec_end () @@ -104,10 +101,9 @@ TMH_post_orders_ID_paid (const struct TMH_RequestHandler *rh, if (GNUNET_OK != - GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_MERCHANT_PAYMENT_OK, - &pr, - &merchant_sig.eddsa_sig, - &hc->instance->merchant_pub.eddsa_pub)) + TALER_merchant_pay_verify (&hct, + &hc->instance->merchant_pub, + &merchant_sig)) { GNUNET_break_op (0); return TALER_MHD_reply_with_error (connection, @@ -164,7 +160,7 @@ TMH_post_orders_ID_paid (const struct TMH_RequestHandler *rh, TALER_EC_GENERIC_FAILED_COMPUTE_JSON_HASH, NULL); } - if (0 != GNUNET_memcmp (&pr.h_contract_terms, + if (0 != GNUNET_memcmp (&hct, &h_contract_terms)) { json_decref (contract_terms); @@ -186,7 +182,7 @@ TMH_post_orders_ID_paid (const struct TMH_RequestHandler *rh, fulfillment_url); qs = TMH_db->mark_contract_paid (TMH_db->cls, hc->instance->settings.id, - &pr.h_contract_terms, + &hct, session_id); /* If the order was paid already, we get qs == 0. */ if (0 > qs) diff --git a/src/backend/taler-merchant-httpd_post-orders-ID-pay.c b/src/backend/taler-merchant-httpd_post-orders-ID-pay.c index 10dca3d9..375f0930 100644 --- a/src/backend/taler-merchant-httpd_post-orders-ID-pay.c +++ b/src/backend/taler-merchant-httpd_post-orders-ID-pay.c @@ -1927,17 +1927,9 @@ execute_pay_transaction (struct PayContext *pc) /* Sign on our end (as the payment did go through, even if it may have been refunded already) */ - { - struct TALER_PaymentResponsePS mr = { - .purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_PAYMENT_OK), - .purpose.size = htonl (sizeof (mr)), - .h_contract_terms = pc->h_contract_terms - }; - - GNUNET_CRYPTO_eddsa_sign (&pc->hc->instance->merchant_priv.eddsa_priv, - &mr, - &sig); - } + TALER_merchant_pay_sign (&pc->h_contract_terms, + &pc->hc->instance->merchant_priv, + &sig); /* Build the response */ resume_pay_with_response ( diff --git a/src/lib/merchant_api_post_order_pay.c b/src/lib/merchant_api_post_order_pay.c index fc188a98..c246a1d4 100644 --- a/src/lib/merchant_api_post_order_pay.c +++ b/src/lib/merchant_api_post_order_pay.c @@ -265,11 +265,6 @@ handle_pay_finished (void *cls, if (oph->am_wallet) { /* Here we can (and should) verify the merchant's signature */ - struct TALER_PaymentResponsePS pr = { - .purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_PAYMENT_OK), - .purpose.size = htonl (sizeof (pr)), - .h_contract_terms = oph->h_contract_terms - }; struct GNUNET_JSON_Specification spec[] = { GNUNET_JSON_spec_fixed_auto ("sig", &merchant_sig), @@ -289,10 +284,9 @@ handle_pay_finished (void *cls, } if (GNUNET_OK != - GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_MERCHANT_PAYMENT_OK, - &pr, - &merchant_sig.eddsa_sig, - &oph->merchant_pub.eddsa_pub)) + TALER_merchant_pay_verify (&oph->h_contract_terms, + &oph->merchant_pub, + &merchant_sig)) { GNUNET_break_op (0); hr.ec = TALER_EC_GENERIC_INVALID_RESPONSE; |