Added age parameter to testing (0 for now)
- TALER_EXCHANGE_DenomPublickey now carries age_mask - TALER_TESTING_cmd_withdraw_amount* takes age parameter - WithdrawState carries age_commitment and its hash - withdraw_run derives new age commitment, if applicable
This commit is contained in:
parent
5e93e244bd
commit
f48ba6f043
@ -366,6 +366,7 @@ run (void *cls,
|
||||
(TALER_TESTING_cmd_withdraw_amount (wl,
|
||||
create_reserve_label,
|
||||
amount_5,
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK));
|
||||
unit[1] =
|
||||
TALER_TESTING_cmd_deposit_with_retry
|
||||
|
@ -161,8 +161,10 @@ struct TALER_EXCHANGE_DenomPublicKey
|
||||
bool revoked;
|
||||
|
||||
/**
|
||||
* Is the denomination age-restricted?
|
||||
* If age_mask non-zero, the denomination is age-restricted, with the age
|
||||
* groups as defined in the mask.
|
||||
*/
|
||||
struct TALER_AgeMask age_mask;
|
||||
bool age_restricted;
|
||||
};
|
||||
|
||||
|
@ -1279,6 +1279,7 @@ TALER_TESTING_cmd_exec_transfer (const char *label,
|
||||
* @param label command label.
|
||||
* @param reserve_reference command providing us with a reserve to withdraw from
|
||||
* @param amount how much we withdraw.
|
||||
* @param age if > 0, age restriction applies
|
||||
* @param expected_response_code which HTTP response code
|
||||
* we expect from the exchange.
|
||||
* @return the withdraw command to be executed by the interpreter.
|
||||
@ -1287,6 +1288,7 @@ struct TALER_TESTING_Command
|
||||
TALER_TESTING_cmd_withdraw_amount (const char *label,
|
||||
const char *reserve_reference,
|
||||
const char *amount,
|
||||
uint8_t age,
|
||||
unsigned int expected_response_code);
|
||||
|
||||
|
||||
@ -1299,6 +1301,7 @@ TALER_TESTING_cmd_withdraw_amount (const char *label,
|
||||
* @param label command label.
|
||||
* @param reserve_reference command providing us with a reserve to withdraw from
|
||||
* @param amount how much we withdraw.
|
||||
* @param age if > 0, age restriction applies.
|
||||
* @param coin_ref reference to (withdraw/reveal) command of a coin
|
||||
* from which we should re-use the private key
|
||||
* @param expected_response_code which HTTP response code
|
||||
@ -1310,6 +1313,7 @@ TALER_TESTING_cmd_withdraw_amount_reuse_key (
|
||||
const char *label,
|
||||
const char *reserve_reference,
|
||||
const char *amount,
|
||||
uint8_t age,
|
||||
const char *coin_ref,
|
||||
unsigned int expected_response_code);
|
||||
|
||||
|
@ -885,7 +885,10 @@ decode_keys_json (const json_t *resp_obj,
|
||||
/* Mark age restriction according where we got this denomination from,
|
||||
* "denoms" or "age_restricted_denoms" */
|
||||
if (hive[s].is_optional_age_restriction)
|
||||
{
|
||||
dk.age_restricted = true;
|
||||
dk.age_mask.mask = key_data->age_mask.mask;
|
||||
}
|
||||
|
||||
for (unsigned int j = 0;
|
||||
j<key_data->num_denom_keys;
|
||||
|
@ -128,6 +128,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-1",
|
||||
"create-reserve-1",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_end ()
|
||||
};
|
||||
@ -168,6 +169,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("refresh-withdraw-coin-1",
|
||||
"refresh-create-reserve-1",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
/**
|
||||
* Try to partially spend (deposit) 1 EUR of the 5 EUR coin (in
|
||||
@ -315,6 +317,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-unaggregated",
|
||||
"create-reserve-unaggregated",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_deposit ("deposit-unaggregated",
|
||||
"withdraw-coin-unaggregated",
|
||||
@ -347,6 +350,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-r1",
|
||||
"create-reserve-r1",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
/**
|
||||
* Spend 5 EUR of the 5 EUR coin (in full). Merchant would
|
||||
@ -402,6 +406,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-1",
|
||||
"recoup-create-reserve-1",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_revoke ("revoke-1",
|
||||
MHD_HTTP_OK,
|
||||
@ -417,6 +422,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-2",
|
||||
"recoup-create-reserve-1",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
/**
|
||||
* These commands should close the reserve because the aggregator
|
||||
@ -447,6 +453,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-2a",
|
||||
"recoup-create-reserve-2",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
/**
|
||||
* Withdraw a 1 EUR coin, at fee of 1 ct
|
||||
@ -454,6 +461,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-2b",
|
||||
"recoup-create-reserve-2",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_deposit ("recoup-deposit-partial",
|
||||
"recoup-withdraw-coin-2a",
|
||||
@ -491,42 +499,52 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("massive-withdraw-1",
|
||||
"massive-reserve",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_withdraw_amount ("massive-withdraw-2",
|
||||
"massive-reserve",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_withdraw_amount ("massive-withdraw-3",
|
||||
"massive-reserve",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_withdraw_amount ("massive-withdraw-4",
|
||||
"massive-reserve",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_withdraw_amount ("massive-withdraw-5",
|
||||
"massive-reserve",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_withdraw_amount ("massive-withdraw-6",
|
||||
"massive-reserve",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_withdraw_amount ("massive-withdraw-7",
|
||||
"massive-reserve",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_withdraw_amount ("massive-withdraw-8",
|
||||
"massive-reserve",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_withdraw_amount ("massive-withdraw-9",
|
||||
"massive-reserve",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_withdraw_amount ("massive-withdraw-10",
|
||||
"massive-reserve",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_deposit (
|
||||
"massive-deposit-1",
|
||||
|
@ -138,6 +138,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-1",
|
||||
"create-reserve-1",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
/**
|
||||
* Withdraw EUR:1 using the SAME private coin key as for the previous coin
|
||||
@ -146,6 +147,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount_reuse_key ("withdraw-coin-1x",
|
||||
"create-reserve-1",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
"withdraw-coin-1",
|
||||
MHD_HTTP_OK),
|
||||
/**
|
||||
@ -161,6 +163,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-2",
|
||||
"create-reserve-1",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_CONFLICT),
|
||||
TALER_TESTING_cmd_end ()
|
||||
};
|
||||
@ -254,6 +257,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("refresh-withdraw-coin-1",
|
||||
"refresh-create-reserve-1",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
/* Try to partially spend (deposit) 1 EUR of the 5 EUR coin
|
||||
* (in full) (merchant would receive EUR:0.99 due to 1 ct
|
||||
@ -426,6 +430,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-unaggregated",
|
||||
"create-reserve-unaggregated",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_deposit ("deposit-unaggregated",
|
||||
"withdraw-coin-unaggregated",
|
||||
@ -464,6 +469,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-aggtest",
|
||||
"create-reserve-aggtest",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_deposit ("deposit-aggtest-1",
|
||||
"withdraw-coin-aggtest",
|
||||
@ -512,6 +518,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-r1",
|
||||
"create-reserve-r1",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
/**
|
||||
* Spend 5 EUR of the 5 EUR coin (in full) (merchant would
|
||||
@ -612,6 +619,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-rb",
|
||||
"create-reserve-rb",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_deposit ("deposit-refund-1b",
|
||||
"withdraw-coin-rb",
|
||||
@ -661,11 +669,13 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-1",
|
||||
"recoup-create-reserve-1",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
/* Withdraw a 10 EUR coin, at fee of 1 ct */
|
||||
TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-1b",
|
||||
"recoup-create-reserve-1",
|
||||
"EUR:10",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
/* melt 10 EUR coin to get 5 EUR refreshed coin */
|
||||
TALER_TESTING_cmd_melt ("recoup-melt-coin-1b",
|
||||
@ -756,6 +766,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-2",
|
||||
"recoup-create-reserve-1",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
/**
|
||||
* This withdrawal will test the logic to create a "recoup"
|
||||
@ -764,6 +775,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-2-over",
|
||||
"recoup-create-reserve-1",
|
||||
"EUR:10",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_CONFLICT),
|
||||
TALER_TESTING_cmd_status ("recoup-reserve-status-2",
|
||||
"recoup-create-reserve-1",
|
||||
@ -796,6 +808,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("expired-withdraw",
|
||||
"short-lived-reserve",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_CONFLICT),
|
||||
TALER_TESTING_cmd_check_bank_transfer ("check_bank_short-lived_reimburse",
|
||||
ec.exchange_url,
|
||||
@ -820,11 +833,13 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-2a",
|
||||
"recoup-create-reserve-2",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
/* Withdraw a 1 EUR coin, at fee of 1 ct */
|
||||
TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-2b",
|
||||
"recoup-create-reserve-2",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_deposit ("recoup-deposit-partial",
|
||||
"recoup-withdraw-coin-2a",
|
||||
@ -885,6 +900,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-3-revoked",
|
||||
"recoup-create-reserve-3",
|
||||
"EUR:1",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_GONE),
|
||||
/* check that we are empty before the rejection test */
|
||||
TALER_TESTING_cmd_check_bank_empty ("check-empty-again"),
|
||||
|
@ -95,11 +95,13 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("withdraw-revocation-coin-1",
|
||||
"create-reserve-1",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
/* Withdraw another 5 EUR coin, at fee of 1 ct */
|
||||
TALER_TESTING_cmd_withdraw_amount ("withdraw-revocation-coin-2",
|
||||
"create-reserve-1",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
/* Try to partially spend (deposit) 1 EUR of the 5 EUR coin (in full)
|
||||
* (merchant would receive EUR:0.99 due to 1 ct deposit fee) *///
|
||||
|
@ -105,10 +105,12 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-1-no-kyc",
|
||||
"create-reserve-1",
|
||||
"EUR:10",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_ACCEPTED),
|
||||
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-1",
|
||||
"create-reserve-1",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_end ()
|
||||
};
|
||||
@ -120,6 +122,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-1-lacking-kyc",
|
||||
"create-reserve-1",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_ACCEPTED),
|
||||
TALER_TESTING_cmd_proof_kyc ("proof-kyc",
|
||||
"withdraw-coin-1-lacking-kyc",
|
||||
@ -129,6 +132,7 @@ run (void *cls,
|
||||
TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-1-with-kyc",
|
||||
"create-reserve-1",
|
||||
"EUR:5",
|
||||
0, /* age restriction off */
|
||||
MHD_HTTP_OK),
|
||||
TALER_TESTING_cmd_end ()
|
||||
};
|
||||
|
@ -115,6 +115,18 @@ struct WithdrawState
|
||||
*/
|
||||
struct TALER_PlanchetSecretsP ps;
|
||||
|
||||
/**
|
||||
* An age > 0 signifies age restriction is required
|
||||
*/
|
||||
uint8_t age;
|
||||
|
||||
/**
|
||||
* If age > 0, put here the corresponding age commitment and its hash,
|
||||
* respectivelly, NULL otherwise.
|
||||
*/
|
||||
struct TALER_AgeCommitment *age_commitment;
|
||||
struct TALER_AgeCommitmentHash *h_age_commitment;
|
||||
|
||||
/**
|
||||
* Reserve history entry that corresponds to this operation.
|
||||
* Will be of type #TALER_EXCHANGE_RTT_WITHDRAWAL.
|
||||
@ -363,12 +375,14 @@ withdraw_run (void *cls,
|
||||
= TALER_TESTING_interpreter_lookup_command (
|
||||
is,
|
||||
ws->reserve_reference);
|
||||
|
||||
if (NULL == create_reserve)
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (is);
|
||||
return;
|
||||
}
|
||||
|
||||
if (GNUNET_OK !=
|
||||
TALER_TESTING_get_trait_reserve_priv (create_reserve,
|
||||
&rp))
|
||||
@ -377,6 +391,7 @@ withdraw_run (void *cls,
|
||||
TALER_TESTING_interpreter_fail (is);
|
||||
return;
|
||||
}
|
||||
|
||||
if (NULL == ws->exchange_url)
|
||||
ws->exchange_url
|
||||
= GNUNET_strdup (TALER_EXCHANGE_get_base_url (is->exchange));
|
||||
@ -386,6 +401,7 @@ withdraw_run (void *cls,
|
||||
ws->reserve_payto_uri
|
||||
= TALER_payto_from_reserve (ws->exchange_url,
|
||||
&ws->reserve_pub);
|
||||
|
||||
if (NULL == ws->reuse_coin_key_ref)
|
||||
{
|
||||
TALER_planchet_setup_random (&ws->ps);
|
||||
@ -412,11 +428,12 @@ withdraw_run (void *cls,
|
||||
TALER_planchet_setup_random (&ws->ps);
|
||||
ws->ps.coin_priv = *coin_priv;
|
||||
}
|
||||
|
||||
if (NULL == ws->pk)
|
||||
{
|
||||
dpk = TALER_TESTING_find_pk (TALER_EXCHANGE_get_keys (is->exchange),
|
||||
&ws->amount,
|
||||
false); /* FIXME- oec */
|
||||
ws->age > 0);
|
||||
if (NULL == dpk)
|
||||
{
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||
@ -434,19 +451,47 @@ withdraw_run (void *cls,
|
||||
{
|
||||
ws->amount = ws->pk->value;
|
||||
}
|
||||
|
||||
if (ws->age > 0)
|
||||
{
|
||||
uint32_t seed;
|
||||
struct TALER_AgeCommitment *ac;
|
||||
|
||||
ac = GNUNET_malloc (sizeof(struct TALER_AgeCommitment));
|
||||
seed = GNUNET_CRYPTO_random_u32 (
|
||||
GNUNET_CRYPTO_QUALITY_WEAK,
|
||||
UINT32_MAX);
|
||||
|
||||
GNUNET_assert (GNUNET_OK ==
|
||||
TALER_age_restriction_commit (
|
||||
&ws->pk->age_mask,
|
||||
ws->age,
|
||||
seed,
|
||||
ac));
|
||||
|
||||
ws->age_commitment = ac;
|
||||
TALER_age_commitment_hash (
|
||||
ac,
|
||||
ws->h_age_commitment);
|
||||
}
|
||||
|
||||
ws->reserve_history.type = TALER_EXCHANGE_RTT_WITHDRAWAL;
|
||||
GNUNET_assert (0 <=
|
||||
TALER_amount_add (&ws->reserve_history.amount,
|
||||
&ws->amount,
|
||||
&ws->pk->fee_withdraw));
|
||||
ws->reserve_history.details.withdraw.fee = ws->pk->fee_withdraw;
|
||||
|
||||
{
|
||||
|
||||
ws->wsh = TALER_EXCHANGE_withdraw (is->exchange,
|
||||
ws->pk,
|
||||
rp,
|
||||
&ws->ps,
|
||||
NULL, /* FIXME-oec struct TALER_AgeCommitmentHash * */
|
||||
ws->h_age_commitment,
|
||||
&reserve_withdraw_cb,
|
||||
ws);
|
||||
}
|
||||
if (NULL == ws->wsh)
|
||||
{
|
||||
GNUNET_break (0);
|
||||
@ -549,6 +594,7 @@ withdraw_traits (void *cls,
|
||||
* @param label command label.
|
||||
* @param reserve_reference command providing us with a reserve to withdraw from
|
||||
* @param amount how much we withdraw.
|
||||
* @param age if > 0, age restriction is activated
|
||||
* @param expected_response_code which HTTP response code
|
||||
* we expect from the exchange.
|
||||
* @return the withdraw command to be executed by the interpreter.
|
||||
@ -557,11 +603,13 @@ struct TALER_TESTING_Command
|
||||
TALER_TESTING_cmd_withdraw_amount (const char *label,
|
||||
const char *reserve_reference,
|
||||
const char *amount,
|
||||
const uint8_t age,
|
||||
unsigned int expected_response_code)
|
||||
{
|
||||
struct WithdrawState *ws;
|
||||
|
||||
ws = GNUNET_new (struct WithdrawState);
|
||||
ws->age = age;
|
||||
ws->reserve_reference = reserve_reference;
|
||||
if (GNUNET_OK !=
|
||||
TALER_string_to_amount (amount,
|
||||
@ -597,6 +645,7 @@ TALER_TESTING_cmd_withdraw_amount (const char *label,
|
||||
* @param label command label.
|
||||
* @param reserve_reference command providing us with a reserve to withdraw from
|
||||
* @param amount how much we withdraw.
|
||||
* @param age if > 0, age restriction is activated
|
||||
* @param coin_ref reference to (withdraw/reveal) command of a coin
|
||||
* from which we should re-use the private key
|
||||
* @param expected_response_code which HTTP response code
|
||||
@ -608,6 +657,7 @@ TALER_TESTING_cmd_withdraw_amount_reuse_key (
|
||||
const char *label,
|
||||
const char *reserve_reference,
|
||||
const char *amount,
|
||||
uint8_t age,
|
||||
const char *coin_ref,
|
||||
unsigned int expected_response_code)
|
||||
{
|
||||
@ -616,6 +666,7 @@ TALER_TESTING_cmd_withdraw_amount_reuse_key (
|
||||
cmd = TALER_TESTING_cmd_withdraw_amount (label,
|
||||
reserve_reference,
|
||||
amount,
|
||||
age,
|
||||
expected_response_code);
|
||||
{
|
||||
struct WithdrawState *ws = cmd.cls;
|
||||
|
Loading…
Reference in New Issue
Block a user