updating libtalerexchange to new REST API (#6067)
This commit is contained in:
parent
fb9324338d
commit
582ce77d93
@ -1,6 +1,6 @@
|
||||
/*
|
||||
This file is part of TALER
|
||||
Copyright (C) 2014, 2015, 2018, 2019 Taler Systems SA
|
||||
Copyright (C) 2014-2020 Taler Systems SA
|
||||
|
||||
TALER is free software; you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
@ -513,7 +513,23 @@ TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle *exchange,
|
||||
struct GNUNET_HashCode h_wire;
|
||||
struct GNUNET_HashCode denom_pub_hash;
|
||||
struct TALER_Amount amount_without_fee;
|
||||
char arg_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2 + 32];
|
||||
|
||||
{
|
||||
char pub_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2];
|
||||
char *end;
|
||||
|
||||
end = GNUNET_STRINGS_data_to_string (coin_pub,
|
||||
sizeof (struct
|
||||
TALER_CoinSpendPublicKeyP),
|
||||
pub_str,
|
||||
sizeof (pub_str));
|
||||
*end = '\0';
|
||||
GNUNET_snprintf (arg_str,
|
||||
sizeof (arg_str),
|
||||
"/coins/%s/deposit",
|
||||
pub_str);
|
||||
}
|
||||
(void) GNUNET_TIME_round_abs (&wire_deadline);
|
||||
(void) GNUNET_TIME_round_abs (&refund_deadline);
|
||||
GNUNET_assert (refund_deadline.abs_value_us <= wire_deadline.abs_value_us);
|
||||
@ -557,7 +573,7 @@ TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle *exchange,
|
||||
|
||||
deposit_obj = json_pack ("{s:o, s:O," /* f/wire */
|
||||
" s:o, s:o," /* h_wire, h_contract_terms */
|
||||
" s:o, s:o," /* coin_pub, denom_pub */
|
||||
" s:o," /* denom_pub */
|
||||
" s:o, s:o," /* ub_sig, timestamp */
|
||||
" s:o," /* merchant_pub */
|
||||
" s:o, s:o," /* refund_deadline, wire_deadline */
|
||||
@ -567,7 +583,6 @@ TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle *exchange,
|
||||
"h_wire", GNUNET_JSON_from_data_auto (&h_wire),
|
||||
"h_contract_terms", GNUNET_JSON_from_data_auto (
|
||||
h_contract_terms),
|
||||
"coin_pub", GNUNET_JSON_from_data_auto (coin_pub),
|
||||
"denom_pub_hash", GNUNET_JSON_from_data_auto (
|
||||
&denom_pub_hash),
|
||||
"ub_sig", GNUNET_JSON_from_rsa_signature (
|
||||
@ -592,7 +607,8 @@ TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle *exchange,
|
||||
dh->exchange = exchange;
|
||||
dh->cb = cb;
|
||||
dh->cb_cls = cb_cls;
|
||||
dh->url = TEAH_path_to_url (exchange, "/deposit");
|
||||
dh->url = TEAH_path_to_url (exchange,
|
||||
arg_str);
|
||||
dh->depconf.purpose.size = htonl (sizeof (struct
|
||||
TALER_DepositConfirmationPS));
|
||||
dh->depconf.purpose.purpose = htonl (
|
||||
|
@ -328,6 +328,7 @@ TALER_EXCHANGE_recoup (struct TALER_EXCHANGE_Handle *exchange,
|
||||
struct GNUNET_HashCode h_denom_pub;
|
||||
json_t *recoup_obj;
|
||||
CURL *eh;
|
||||
char arg_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2 + 32];
|
||||
|
||||
GNUNET_assert (GNUNET_YES ==
|
||||
TEAH_handle_is_ready (exchange));
|
||||
@ -345,14 +346,12 @@ TALER_EXCHANGE_recoup (struct TALER_EXCHANGE_Handle *exchange,
|
||||
&coin_sig.eddsa_signature));
|
||||
|
||||
recoup_obj = json_pack ("{s:o, s:o," /* denom pub/sig */
|
||||
" s:o, s:o," /* coin pub/sig */
|
||||
" s:o," /* sig */
|
||||
" s:o, s:o}", /* coin_bks */
|
||||
"denom_pub_hash", GNUNET_JSON_from_data_auto (
|
||||
&h_denom_pub),
|
||||
"denom_sig", GNUNET_JSON_from_rsa_signature (
|
||||
denom_sig->rsa_signature),
|
||||
"coin_pub", GNUNET_JSON_from_data_auto (
|
||||
&pr.coin_pub),
|
||||
"coin_sig", GNUNET_JSON_from_data_auto (&coin_sig),
|
||||
"coin_blind_key_secret", GNUNET_JSON_from_data_auto (
|
||||
&ps->blinding_key),
|
||||
@ -364,6 +363,22 @@ TALER_EXCHANGE_recoup (struct TALER_EXCHANGE_Handle *exchange,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
{
|
||||
char pub_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2];
|
||||
char *end;
|
||||
|
||||
end = GNUNET_STRINGS_data_to_string (&pr.coin_pub,
|
||||
sizeof (struct
|
||||
TALER_CoinSpendPublicKeyP),
|
||||
pub_str,
|
||||
sizeof (pub_str));
|
||||
*end = '\0';
|
||||
GNUNET_snprintf (arg_str,
|
||||
sizeof (arg_str),
|
||||
"/coins/%s/recoup",
|
||||
pub_str);
|
||||
}
|
||||
|
||||
ph = GNUNET_new (struct TALER_EXCHANGE_RecoupHandle);
|
||||
ph->coin_pub = pr.coin_pub;
|
||||
ph->exchange = exchange;
|
||||
@ -371,7 +386,8 @@ TALER_EXCHANGE_recoup (struct TALER_EXCHANGE_Handle *exchange,
|
||||
ph->pk.key.rsa_public_key = NULL; /* zero out, as lifetime cannot be warranted */
|
||||
ph->cb = recoup_cb;
|
||||
ph->cb_cls = recoup_cb_cls;
|
||||
ph->url = TEAH_path_to_url (exchange, "/recoup");
|
||||
ph->url = TEAH_path_to_url (exchange,
|
||||
arg_str);
|
||||
ph->was_refreshed = was_refreshed;
|
||||
eh = TEL_curl_easy_get (ph->url);
|
||||
if (GNUNET_OK !=
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
This file is part of TALER
|
||||
Copyright (C) 2015, 2016, 2017, 2019 Taler Systems SA
|
||||
Copyright (C) 2015-2020 Taler Systems SA
|
||||
|
||||
TALER is free software; you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
@ -1165,6 +1165,7 @@ TALER_EXCHANGE_refresh_melt (struct TALER_EXCHANGE_Handle *exchange,
|
||||
struct TALER_CoinSpendSignatureP confirm_sig;
|
||||
struct TALER_RefreshMeltCoinAffirmationPS melt;
|
||||
struct GNUNET_HashCode h_denom_pub;
|
||||
char arg_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2 + 32];
|
||||
|
||||
GNUNET_assert (GNUNET_YES ==
|
||||
TEAH_handle_is_ready (exchange));
|
||||
@ -1175,7 +1176,6 @@ TALER_EXCHANGE_refresh_melt (struct TALER_EXCHANGE_Handle *exchange,
|
||||
GNUNET_break (0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
melt.purpose.purpose = htonl (TALER_SIGNATURE_WALLET_COIN_MELT);
|
||||
melt.purpose.size = htonl (sizeof (struct
|
||||
TALER_RefreshMeltCoinAffirmationPS));
|
||||
@ -1212,6 +1212,22 @@ TALER_EXCHANGE_refresh_melt (struct TALER_EXCHANGE_Handle *exchange,
|
||||
free_melt_data (md);
|
||||
return NULL;
|
||||
}
|
||||
{
|
||||
char pub_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2];
|
||||
char *end;
|
||||
|
||||
end = GNUNET_STRINGS_data_to_string (&melt.coin_pub,
|
||||
sizeof (struct
|
||||
TALER_CoinSpendPublicKeyP),
|
||||
pub_str,
|
||||
sizeof (pub_str));
|
||||
*end = '\0';
|
||||
GNUNET_snprintf (arg_str,
|
||||
sizeof (arg_str),
|
||||
"/coins/%s/melt",
|
||||
pub_str);
|
||||
}
|
||||
|
||||
key_state = TALER_EXCHANGE_get_keys (exchange);
|
||||
dki = TALER_EXCHANGE_get_denomination_key (key_state,
|
||||
&md->melted_coin.pub_key);
|
||||
@ -1226,7 +1242,7 @@ TALER_EXCHANGE_refresh_melt (struct TALER_EXCHANGE_Handle *exchange,
|
||||
rmh->melt_cb_cls = melt_cb_cls;
|
||||
rmh->md = md;
|
||||
rmh->url = TEAH_path_to_url (exchange,
|
||||
"/refresh/melt");
|
||||
arg_str);
|
||||
eh = TEL_curl_easy_get (rmh->url);
|
||||
if (GNUNET_OK !=
|
||||
TALER_curl_easy_post (&rmh->ctx,
|
||||
@ -1555,6 +1571,7 @@ TALER_EXCHANGE_refresh_reveal (struct TALER_EXCHANGE_Handle *exchange,
|
||||
struct GNUNET_CURL_Context *ctx;
|
||||
struct MeltData *md;
|
||||
struct TALER_TransferPublicKeyP transfer_pub;
|
||||
char arg_str[sizeof (struct TALER_RefreshCommitmentP) * 2 + 32];
|
||||
|
||||
if (noreveal_index >= TALER_CNC_KAPPA)
|
||||
{
|
||||
@ -1661,9 +1678,7 @@ TALER_EXCHANGE_refresh_reveal (struct TALER_EXCHANGE_Handle *exchange,
|
||||
}
|
||||
|
||||
/* build main JSON request */
|
||||
reveal_obj = json_pack ("{s:o, s:o, s:o, s:o, s:o, s:o}",
|
||||
"rc",
|
||||
GNUNET_JSON_from_data_auto (&md->rc),
|
||||
reveal_obj = json_pack ("{s:o, s:o, s:o, s:o, s:o}",
|
||||
"transfer_pub",
|
||||
GNUNET_JSON_from_data_auto (&transfer_pub),
|
||||
"transfer_privs",
|
||||
@ -1680,6 +1695,21 @@ TALER_EXCHANGE_refresh_reveal (struct TALER_EXCHANGE_Handle *exchange,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
{
|
||||
char pub_str[sizeof (struct TALER_RefreshCommitmentP) * 2];
|
||||
char *end;
|
||||
|
||||
end = GNUNET_STRINGS_data_to_string (&md->rc,
|
||||
sizeof (struct
|
||||
TALER_RefreshCommitmentP),
|
||||
pub_str,
|
||||
sizeof (pub_str));
|
||||
*end = '\0';
|
||||
GNUNET_snprintf (arg_str,
|
||||
sizeof (arg_str),
|
||||
"/refreshes/%s/reveal",
|
||||
pub_str);
|
||||
}
|
||||
/* finally, we can actually issue the request */
|
||||
rrh = GNUNET_new (struct TALER_EXCHANGE_RefreshRevealHandle);
|
||||
rrh->exchange = exchange;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
This file is part of TALER
|
||||
Copyright (C) 2015, 2016, 2019 Taler Systems SA
|
||||
Copyright (C) 2015-2020 Taler Systems SA
|
||||
|
||||
TALER is free software; you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
@ -423,8 +423,7 @@ TALER_EXCHANGE_refresh_link (struct TALER_EXCHANGE_Handle *exchange,
|
||||
CURL *eh;
|
||||
struct GNUNET_CURL_Context *ctx;
|
||||
struct TALER_CoinSpendPublicKeyP coin_pub;
|
||||
char *pub_str;
|
||||
char *arg_str;
|
||||
char arg_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2 + 32];
|
||||
|
||||
if (GNUNET_YES !=
|
||||
TEAH_handle_is_ready (exchange))
|
||||
@ -435,23 +434,28 @@ TALER_EXCHANGE_refresh_link (struct TALER_EXCHANGE_Handle *exchange,
|
||||
|
||||
GNUNET_CRYPTO_eddsa_key_get_public (&coin_priv->eddsa_priv,
|
||||
&coin_pub.eddsa_pub);
|
||||
pub_str = GNUNET_STRINGS_data_to_string_alloc (&coin_pub,
|
||||
sizeof (struct
|
||||
TALER_CoinSpendPublicKeyP));
|
||||
GNUNET_asprintf (&arg_str,
|
||||
"/refresh/link?coin_pub=%s",
|
||||
pub_str);
|
||||
GNUNET_free (pub_str);
|
||||
{
|
||||
char pub_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2];
|
||||
char *end;
|
||||
|
||||
end = GNUNET_STRINGS_data_to_string (&coin_pub,
|
||||
sizeof (struct
|
||||
TALER_CoinSpendPublicKeyP),
|
||||
pub_str,
|
||||
sizeof (pub_str));
|
||||
*end = '\0';
|
||||
GNUNET_snprintf (arg_str,
|
||||
sizeof (arg_str),
|
||||
"/coins/%s/link",
|
||||
pub_str);
|
||||
}
|
||||
rlh = GNUNET_new (struct TALER_EXCHANGE_RefreshLinkHandle);
|
||||
rlh->exchange = exchange;
|
||||
rlh->link_cb = link_cb;
|
||||
rlh->link_cb_cls = link_cb_cls;
|
||||
rlh->coin_priv = *coin_priv;
|
||||
rlh->url = TEAH_path_to_url (exchange, arg_str);
|
||||
GNUNET_free (arg_str);
|
||||
|
||||
|
||||
rlh->url = TEAH_path_to_url (exchange,
|
||||
arg_str);
|
||||
eh = TEL_curl_easy_get (rlh->url);
|
||||
ctx = TEAH_handle_to_context (exchange);
|
||||
rlh->job = GNUNET_CURL_job_add (ctx,
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
This file is part of TALER
|
||||
Copyright (C) 2014, 2015, 2016 Taler Systems SA
|
||||
Copyright (C) 2014-2020 Taler Systems SA
|
||||
|
||||
TALER is free software; you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
@ -333,16 +333,31 @@ TALER_EXCHANGE_refund2 (struct TALER_EXCHANGE_Handle *exchange,
|
||||
struct GNUNET_CURL_Context *ctx;
|
||||
json_t *refund_obj;
|
||||
CURL *eh;
|
||||
char arg_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2 + 32];
|
||||
|
||||
{
|
||||
char pub_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2];
|
||||
char *end;
|
||||
|
||||
end = GNUNET_STRINGS_data_to_string (coin_pub,
|
||||
sizeof (struct
|
||||
TALER_CoinSpendPublicKeyP),
|
||||
pub_str,
|
||||
sizeof (pub_str));
|
||||
*end = '\0';
|
||||
GNUNET_snprintf (arg_str,
|
||||
sizeof (arg_str),
|
||||
"/coins/%s/refund",
|
||||
pub_str);
|
||||
}
|
||||
refund_obj = json_pack ("{s:o, s:o," /* amount/fee */
|
||||
" s:o, s:o," /* h_contract_terms, coin_pub */
|
||||
" s:o," /* h_contract_terms */
|
||||
" s:I," /* rtransaction id */
|
||||
" s:o, s:o}", /* merchant_pub, merchant_sig */
|
||||
"refund_amount", TALER_JSON_from_amount (amount),
|
||||
"refund_fee", TALER_JSON_from_amount (refund_fee),
|
||||
"h_contract_terms", GNUNET_JSON_from_data_auto (
|
||||
h_contract_terms),
|
||||
"coin_pub", GNUNET_JSON_from_data_auto (coin_pub),
|
||||
"rtransaction_id", (json_int_t) rtransaction_id,
|
||||
"merchant_pub", GNUNET_JSON_from_data_auto (
|
||||
merchant_pub),
|
||||
@ -359,7 +374,8 @@ TALER_EXCHANGE_refund2 (struct TALER_EXCHANGE_Handle *exchange,
|
||||
rh->exchange = exchange;
|
||||
rh->cb = cb;
|
||||
rh->cb_cls = cb_cls;
|
||||
rh->url = TEAH_path_to_url (exchange, "/refund");
|
||||
rh->url = TEAH_path_to_url (exchange,
|
||||
arg_str);
|
||||
rh->depconf.purpose.size = htonl (sizeof (struct TALER_RefundConfirmationPS));
|
||||
rh->depconf.purpose.purpose = htonl (TALER_SIGNATURE_EXCHANGE_CONFIRM_REFUND);
|
||||
rh->depconf.h_contract_terms = *h_contract_terms;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
This file is part of TALER
|
||||
Copyright (C) 2014, 2015 Taler Systems SA
|
||||
Copyright (C) 2014-2020 Taler Systems SA
|
||||
|
||||
TALER is free software; you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
@ -659,8 +659,7 @@ TALER_EXCHANGE_reserve_status (struct TALER_EXCHANGE_Handle *exchange,
|
||||
struct TALER_EXCHANGE_ReserveStatusHandle *rsh;
|
||||
struct GNUNET_CURL_Context *ctx;
|
||||
CURL *eh;
|
||||
char *pub_str;
|
||||
char *arg_str;
|
||||
char arg_str[sizeof (struct TALER_ReservePublicKeyP) * 2 + 16];
|
||||
|
||||
if (GNUNET_YES !=
|
||||
TEAH_handle_is_ready (exchange))
|
||||
@ -668,13 +667,21 @@ TALER_EXCHANGE_reserve_status (struct TALER_EXCHANGE_Handle *exchange,
|
||||
GNUNET_break (0);
|
||||
return NULL;
|
||||
}
|
||||
pub_str = GNUNET_STRINGS_data_to_string_alloc (reserve_pub,
|
||||
{
|
||||
char pub_str[sizeof (struct TALER_ReservePublicKeyP) * 2];
|
||||
char *end;
|
||||
|
||||
end = GNUNET_STRINGS_data_to_string (reserve_pub,
|
||||
sizeof (struct
|
||||
TALER_ReservePublicKeyP));
|
||||
GNUNET_asprintf (&arg_str,
|
||||
"/reserve/status?reserve_pub=%s",
|
||||
TALER_ReservePublicKeyP),
|
||||
pub_str,
|
||||
sizeof (pub_str));
|
||||
*end = '\0';
|
||||
GNUNET_snprintf (arg_str,
|
||||
sizeof (arg_str),
|
||||
"/reserves/%s",
|
||||
pub_str);
|
||||
GNUNET_free (pub_str);
|
||||
}
|
||||
rsh = GNUNET_new (struct TALER_EXCHANGE_ReserveStatusHandle);
|
||||
rsh->exchange = exchange;
|
||||
rsh->cb = cb;
|
||||
@ -682,8 +689,6 @@ TALER_EXCHANGE_reserve_status (struct TALER_EXCHANGE_Handle *exchange,
|
||||
rsh->reserve_pub = *reserve_pub;
|
||||
rsh->url = TEAH_path_to_url (exchange,
|
||||
arg_str);
|
||||
GNUNET_free (arg_str);
|
||||
|
||||
eh = TEL_curl_easy_get (rsh->url);
|
||||
ctx = TEAH_handle_to_context (exchange);
|
||||
rsh->job = GNUNET_CURL_job_add (ctx,
|
||||
@ -1063,26 +1068,40 @@ reserve_withdraw_internal (struct TALER_EXCHANGE_Handle *exchange,
|
||||
json_t *withdraw_obj;
|
||||
CURL *eh;
|
||||
struct GNUNET_HashCode h_denom_pub;
|
||||
char arg_str[sizeof (struct TALER_ReservePublicKeyP) * 2 + 32];
|
||||
|
||||
{
|
||||
char pub_str[sizeof (struct TALER_ReservePublicKeyP) * 2];
|
||||
char *end;
|
||||
|
||||
end = GNUNET_STRINGS_data_to_string (reserve_pub,
|
||||
sizeof (struct
|
||||
TALER_ReservePublicKeyP),
|
||||
pub_str,
|
||||
sizeof (pub_str));
|
||||
*end = '\0';
|
||||
GNUNET_snprintf (arg_str,
|
||||
sizeof (arg_str),
|
||||
"/reserves/%s/withdraw",
|
||||
pub_str);
|
||||
}
|
||||
wsh = GNUNET_new (struct TALER_EXCHANGE_ReserveWithdrawHandle);
|
||||
wsh->exchange = exchange;
|
||||
wsh->cb = res_cb;
|
||||
wsh->cb_cls = res_cb_cls;
|
||||
wsh->pk = *pk;
|
||||
wsh->pk.key.rsa_public_key = GNUNET_CRYPTO_rsa_public_key_dup (
|
||||
pk->key.rsa_public_key);
|
||||
wsh->pk.key.rsa_public_key
|
||||
= GNUNET_CRYPTO_rsa_public_key_dup (pk->key.rsa_public_key);
|
||||
wsh->reserve_pub = *reserve_pub;
|
||||
wsh->c_hash = pd->c_hash;
|
||||
GNUNET_CRYPTO_rsa_public_key_hash (pk->key.rsa_public_key,
|
||||
&h_denom_pub);
|
||||
withdraw_obj = json_pack ("{s:o, s:o," /* denom_pub_hash and coin_ev */
|
||||
" s:o, s:o}",/* reserve_pub and reserve_sig */
|
||||
" s:o}",/* reserve_pub and reserve_sig */
|
||||
"denom_pub_hash", GNUNET_JSON_from_data_auto (
|
||||
&h_denom_pub),
|
||||
"coin_ev", GNUNET_JSON_from_data (pd->coin_ev,
|
||||
pd->coin_ev_size),
|
||||
"reserve_pub", GNUNET_JSON_from_data_auto (
|
||||
reserve_pub),
|
||||
"reserve_sig", GNUNET_JSON_from_data_auto (
|
||||
reserve_sig));
|
||||
if (NULL == withdraw_obj)
|
||||
@ -1095,9 +1114,9 @@ reserve_withdraw_internal (struct TALER_EXCHANGE_Handle *exchange,
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||
"Attempting to withdraw from reserve %s\n",
|
||||
TALER_B2S (reserve_pub));
|
||||
|
||||
wsh->ps = *ps;
|
||||
wsh->url = TEAH_path_to_url (exchange, "/reserve/withdraw");
|
||||
wsh->url = TEAH_path_to_url (exchange,
|
||||
arg_str);
|
||||
eh = TEL_curl_easy_get (wsh->url);
|
||||
if (GNUNET_OK !=
|
||||
TALER_curl_easy_post (&wsh->ctx,
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
This file is part of TALER
|
||||
Copyright (C) 2014, 2015, 2016 Taler Systems SA
|
||||
Copyright (C) 2014-2020 Taler Systems SA
|
||||
|
||||
TALER is free software; you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
@ -280,8 +280,12 @@ TALER_EXCHANGE_track_transaction (struct TALER_EXCHANGE_Handle *exchange,
|
||||
struct TALER_MerchantSignatureP merchant_sig;
|
||||
struct TALER_EXCHANGE_TrackTransactionHandle *dwh;
|
||||
struct GNUNET_CURL_Context *ctx;
|
||||
json_t *deposit_wtid_obj;
|
||||
CURL *eh;
|
||||
char arg_str[(sizeof (struct TALER_CoinSpendPublicKeyP)
|
||||
+ sizeof (struct GNUNET_HashCode)
|
||||
+ sizeof (struct TALER_MerchantPublicKeyP)
|
||||
+ sizeof (struct GNUNET_HashCode)
|
||||
+ sizeof (struct TALER_MerchantSignatureP)) * 2 + 48];
|
||||
|
||||
if (GNUNET_YES !=
|
||||
TEAH_handle_is_ready (exchange))
|
||||
@ -301,29 +305,61 @@ TALER_EXCHANGE_track_transaction (struct TALER_EXCHANGE_Handle *exchange,
|
||||
GNUNET_CRYPTO_eddsa_sign (&merchant_priv->eddsa_priv,
|
||||
&dtp.purpose,
|
||||
&merchant_sig.eddsa_sig));
|
||||
deposit_wtid_obj = json_pack ("{s:o, s:o," /* h_wire, h_contract_terms */
|
||||
" s:o," /* coin_pub */
|
||||
" s:o, s:o}", /* merchant_pub, merchant_sig */
|
||||
"h_wire", GNUNET_JSON_from_data_auto (h_wire),
|
||||
"h_contract_terms", GNUNET_JSON_from_data_auto (
|
||||
h_contract_terms),
|
||||
"coin_pub", GNUNET_JSON_from_data_auto (
|
||||
coin_pub),
|
||||
"merchant_pub", GNUNET_JSON_from_data_auto (
|
||||
&dtp.merchant),
|
||||
"merchant_sig", GNUNET_JSON_from_data_auto (
|
||||
&merchant_sig));
|
||||
if (NULL == deposit_wtid_obj)
|
||||
{
|
||||
GNUNET_break (0);
|
||||
return NULL;
|
||||
char cpub_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2];
|
||||
char mpub_str[sizeof (struct TALER_MerchantPublicKeyP) * 2];
|
||||
char msig_str[sizeof (struct TALER_MerchantSignatureP) * 2];
|
||||
char chash_str[sizeof (struct GNUNET_HashCode) * 2];
|
||||
char whash_str[sizeof (struct GNUNET_HashCode) * 2];
|
||||
char *end;
|
||||
|
||||
end = GNUNET_STRINGS_data_to_string (h_wire,
|
||||
sizeof (struct
|
||||
GNUNET_HashCode),
|
||||
whash_str,
|
||||
sizeof (whash_str));
|
||||
*end = '\0';
|
||||
end = GNUNET_STRINGS_data_to_string (&dtp.merchant,
|
||||
sizeof (struct
|
||||
TALER_MerchantPublicKeyP),
|
||||
mpub_str,
|
||||
sizeof (mpub_str));
|
||||
*end = '\0';
|
||||
end = GNUNET_STRINGS_data_to_string (h_contract_terms,
|
||||
sizeof (struct
|
||||
GNUNET_HashCode),
|
||||
chash_str,
|
||||
sizeof (chash_str));
|
||||
*end = '\0';
|
||||
end = GNUNET_STRINGS_data_to_string (coin_pub,
|
||||
sizeof (struct
|
||||
TALER_CoinSpendPublicKeyP),
|
||||
cpub_str,
|
||||
sizeof (cpub_str));
|
||||
*end = '\0';
|
||||
end = GNUNET_STRINGS_data_to_string (&merchant_sig,
|
||||
sizeof (struct
|
||||
TALER_MerchantSignatureP),
|
||||
msig_str,
|
||||
sizeof (msig_str));
|
||||
*end = '\0';
|
||||
|
||||
GNUNET_snprintf (arg_str,
|
||||
sizeof (arg_str),
|
||||
"/deposits/%s/%s/%s/%s?merchant_sig=%s",
|
||||
whash_str,
|
||||
mpub_str,
|
||||
chash_str,
|
||||
cpub_str,
|
||||
msig_str);
|
||||
}
|
||||
|
||||
dwh = GNUNET_new (struct TALER_EXCHANGE_TrackTransactionHandle);
|
||||
dwh->exchange = exchange;
|
||||
dwh->cb = cb;
|
||||
dwh->cb_cls = cb_cls;
|
||||
dwh->url = TEAH_path_to_url (exchange, "/track/transaction");
|
||||
dwh->url = TEAH_path_to_url (exchange,
|
||||
arg_str);
|
||||
dwh->depconf.purpose.size = htonl (sizeof (struct TALER_ConfirmWirePS));
|
||||
dwh->depconf.purpose.purpose = htonl (TALER_SIGNATURE_EXCHANGE_CONFIRM_WIRE);
|
||||
dwh->depconf.h_wire = *h_wire;
|
||||
@ -331,23 +367,10 @@ TALER_EXCHANGE_track_transaction (struct TALER_EXCHANGE_Handle *exchange,
|
||||
dwh->depconf.coin_pub = *coin_pub;
|
||||
|
||||
eh = TEL_curl_easy_get (dwh->url);
|
||||
if (GNUNET_OK !=
|
||||
TALER_curl_easy_post (&dwh->ctx,
|
||||
eh,
|
||||
deposit_wtid_obj))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
curl_easy_cleanup (eh);
|
||||
json_decref (deposit_wtid_obj);
|
||||
GNUNET_free (dwh->url);
|
||||
GNUNET_free (dwh);
|
||||
return NULL;
|
||||
}
|
||||
json_decref (deposit_wtid_obj);
|
||||
ctx = TEAH_handle_to_context (exchange);
|
||||
dwh->job = GNUNET_CURL_job_add2 (ctx,
|
||||
dwh->job = GNUNET_CURL_job_add (ctx,
|
||||
eh,
|
||||
dwh->ctx.headers,
|
||||
GNUNET_NO,
|
||||
&handle_deposit_wtid_finished,
|
||||
dwh);
|
||||
return dwh;
|
||||
|
@ -334,9 +334,8 @@ TALER_EXCHANGE_track_transfer (struct TALER_EXCHANGE_Handle *exchange,
|
||||
{
|
||||
struct TALER_EXCHANGE_TrackTransferHandle *wdh;
|
||||
struct GNUNET_CURL_Context *ctx;
|
||||
char *buf;
|
||||
char *path;
|
||||
CURL *eh;
|
||||
char arg_str[sizeof (struct TALER_WireTransferIdentifierRawP) * 2 + 32];
|
||||
|
||||
if (GNUNET_YES !=
|
||||
TEAH_handle_is_ready (exchange))
|
||||
@ -350,17 +349,23 @@ TALER_EXCHANGE_track_transfer (struct TALER_EXCHANGE_Handle *exchange,
|
||||
wdh->cb = cb;
|
||||
wdh->cb_cls = cb_cls;
|
||||
|
||||
buf = GNUNET_STRINGS_data_to_string_alloc (wtid,
|
||||
sizeof (struct
|
||||
TALER_WireTransferIdentifierRawP));
|
||||
GNUNET_asprintf (&path,
|
||||
"/track/transfer?wtid=%s",
|
||||
buf);
|
||||
wdh->url = TEAH_path_to_url (wdh->exchange,
|
||||
path);
|
||||
GNUNET_free (buf);
|
||||
GNUNET_free (path);
|
||||
{
|
||||
char wtid_str[sizeof (struct TALER_WireTransferIdentifierRawP) * 2];
|
||||
char *end;
|
||||
|
||||
end = GNUNET_STRINGS_data_to_string (wtid,
|
||||
sizeof (struct
|
||||
TALER_WireTransferIdentifierRawP),
|
||||
wtid_str,
|
||||
sizeof (wtid_str));
|
||||
*end = '\0';
|
||||
GNUNET_snprintf (arg_str,
|
||||
sizeof (arg_str),
|
||||
"/transfers/%s",
|
||||
wtid_str);
|
||||
}
|
||||
wdh->url = TEAH_path_to_url (wdh->exchange,
|
||||
arg_str);
|
||||
eh = TEL_curl_easy_get (wdh->url);
|
||||
ctx = TEAH_handle_to_context (exchange);
|
||||
wdh->job = GNUNET_CURL_job_add (ctx,
|
||||
|
Loading…
Reference in New Issue
Block a user