handle base32-wire transfer subject being followed by space+exchange base url in wire plugin and fakebank
This commit is contained in:
parent
be3b891dbd
commit
7c28823caf
@ -512,8 +512,17 @@ handle_history (struct TALER_FAKEBANK_Handle *h,
|
||||
continue;
|
||||
}
|
||||
|
||||
subject = GNUNET_STRINGS_data_to_string_alloc (&pos->wtid,
|
||||
{
|
||||
char *ws;
|
||||
|
||||
ws = GNUNET_STRINGS_data_to_string_alloc (&pos->wtid,
|
||||
sizeof (pos->wtid));
|
||||
GNUNET_asprintf (&subject,
|
||||
"%s %s",
|
||||
ws,
|
||||
pos->exchange_base_url);
|
||||
GNUNET_free (ws);
|
||||
}
|
||||
trans = json_pack ("{s:I, s:o, s:o, s:s, s:I, s:s}",
|
||||
"row_id", (json_int_t) pos->serial_id,
|
||||
"date", GNUNET_JSON_from_time_abs (pos->date),
|
||||
|
@ -53,7 +53,7 @@ run (void *cls)
|
||||
.details.admin_add_incoming.expected_response_code = MHD_HTTP_OK,
|
||||
.details.admin_add_incoming.credit_account_no = 1,
|
||||
.details.admin_add_incoming.debit_account_no = 2, /* Ignored */
|
||||
.details.admin_add_incoming.amount = "PUDOS:5.01" },
|
||||
.details.admin_add_incoming.amount = "KUDOS:5.01" },
|
||||
/* Move money from Exchange to Bank */
|
||||
{ .oc = TBI_OC_ADMIN_ADD_INCOMING,
|
||||
.label = "deposit-2",
|
||||
@ -61,7 +61,7 @@ run (void *cls)
|
||||
.details.admin_add_incoming.expected_response_code = MHD_HTTP_OK,
|
||||
.details.admin_add_incoming.credit_account_no = 1,
|
||||
.details.admin_add_incoming.debit_account_no = 2, /* Ignored */
|
||||
.details.admin_add_incoming.amount = "PUDOS:5.01" },
|
||||
.details.admin_add_incoming.amount = "KUDOS:5.01" },
|
||||
#if 0
|
||||
/* Ask Exchange's incoming history */
|
||||
{ .oc = TBI_OC_HISTORY,
|
||||
|
@ -52,7 +52,7 @@ run (void *cls)
|
||||
.details.admin_add_incoming.credit_account_no = 1,
|
||||
.details.admin_add_incoming.debit_account_no = 2,
|
||||
.details.admin_add_incoming.exchange_base_url = "https://exchange.net/",
|
||||
.details.admin_add_incoming.amount = "PUDOS:5.01" },
|
||||
.details.admin_add_incoming.amount = "KUDOS:5.01" },
|
||||
/* Add EUR:3.21 to account 3 */
|
||||
{ .oc = TBI_OC_HISTORY,
|
||||
.label = "history-1c",
|
||||
@ -72,14 +72,14 @@ run (void *cls)
|
||||
.details.admin_add_incoming.credit_account_no = 3,
|
||||
.details.admin_add_incoming.debit_account_no = 2,
|
||||
.details.admin_add_incoming.exchange_base_url = "https://exchange.org/",
|
||||
.details.admin_add_incoming.amount = "PUDOS:3.21" },
|
||||
.details.admin_add_incoming.amount = "KUDOS:3.21" },
|
||||
{ .oc = TBI_OC_ADMIN_ADD_INCOMING,
|
||||
.label = "credit-2",
|
||||
.details.admin_add_incoming.expected_response_code = MHD_HTTP_OK,
|
||||
.details.admin_add_incoming.credit_account_no = 2,
|
||||
.details.admin_add_incoming.debit_account_no = 3,
|
||||
.details.admin_add_incoming.exchange_base_url = "https://exchange.org/",
|
||||
.details.admin_add_incoming.amount = "PUDOS:3.22" },
|
||||
.details.admin_add_incoming.amount = "KUDOS:3.22" },
|
||||
{ .oc = TBI_OC_HISTORY,
|
||||
.label = "history-2b",
|
||||
.details.history.account_number = 2,
|
||||
|
@ -323,9 +323,17 @@ build_history (struct InterpreterState *is,
|
||||
/* h[total].execution_date; // unknown here */
|
||||
h[total].serial_id
|
||||
= pos->details.admin_add_incoming.serial_id;
|
||||
h[total].details.wire_transfer_subject
|
||||
= GNUNET_STRINGS_data_to_string_alloc (&pos->details.admin_add_incoming.wtid,
|
||||
{
|
||||
char *ws;
|
||||
|
||||
ws = GNUNET_STRINGS_data_to_string_alloc (&pos->details.admin_add_incoming.wtid,
|
||||
sizeof (struct TALER_WireTransferIdentifierRawP));
|
||||
GNUNET_asprintf (&h[total].details.wire_transfer_subject,
|
||||
"%s %s",
|
||||
ws,
|
||||
pos->details.admin_add_incoming.exchange_base_url);
|
||||
GNUNET_free (ws);
|
||||
}
|
||||
total++;
|
||||
}
|
||||
}
|
||||
|
@ -200,7 +200,8 @@ struct TALER_BANK_TransferDetails
|
||||
struct GNUNET_TIME_Absolute execution_date;
|
||||
|
||||
/**
|
||||
* Wire transfer subject
|
||||
* Wire transfer subject. Usually a reserve public key
|
||||
* followed by the BASE URI of the exchange.
|
||||
*/
|
||||
char *wire_transfer_subject;
|
||||
|
||||
|
@ -822,16 +822,29 @@ bhist_cb (void *cls,
|
||||
|
||||
if (MHD_HTTP_OK == http_status)
|
||||
{
|
||||
char *subject;
|
||||
char *space;
|
||||
|
||||
wd.amount = details->amount;
|
||||
wd.execution_date = details->execution_date;
|
||||
subject = GNUNET_strdup (details->wire_transfer_subject);
|
||||
space = strchr (subject, (int) ' ');
|
||||
if (NULL != space)
|
||||
{
|
||||
/* Space separates the actual wire transfer subject from the
|
||||
exchange base URL (if present, expected only for outgoing
|
||||
transactions). So we cut the string off at the space. */
|
||||
*space = '\0';
|
||||
}
|
||||
/* NOTE: For a real bank, the subject should include a checksum! */
|
||||
if (GNUNET_OK !=
|
||||
GNUNET_STRINGS_string_to_data (details->wire_transfer_subject,
|
||||
strlen (details->wire_transfer_subject),
|
||||
GNUNET_STRINGS_string_to_data (subject,
|
||||
strlen (subject),
|
||||
&wd.reserve_pub,
|
||||
sizeof (wd.reserve_pub)))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
GNUNET_free (subject);
|
||||
/* NOTE: for a "real" bank, we would want to trigger logic to undo the
|
||||
wire transfer. However, for the "demo" bank, it should currently
|
||||
be "impossible" to do wire transfers with invalid subjects, and
|
||||
@ -839,6 +852,7 @@ bhist_cb (void *cls,
|
||||
that nicely either right now). So we don't handle this case for now. */
|
||||
return;
|
||||
}
|
||||
GNUNET_free (subject);
|
||||
wd.account_details = details->account_details;
|
||||
|
||||
if ( (NULL != whh->hres_cb) &&
|
||||
|
Loading…
Reference in New Issue
Block a user