Withdraw and deposit works with age restriction
The following tests work: - Withdraw coins with age (13) from age restricted denominations - Deposit that coin (purchase) Now to do: - refresh - link - refund
This commit is contained in:
parent
3714ba9462
commit
f32ef1f64b
@ -1617,6 +1617,7 @@ deposit_cb (void *cls,
|
|||||||
struct TALER_MerchantWireHash h_wire;
|
struct TALER_MerchantWireHash h_wire;
|
||||||
struct TALER_DenominationHash h_denom_pub;
|
struct TALER_DenominationHash h_denom_pub;
|
||||||
struct TALER_Amount deposit_fee;
|
struct TALER_Amount deposit_fee;
|
||||||
|
struct TALER_AgeCommitmentHash *h_age_commitment = NULL; /* FIXME-oec */
|
||||||
|
|
||||||
TALER_denom_pub_hash (denom_pub,
|
TALER_denom_pub_hash (denom_pub,
|
||||||
&h_denom_pub);
|
&h_denom_pub);
|
||||||
@ -1633,6 +1634,7 @@ deposit_cb (void *cls,
|
|||||||
&deposit_fee,
|
&deposit_fee,
|
||||||
&h_wire,
|
&h_wire,
|
||||||
&deposit->h_contract_terms,
|
&deposit->h_contract_terms,
|
||||||
|
h_age_commitment, /* FIXME-oec */
|
||||||
NULL /* h_extensions! */,
|
NULL /* h_extensions! */,
|
||||||
&h_denom_pub,
|
&h_denom_pub,
|
||||||
deposit->timestamp,
|
deposit->timestamp,
|
||||||
|
@ -239,6 +239,9 @@ TEH_handler_deposit (struct MHD_Connection *connection,
|
|||||||
&deposit.merchant_pub),
|
&deposit.merchant_pub),
|
||||||
GNUNET_JSON_spec_fixed_auto ("h_contract_terms",
|
GNUNET_JSON_spec_fixed_auto ("h_contract_terms",
|
||||||
&deposit.h_contract_terms),
|
&deposit.h_contract_terms),
|
||||||
|
GNUNET_JSON_spec_mark_optional (
|
||||||
|
GNUNET_JSON_spec_fixed_auto ("h_age_commitment",
|
||||||
|
&deposit.coin.age_commitment_hash)),
|
||||||
GNUNET_JSON_spec_fixed_auto ("coin_sig",
|
GNUNET_JSON_spec_fixed_auto ("coin_sig",
|
||||||
&deposit.csig),
|
&deposit.csig),
|
||||||
GNUNET_JSON_spec_timestamp ("timestamp",
|
GNUNET_JSON_spec_timestamp ("timestamp",
|
||||||
@ -387,6 +390,7 @@ TEH_handler_deposit (struct MHD_Connection *connection,
|
|||||||
&deposit.deposit_fee,
|
&deposit.deposit_fee,
|
||||||
&h_wire,
|
&h_wire,
|
||||||
&deposit.h_contract_terms,
|
&deposit.h_contract_terms,
|
||||||
|
&deposit.coin.age_commitment_hash,
|
||||||
NULL /* h_extensions! */,
|
NULL /* h_extensions! */,
|
||||||
&deposit.coin.denom_pub_hash,
|
&deposit.coin.denom_pub_hash,
|
||||||
deposit.timestamp,
|
deposit.timestamp,
|
||||||
|
@ -73,6 +73,7 @@ TEH_RESPONSE_compile_transaction_history (
|
|||||||
&deposit->deposit_fee,
|
&deposit->deposit_fee,
|
||||||
&h_wire,
|
&h_wire,
|
||||||
&deposit->h_contract_terms,
|
&deposit->h_contract_terms,
|
||||||
|
NULL, /* h_age_commitment, FIXME-oec */
|
||||||
NULL /* h_extensions! */,
|
NULL /* h_extensions! */,
|
||||||
&deposit->h_denom_pub,
|
&deposit->h_denom_pub,
|
||||||
deposit->timestamp,
|
deposit->timestamp,
|
||||||
|
@ -5789,7 +5789,6 @@ postgres_ensure_coin_known (void *cls,
|
|||||||
GNUNET_PQ_result_spec_end
|
GNUNET_PQ_result_spec_end
|
||||||
};
|
};
|
||||||
|
|
||||||
GNUNET_break (GNUNET_is_zero (&coin->age_commitment_hash)); // FIXME-OEC
|
|
||||||
qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
|
qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
|
||||||
"insert_known_coin",
|
"insert_known_coin",
|
||||||
params,
|
params,
|
||||||
@ -5822,7 +5821,7 @@ postgres_ensure_coin_known (void *cls,
|
|||||||
(0 != GNUNET_memcmp (age_hash,
|
(0 != GNUNET_memcmp (age_hash,
|
||||||
&coin->age_commitment_hash)) )
|
&coin->age_commitment_hash)) )
|
||||||
{
|
{
|
||||||
GNUNET_break (GNUNET_is_zero (age_hash)); // FIXME-OEC
|
GNUNET_break (GNUNET_is_zero (age_hash));
|
||||||
GNUNET_break_op (0);
|
GNUNET_break_op (0);
|
||||||
return TALER_EXCHANGEDB_CKS_AGE_CONFLICT;
|
return TALER_EXCHANGEDB_CKS_AGE_CONFLICT;
|
||||||
}
|
}
|
||||||
|
@ -1720,6 +1720,7 @@ TALER_exchange_deposit_confirm_verify (
|
|||||||
* @param deposit_fee the deposit fee we expect to pay
|
* @param deposit_fee the deposit fee we expect to pay
|
||||||
* @param h_wire hash of the merchant’s account details
|
* @param h_wire hash of the merchant’s account details
|
||||||
* @param h_contract_terms hash of the contact of the merchant with the customer (further details are never disclosed to the exchange)
|
* @param h_contract_terms hash of the contact of the merchant with the customer (further details are never disclosed to the exchange)
|
||||||
|
* @param h_age_commitment hash over the age commitment, if applicable to the denomination (maybe NULL)
|
||||||
* @param h_extensions hash over the extensions
|
* @param h_extensions hash over the extensions
|
||||||
* @param h_denom_pub hash of the coin denomination's public key
|
* @param h_denom_pub hash of the coin denomination's public key
|
||||||
* @param coin_priv coin’s private key
|
* @param coin_priv coin’s private key
|
||||||
@ -1734,6 +1735,7 @@ TALER_wallet_deposit_sign (
|
|||||||
const struct TALER_Amount *deposit_fee,
|
const struct TALER_Amount *deposit_fee,
|
||||||
const struct TALER_MerchantWireHash *h_wire,
|
const struct TALER_MerchantWireHash *h_wire,
|
||||||
const struct TALER_PrivateContractHash *h_contract_terms,
|
const struct TALER_PrivateContractHash *h_contract_terms,
|
||||||
|
const struct TALER_AgeCommitmentHash *h_age_commitment,
|
||||||
const struct TALER_ExtensionContractHash *h_extensions,
|
const struct TALER_ExtensionContractHash *h_extensions,
|
||||||
const struct TALER_DenominationHash *h_denom_pub,
|
const struct TALER_DenominationHash *h_denom_pub,
|
||||||
struct GNUNET_TIME_Timestamp wallet_timestamp,
|
struct GNUNET_TIME_Timestamp wallet_timestamp,
|
||||||
@ -1750,6 +1752,7 @@ TALER_wallet_deposit_sign (
|
|||||||
* @param deposit_fee the deposit fee we expect to pay
|
* @param deposit_fee the deposit fee we expect to pay
|
||||||
* @param h_wire hash of the merchant’s account details
|
* @param h_wire hash of the merchant’s account details
|
||||||
* @param h_contract_terms hash of the contact of the merchant with the customer (further details are never disclosed to the exchange)
|
* @param h_contract_terms hash of the contact of the merchant with the customer (further details are never disclosed to the exchange)
|
||||||
|
* @param h_age_commitment hash over the age commitment (maybe all zeroes, if not applicable to the denomination)
|
||||||
* @param h_extensions hash over the extensions
|
* @param h_extensions hash over the extensions
|
||||||
* @param h_denom_pub hash of the coin denomination's public key
|
* @param h_denom_pub hash of the coin denomination's public key
|
||||||
* @param wallet_timestamp timestamp when the contract was finalized, must not be too far in the future
|
* @param wallet_timestamp timestamp when the contract was finalized, must not be too far in the future
|
||||||
@ -1765,6 +1768,7 @@ TALER_wallet_deposit_verify (
|
|||||||
const struct TALER_Amount *deposit_fee,
|
const struct TALER_Amount *deposit_fee,
|
||||||
const struct TALER_MerchantWireHash *h_wire,
|
const struct TALER_MerchantWireHash *h_wire,
|
||||||
const struct TALER_PrivateContractHash *h_contract_terms,
|
const struct TALER_PrivateContractHash *h_contract_terms,
|
||||||
|
const struct TALER_AgeCommitmentHash *h_commitment_hash,
|
||||||
const struct TALER_ExtensionContractHash *h_extensions,
|
const struct TALER_ExtensionContractHash *h_extensions,
|
||||||
const struct TALER_DenominationHash *h_denom_pub,
|
const struct TALER_DenominationHash *h_denom_pub,
|
||||||
struct GNUNET_TIME_Timestamp wallet_timestamp,
|
struct GNUNET_TIME_Timestamp wallet_timestamp,
|
||||||
|
@ -901,7 +901,6 @@ typedef void
|
|||||||
* @param h_contract_terms hash of the contact of the merchant with the customer (further details are never disclosed to the exchange)
|
* @param h_contract_terms hash of the contact of the merchant with the customer (further details are never disclosed to the exchange)
|
||||||
* @param extension_details extension-specific details about the deposit relevant to the exchange
|
* @param extension_details extension-specific details about the deposit relevant to the exchange
|
||||||
* @param coin_pub coin’s public key
|
* @param coin_pub coin’s public key
|
||||||
* @param age_commitment age commitment that went into the making of the coin, might be NULL
|
|
||||||
* @param denom_pub denomination key with which the coin is signed
|
* @param denom_pub denomination key with which the coin is signed
|
||||||
* @param denom_sig exchange’s unblinded signature of the coin
|
* @param denom_sig exchange’s unblinded signature of the coin
|
||||||
* @param timestamp timestamp when the contract was finalized, must match approximately the current time of the exchange
|
* @param timestamp timestamp when the contract was finalized, must match approximately the current time of the exchange
|
||||||
@ -922,9 +921,9 @@ TALER_EXCHANGE_deposit (
|
|||||||
const char *merchant_payto_uri,
|
const char *merchant_payto_uri,
|
||||||
const struct TALER_WireSalt *wire_salt,
|
const struct TALER_WireSalt *wire_salt,
|
||||||
const struct TALER_PrivateContractHash *h_contract_terms,
|
const struct TALER_PrivateContractHash *h_contract_terms,
|
||||||
|
const struct TALER_AgeCommitmentHash *h_age_commitment,
|
||||||
const json_t *extension_details,
|
const json_t *extension_details,
|
||||||
const struct TALER_CoinSpendPublicKeyP *coin_pub,
|
const struct TALER_CoinSpendPublicKeyP *coin_pub,
|
||||||
const struct TALER_AgeCommitment *age_commitment,
|
|
||||||
const struct TALER_DenominationSignature *denom_sig,
|
const struct TALER_DenominationSignature *denom_sig,
|
||||||
const struct TALER_DenominationPublicKey *denom_pub,
|
const struct TALER_DenominationPublicKey *denom_pub,
|
||||||
struct GNUNET_TIME_Timestamp timestamp,
|
struct GNUNET_TIME_Timestamp timestamp,
|
||||||
|
@ -483,6 +483,12 @@ struct TALER_DepositRequestPS
|
|||||||
*/
|
*/
|
||||||
struct TALER_PrivateContractHash h_contract_terms GNUNET_PACKED;
|
struct TALER_PrivateContractHash h_contract_terms GNUNET_PACKED;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hash over the age commitment that went into the coin. Maybe all zero, if
|
||||||
|
* age commitment isn't applicable to the denomination.
|
||||||
|
*/
|
||||||
|
struct TALER_AgeCommitmentHash h_age_commitment GNUNET_PACKED;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hash over extension attributes shared with the exchange.
|
* Hash over extension attributes shared with the exchange.
|
||||||
*/
|
*/
|
||||||
|
@ -482,6 +482,7 @@ TALER_EXCHANGE_verify_coin_history (
|
|||||||
struct TALER_MerchantPublicKeyP merchant_pub;
|
struct TALER_MerchantPublicKeyP merchant_pub;
|
||||||
struct GNUNET_TIME_Timestamp refund_deadline = {0};
|
struct GNUNET_TIME_Timestamp refund_deadline = {0};
|
||||||
struct TALER_CoinSpendSignatureP sig;
|
struct TALER_CoinSpendSignatureP sig;
|
||||||
|
struct TALER_AgeCommitmentHash *hac = NULL;
|
||||||
struct GNUNET_JSON_Specification spec[] = {
|
struct GNUNET_JSON_Specification spec[] = {
|
||||||
GNUNET_JSON_spec_fixed_auto ("coin_sig",
|
GNUNET_JSON_spec_fixed_auto ("coin_sig",
|
||||||
&sig),
|
&sig),
|
||||||
@ -516,6 +517,7 @@ TALER_EXCHANGE_verify_coin_history (
|
|||||||
&fee,
|
&fee,
|
||||||
&h_wire,
|
&h_wire,
|
||||||
&h_contract_terms,
|
&h_contract_terms,
|
||||||
|
hac,
|
||||||
NULL /* h_extensions! */,
|
NULL /* h_extensions! */,
|
||||||
h_denom_pub,
|
h_denom_pub,
|
||||||
wallet_timestamp,
|
wallet_timestamp,
|
||||||
|
@ -479,7 +479,7 @@ verify_signatures (const struct TALER_EXCHANGE_DenomPublicKey *dki,
|
|||||||
const struct TALER_PrivateContractHash *h_contract_terms,
|
const struct TALER_PrivateContractHash *h_contract_terms,
|
||||||
const struct TALER_ExtensionContractHash *ech,
|
const struct TALER_ExtensionContractHash *ech,
|
||||||
const struct TALER_CoinSpendPublicKeyP *coin_pub,
|
const struct TALER_CoinSpendPublicKeyP *coin_pub,
|
||||||
const struct TALER_AgeCommitmentHash *ach,
|
const struct TALER_AgeCommitmentHash *h_age_commitment,
|
||||||
const struct TALER_DenominationSignature *denom_sig,
|
const struct TALER_DenominationSignature *denom_sig,
|
||||||
const struct TALER_DenominationPublicKey *denom_pub,
|
const struct TALER_DenominationPublicKey *denom_pub,
|
||||||
const struct TALER_DenominationHash *denom_pub_hash,
|
const struct TALER_DenominationHash *denom_pub_hash,
|
||||||
@ -493,6 +493,7 @@ verify_signatures (const struct TALER_EXCHANGE_DenomPublicKey *dki,
|
|||||||
&dki->fee_deposit,
|
&dki->fee_deposit,
|
||||||
h_wire,
|
h_wire,
|
||||||
h_contract_terms,
|
h_contract_terms,
|
||||||
|
h_age_commitment,
|
||||||
ech,
|
ech,
|
||||||
denom_pub_hash,
|
denom_pub_hash,
|
||||||
timestamp,
|
timestamp,
|
||||||
@ -518,9 +519,9 @@ verify_signatures (const struct TALER_EXCHANGE_DenomPublicKey *dki,
|
|||||||
.denom_sig = *denom_sig,
|
.denom_sig = *denom_sig,
|
||||||
.age_commitment_hash = {{{0}}}
|
.age_commitment_hash = {{{0}}}
|
||||||
};
|
};
|
||||||
if (NULL != ach)
|
if (NULL != h_age_commitment)
|
||||||
{
|
{
|
||||||
coin_info.age_commitment_hash = *ach;
|
coin_info.age_commitment_hash = *h_age_commitment;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GNUNET_YES !=
|
if (GNUNET_YES !=
|
||||||
@ -553,9 +554,9 @@ TALER_EXCHANGE_deposit (
|
|||||||
const char *merchant_payto_uri,
|
const char *merchant_payto_uri,
|
||||||
const struct TALER_WireSalt *wire_salt,
|
const struct TALER_WireSalt *wire_salt,
|
||||||
const struct TALER_PrivateContractHash *h_contract_terms,
|
const struct TALER_PrivateContractHash *h_contract_terms,
|
||||||
|
const struct TALER_AgeCommitmentHash *h_age_commitment,
|
||||||
const json_t *extension_details,
|
const json_t *extension_details,
|
||||||
const struct TALER_CoinSpendPublicKeyP *coin_pub,
|
const struct TALER_CoinSpendPublicKeyP *coin_pub,
|
||||||
const struct TALER_AgeCommitment *age_commitment,
|
|
||||||
const struct TALER_DenominationSignature *denom_sig,
|
const struct TALER_DenominationSignature *denom_sig,
|
||||||
const struct TALER_DenominationPublicKey *denom_pub,
|
const struct TALER_DenominationPublicKey *denom_pub,
|
||||||
struct GNUNET_TIME_Timestamp timestamp,
|
struct GNUNET_TIME_Timestamp timestamp,
|
||||||
@ -576,7 +577,6 @@ TALER_EXCHANGE_deposit (
|
|||||||
struct TALER_DenominationHash denom_pub_hash;
|
struct TALER_DenominationHash denom_pub_hash;
|
||||||
struct TALER_Amount amount_without_fee;
|
struct TALER_Amount amount_without_fee;
|
||||||
struct TALER_ExtensionContractHash ech;
|
struct TALER_ExtensionContractHash ech;
|
||||||
struct TALER_AgeCommitmentHash ach;
|
|
||||||
char arg_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2 + 32];
|
char arg_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2 + 32];
|
||||||
|
|
||||||
if (NULL != extension_details)
|
if (NULL != extension_details)
|
||||||
@ -637,20 +637,6 @@ TALER_EXCHANGE_deposit (
|
|||||||
TALER_denom_pub_hash (denom_pub,
|
TALER_denom_pub_hash (denom_pub,
|
||||||
&denom_pub_hash);
|
&denom_pub_hash);
|
||||||
|
|
||||||
if (NULL != age_commitment)
|
|
||||||
{
|
|
||||||
TALER_age_commitment_hash (age_commitment, &ach);
|
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
|
|
||||||
"XXXXXX deposit WITH age commitment %s\n",
|
|
||||||
GNUNET_h2s ((struct GNUNET_HashCode *) &ach.shash));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
|
|
||||||
"XXXXXX deposit with NO age commitment\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
verify_signatures (dki,
|
verify_signatures (dki,
|
||||||
amount,
|
amount,
|
||||||
@ -658,7 +644,7 @@ TALER_EXCHANGE_deposit (
|
|||||||
h_contract_terms,
|
h_contract_terms,
|
||||||
(NULL != extension_details) ? &ech : NULL,
|
(NULL != extension_details) ? &ech : NULL,
|
||||||
coin_pub,
|
coin_pub,
|
||||||
(NULL != age_commitment) ? &ach : NULL,
|
h_age_commitment,
|
||||||
denom_sig,
|
denom_sig,
|
||||||
denom_pub,
|
denom_pub,
|
||||||
&denom_pub_hash,
|
&denom_pub_hash,
|
||||||
@ -681,6 +667,9 @@ TALER_EXCHANGE_deposit (
|
|||||||
wire_salt),
|
wire_salt),
|
||||||
GNUNET_JSON_pack_data_auto ("h_contract_terms",
|
GNUNET_JSON_pack_data_auto ("h_contract_terms",
|
||||||
h_contract_terms),
|
h_contract_terms),
|
||||||
|
GNUNET_JSON_pack_allow_null (
|
||||||
|
GNUNET_JSON_pack_data_auto ("h_age_commitment",
|
||||||
|
h_age_commitment)),
|
||||||
GNUNET_JSON_pack_data_auto ("denom_pub_hash",
|
GNUNET_JSON_pack_data_auto ("denom_pub_hash",
|
||||||
&denom_pub_hash),
|
&denom_pub_hash),
|
||||||
TALER_JSON_pack_denom_sig ("ub_sig",
|
TALER_JSON_pack_denom_sig ("ub_sig",
|
||||||
|
@ -203,6 +203,7 @@ verify_conflict_history_ok (struct TALER_EXCHANGE_RefundHandle *rh,
|
|||||||
struct TALER_Amount deposit_fee;
|
struct TALER_Amount deposit_fee;
|
||||||
struct TALER_MerchantWireHash h_wire;
|
struct TALER_MerchantWireHash h_wire;
|
||||||
struct TALER_PrivateContractHash h_contract_terms;
|
struct TALER_PrivateContractHash h_contract_terms;
|
||||||
|
struct TALER_AgeCommitmentHash h_age_commitment = {{{0}}};
|
||||||
// struct TALER_ExtensionContractHash h_extensions; // FIXME!
|
// struct TALER_ExtensionContractHash h_extensions; // FIXME!
|
||||||
struct TALER_DenominationHash h_denom_pub;
|
struct TALER_DenominationHash h_denom_pub;
|
||||||
struct GNUNET_TIME_Timestamp wallet_timestamp;
|
struct GNUNET_TIME_Timestamp wallet_timestamp;
|
||||||
@ -218,6 +219,9 @@ verify_conflict_history_ok (struct TALER_EXCHANGE_RefundHandle *rh,
|
|||||||
&h_wire),
|
&h_wire),
|
||||||
GNUNET_JSON_spec_fixed_auto ("h_denom_pub",
|
GNUNET_JSON_spec_fixed_auto ("h_denom_pub",
|
||||||
&h_denom_pub),
|
&h_denom_pub),
|
||||||
|
GNUNET_JSON_spec_mark_optional (
|
||||||
|
GNUNET_JSON_spec_fixed_auto ("h_age_commitment",
|
||||||
|
&h_age_commitment)),
|
||||||
GNUNET_JSON_spec_timestamp ("timestamp",
|
GNUNET_JSON_spec_timestamp ("timestamp",
|
||||||
&wallet_timestamp),
|
&wallet_timestamp),
|
||||||
GNUNET_JSON_spec_timestamp ("refund_deadline",
|
GNUNET_JSON_spec_timestamp ("refund_deadline",
|
||||||
@ -243,6 +247,7 @@ verify_conflict_history_ok (struct TALER_EXCHANGE_RefundHandle *rh,
|
|||||||
&deposit_fee,
|
&deposit_fee,
|
||||||
&h_wire,
|
&h_wire,
|
||||||
&h_contract_terms,
|
&h_contract_terms,
|
||||||
|
&h_age_commitment,
|
||||||
NULL /* h_extensions! */,
|
NULL /* h_extensions! */,
|
||||||
&h_denom_pub,
|
&h_denom_pub,
|
||||||
wallet_timestamp,
|
wallet_timestamp,
|
||||||
|
@ -349,9 +349,9 @@ run (void *cls,
|
|||||||
* Move money to the exchange's bank account.
|
* Move money to the exchange's bank account.
|
||||||
*/
|
*/
|
||||||
CMD_TRANSFER_TO_EXCHANGE ("create-reserve-age",
|
CMD_TRANSFER_TO_EXCHANGE ("create-reserve-age",
|
||||||
"EUR:6.02"),
|
"EUR:5.02"),
|
||||||
TALER_TESTING_cmd_check_bank_admin_transfer ("check-create-reserve-age",
|
TALER_TESTING_cmd_check_bank_admin_transfer ("check-create-reserve-age",
|
||||||
"EUR:6.02",
|
"EUR:5.02",
|
||||||
bc.user42_payto,
|
bc.user42_payto,
|
||||||
bc.exchange_payto,
|
bc.exchange_payto,
|
||||||
"create-reserve-age"),
|
"create-reserve-age"),
|
||||||
@ -432,6 +432,11 @@ run (void *cls,
|
|||||||
"EUR:4.98",
|
"EUR:4.98",
|
||||||
bc.exchange_payto,
|
bc.exchange_payto,
|
||||||
bc.user42_payto),
|
bc.user42_payto),
|
||||||
|
TALER_TESTING_cmd_check_bank_transfer ("check_bank_transfer-499c2",
|
||||||
|
ec.exchange_url,
|
||||||
|
"EUR:4.98",
|
||||||
|
bc.exchange_payto,
|
||||||
|
bc.user42_payto),
|
||||||
TALER_TESTING_cmd_check_bank_transfer ("check_bank_transfer-99c1",
|
TALER_TESTING_cmd_check_bank_transfer ("check_bank_transfer-99c1",
|
||||||
ec.exchange_url,
|
ec.exchange_url,
|
||||||
"EUR:0.98",
|
"EUR:0.98",
|
||||||
|
@ -287,7 +287,8 @@ deposit_run (void *cls,
|
|||||||
const struct TALER_TESTING_Command *coin_cmd;
|
const struct TALER_TESTING_Command *coin_cmd;
|
||||||
const struct TALER_CoinSpendPrivateKeyP *coin_priv;
|
const struct TALER_CoinSpendPrivateKeyP *coin_priv;
|
||||||
struct TALER_CoinSpendPublicKeyP coin_pub;
|
struct TALER_CoinSpendPublicKeyP coin_pub;
|
||||||
struct TALER_AgeCommitment *pac = NULL;
|
struct TALER_AgeCommitment *age_commitment = NULL;
|
||||||
|
struct TALER_AgeCommitmentHash h_age_commitment = {0};
|
||||||
const struct TALER_EXCHANGE_DenomPublicKey *denom_pub;
|
const struct TALER_EXCHANGE_DenomPublicKey *denom_pub;
|
||||||
const struct TALER_DenominationSignature *denom_pub_sig;
|
const struct TALER_DenominationSignature *denom_pub_sig;
|
||||||
struct TALER_CoinSpendSignatureP coin_sig;
|
struct TALER_CoinSpendSignatureP coin_sig;
|
||||||
@ -386,7 +387,7 @@ deposit_run (void *cls,
|
|||||||
(GNUNET_OK !=
|
(GNUNET_OK !=
|
||||||
TALER_TESTING_get_trait_age_commitment (coin_cmd,
|
TALER_TESTING_get_trait_age_commitment (coin_cmd,
|
||||||
ds->coin_index,
|
ds->coin_index,
|
||||||
&pac)) ||
|
&age_commitment)) ||
|
||||||
(GNUNET_OK !=
|
(GNUNET_OK !=
|
||||||
TALER_TESTING_get_trait_denom_pub (coin_cmd,
|
TALER_TESTING_get_trait_denom_pub (coin_cmd,
|
||||||
ds->coin_index,
|
ds->coin_index,
|
||||||
@ -404,9 +405,10 @@ deposit_run (void *cls,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
|
if (NULL != age_commitment)
|
||||||
"XZXZXZXZ pac is %sNULL\n",
|
{
|
||||||
(NULL == pac)? "" : "NOT ");
|
TALER_age_commitment_hash (age_commitment, &h_age_commitment);
|
||||||
|
}
|
||||||
|
|
||||||
ds->deposit_fee = denom_pub->fee_deposit;
|
ds->deposit_fee = denom_pub->fee_deposit;
|
||||||
GNUNET_CRYPTO_eddsa_key_get_public (&coin_priv->eddsa_priv,
|
GNUNET_CRYPTO_eddsa_key_get_public (&coin_priv->eddsa_priv,
|
||||||
@ -441,7 +443,8 @@ deposit_run (void *cls,
|
|||||||
&denom_pub->fee_deposit,
|
&denom_pub->fee_deposit,
|
||||||
&h_wire,
|
&h_wire,
|
||||||
&h_contract_terms,
|
&h_contract_terms,
|
||||||
NULL, /* FIXME: extension hash! */
|
&h_age_commitment,
|
||||||
|
NULL, /* FIXME: add hash of extensions */
|
||||||
&denom_pub->h_key,
|
&denom_pub->h_key,
|
||||||
ds->wallet_timestamp,
|
ds->wallet_timestamp,
|
||||||
&merchant_pub,
|
&merchant_pub,
|
||||||
@ -455,9 +458,9 @@ deposit_run (void *cls,
|
|||||||
payto_uri,
|
payto_uri,
|
||||||
&wire_salt,
|
&wire_salt,
|
||||||
&h_contract_terms,
|
&h_contract_terms,
|
||||||
NULL, /* FIXME: extension object */
|
&h_age_commitment,
|
||||||
|
NULL, /* FIXME: add hash of extensions */
|
||||||
&coin_pub,
|
&coin_pub,
|
||||||
pac,
|
|
||||||
denom_pub_sig,
|
denom_pub_sig,
|
||||||
&denom_pub->key,
|
&denom_pub->key,
|
||||||
ds->wallet_timestamp,
|
ds->wallet_timestamp,
|
||||||
|
@ -608,8 +608,6 @@ TALER_TESTING_cmd_withdraw_amount (const char *label,
|
|||||||
uint32_t seed;
|
uint32_t seed;
|
||||||
struct TALER_AgeMask mask;
|
struct TALER_AgeMask mask;
|
||||||
|
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "AAAAAAA age is %d\n", age);
|
|
||||||
|
|
||||||
ac = GNUNET_new (struct TALER_AgeCommitment);
|
ac = GNUNET_new (struct TALER_AgeCommitment);
|
||||||
hac = GNUNET_new (struct TALER_AgeCommitmentHash);
|
hac = GNUNET_new (struct TALER_AgeCommitmentHash);
|
||||||
seed = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, UINT32_MAX);
|
seed = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, UINT32_MAX);
|
||||||
|
@ -88,21 +88,10 @@ TALER_test_coin_valid (const struct TALER_CoinPublicInfo *coin_public_info,
|
|||||||
GNUNET_memcmp (&d_hash,
|
GNUNET_memcmp (&d_hash,
|
||||||
&coin_public_info->denom_pub_hash));
|
&coin_public_info->denom_pub_hash));
|
||||||
#endif
|
#endif
|
||||||
{
|
|
||||||
const struct TALER_AgeCommitmentHash *pahc =
|
|
||||||
&coin_public_info->age_commitment_hash;
|
|
||||||
|
|
||||||
if (TALER_AgeCommitmentHash_isNullOrZero (pahc))
|
|
||||||
{
|
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
|
|
||||||
"ZZZZZZZZ AgeCommitmentHash isNUllOrZero!!\n");
|
|
||||||
pahc = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
TALER_coin_pub_hash (&coin_public_info->coin_pub,
|
TALER_coin_pub_hash (&coin_public_info->coin_pub,
|
||||||
pahc,
|
&coin_public_info->age_commitment_hash,
|
||||||
&c_hash);
|
&c_hash);
|
||||||
}
|
|
||||||
|
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
TALER_denom_pub_verify (denom_pub,
|
TALER_denom_pub_verify (denom_pub,
|
||||||
|
@ -29,6 +29,7 @@ TALER_wallet_deposit_sign (
|
|||||||
const struct TALER_Amount *deposit_fee,
|
const struct TALER_Amount *deposit_fee,
|
||||||
const struct TALER_MerchantWireHash *h_wire,
|
const struct TALER_MerchantWireHash *h_wire,
|
||||||
const struct TALER_PrivateContractHash *h_contract_terms,
|
const struct TALER_PrivateContractHash *h_contract_terms,
|
||||||
|
const struct TALER_AgeCommitmentHash *h_age_commitment,
|
||||||
const struct TALER_ExtensionContractHash *h_extensions,
|
const struct TALER_ExtensionContractHash *h_extensions,
|
||||||
const struct TALER_DenominationHash *h_denom_pub,
|
const struct TALER_DenominationHash *h_denom_pub,
|
||||||
struct GNUNET_TIME_Timestamp wallet_timestamp,
|
struct GNUNET_TIME_Timestamp wallet_timestamp,
|
||||||
@ -48,8 +49,12 @@ TALER_wallet_deposit_sign (
|
|||||||
.merchant = *merchant_pub
|
.merchant = *merchant_pub
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (NULL != h_age_commitment)
|
||||||
|
dr.h_age_commitment = *h_age_commitment;
|
||||||
|
|
||||||
if (NULL != h_extensions)
|
if (NULL != h_extensions)
|
||||||
dr.h_extensions = *h_extensions;
|
dr.h_extensions = *h_extensions;
|
||||||
|
|
||||||
TALER_amount_hton (&dr.amount_with_fee,
|
TALER_amount_hton (&dr.amount_with_fee,
|
||||||
amount);
|
amount);
|
||||||
TALER_amount_hton (&dr.deposit_fee,
|
TALER_amount_hton (&dr.deposit_fee,
|
||||||
@ -66,6 +71,7 @@ TALER_wallet_deposit_verify (
|
|||||||
const struct TALER_Amount *deposit_fee,
|
const struct TALER_Amount *deposit_fee,
|
||||||
const struct TALER_MerchantWireHash *h_wire,
|
const struct TALER_MerchantWireHash *h_wire,
|
||||||
const struct TALER_PrivateContractHash *h_contract_terms,
|
const struct TALER_PrivateContractHash *h_contract_terms,
|
||||||
|
const struct TALER_AgeCommitmentHash *h_age_commitment,
|
||||||
const struct TALER_ExtensionContractHash *h_extensions,
|
const struct TALER_ExtensionContractHash *h_extensions,
|
||||||
const struct TALER_DenominationHash *h_denom_pub,
|
const struct TALER_DenominationHash *h_denom_pub,
|
||||||
struct GNUNET_TIME_Timestamp wallet_timestamp,
|
struct GNUNET_TIME_Timestamp wallet_timestamp,
|
||||||
@ -82,11 +88,21 @@ TALER_wallet_deposit_verify (
|
|||||||
.h_denom_pub = *h_denom_pub,
|
.h_denom_pub = *h_denom_pub,
|
||||||
.wallet_timestamp = GNUNET_TIME_timestamp_hton (wallet_timestamp),
|
.wallet_timestamp = GNUNET_TIME_timestamp_hton (wallet_timestamp),
|
||||||
.refund_deadline = GNUNET_TIME_timestamp_hton (refund_deadline),
|
.refund_deadline = GNUNET_TIME_timestamp_hton (refund_deadline),
|
||||||
.merchant = *merchant_pub
|
.merchant = *merchant_pub,
|
||||||
|
.h_age_commitment = {{{0}}},
|
||||||
|
.h_extensions = {{{0}}}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (NULL != h_age_commitment)
|
||||||
|
{
|
||||||
|
dr.h_age_commitment = *h_age_commitment;
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
|
||||||
|
"VFVFVFVF got NON-NULL h_age_commitment\n");
|
||||||
|
}
|
||||||
|
|
||||||
if (NULL != h_extensions)
|
if (NULL != h_extensions)
|
||||||
dr.h_extensions = *h_extensions;
|
dr.h_extensions = *h_extensions;
|
||||||
|
|
||||||
TALER_amount_hton (&dr.amount_with_fee,
|
TALER_amount_hton (&dr.amount_with_fee,
|
||||||
amount);
|
amount);
|
||||||
TALER_amount_hton (&dr.deposit_fee,
|
TALER_amount_hton (&dr.deposit_fee,
|
||||||
@ -143,14 +159,11 @@ TALER_wallet_link_verify (
|
|||||||
.purpose.purpose = htonl (TALER_SIGNATURE_WALLET_COIN_LINK),
|
.purpose.purpose = htonl (TALER_SIGNATURE_WALLET_COIN_LINK),
|
||||||
.h_denom_pub = *h_denom_pub,
|
.h_denom_pub = *h_denom_pub,
|
||||||
.transfer_pub = *transfer_pub,
|
.transfer_pub = *transfer_pub,
|
||||||
.coin_envelope_hash = *h_coin_ev
|
.coin_envelope_hash = *h_coin_ev,
|
||||||
|
.h_age_commitment = {{{0}}}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (NULL == h_age_commitment)
|
if (NULL != h_age_commitment)
|
||||||
memset (&ldp.h_age_commitment,
|
|
||||||
0,
|
|
||||||
sizeof(*h_age_commitment));
|
|
||||||
else
|
|
||||||
ldp.h_age_commitment = *h_age_commitment;
|
ldp.h_age_commitment = *h_age_commitment;
|
||||||
|
|
||||||
return
|
return
|
||||||
@ -284,9 +297,9 @@ TALER_wallet_melt_verify (
|
|||||||
.purpose.purpose = htonl (TALER_SIGNATURE_WALLET_COIN_MELT),
|
.purpose.purpose = htonl (TALER_SIGNATURE_WALLET_COIN_MELT),
|
||||||
.rc = *rc,
|
.rc = *rc,
|
||||||
.h_denom_pub = *h_denom_pub,
|
.h_denom_pub = *h_denom_pub,
|
||||||
|
.h_age_commitment = {{{0}}},
|
||||||
};
|
};
|
||||||
|
|
||||||
memset (&melt.h_age_commitment, 0, sizeof(struct TALER_AgeCommitmentHash));
|
|
||||||
if (NULL != h_age_commitment)
|
if (NULL != h_age_commitment)
|
||||||
melt.h_age_commitment = *h_age_commitment;
|
melt.h_age_commitment = *h_age_commitment;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user