summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÖzgür Kesim <oec-taler@kesim.org>2022-06-27 14:11:46 +0200
committerÖzgür Kesim <oec-taler@kesim.org>2022-06-27 14:11:46 +0200
commit87025cfd178780f2e928019163ce81c1b7675c57 (patch)
treeeef4e91e6a52fc7a434e9d9efa64c938b935fef1
parentd2537de68cbe05f873874121491bae8a59729480 (diff)
downloadexchange-87025cfd178780f2e928019163ce81c1b7675c57.tar.gz
exchange-87025cfd178780f2e928019163ce81c1b7675c57.tar.bz2
exchange-87025cfd178780f2e928019163ce81c1b7675c57.zip
age restriction support in exchange_api_purse_create_with_deposit added
-rw-r--r--src/include/taler_exchange_service.h6
-rw-r--r--src/lib/exchange_api_purse_create_with_deposit.c35
-rw-r--r--src/testing/testing_api_cmd_purse_create_deposit.c10
-rw-r--r--src/testing/testing_api_cmd_purse_deposit.c10
4 files changed, 22 insertions, 39 deletions
diff --git a/src/include/taler_exchange_service.h b/src/include/taler_exchange_service.h
index ae48e0c54..328e68fee 100644
--- a/src/include/taler_exchange_service.h
+++ b/src/include/taler_exchange_service.h
@@ -4516,12 +4516,10 @@ struct TALER_EXCHANGE_PurseCreateDepositHandle;
*/
struct TALER_EXCHANGE_PurseDeposit
{
-#if FIXME_OEC
/**
- * Age commitment data.
+ * Age commitment data, might be NULL.
*/
- struct TALER_AgeCommitment age_commitment;
-#endif
+ const struct TALER_AgeCommitmentProof *age_commitment_proof;
/**
* Private key of the coin.
diff --git a/src/lib/exchange_api_purse_create_with_deposit.c b/src/lib/exchange_api_purse_create_with_deposit.c
index f2d80b942..fa1de60b3 100644
--- a/src/lib/exchange_api_purse_create_with_deposit.c
+++ b/src/lib/exchange_api_purse_create_with_deposit.c
@@ -568,28 +568,31 @@ TALER_EXCHANGE_purse_create_with_deposit (
for (unsigned int i = 0; i<num_deposits; i++)
{
const struct TALER_EXCHANGE_PurseDeposit *deposit = &deposits[i];
+ const struct TALER_AgeCommitmentProof *acp = deposit->age_commitment_proof;
struct Deposit *d = &pch->deposits[i];
json_t *jdeposit;
-#if FIXME_OEC
struct TALER_AgeCommitmentHash agh;
struct TALER_AgeCommitmentHash *aghp = NULL;
struct TALER_AgeAttestation attest;
+ struct TALER_AgeAttestation *attestp = NULL;
- TALER_age_commitment_hash (&deposit->age_commitment,
- &agh);
- aghp = &agh;
- if (GNUNET_OK !=
- TALER_age_commitment_attest (&deposit->age_proof,
- min_age,
- &attest))
+ if (NULL != acp)
{
- GNUNET_break (0);
- json_decref (deposit_arr);
- GNUNET_free (url);
- GNUNET_free (pch);
- return NULL;
+ TALER_age_commitment_hash (&acp->commitment,
+ &agh);
+ aghp = &agh;
+ if (GNUNET_OK !=
+ TALER_age_commitment_attest (acp,
+ min_age,
+ &attest))
+ {
+ GNUNET_break (0);
+ json_decref (deposit_arr);
+ GNUNET_free (url);
+ GNUNET_free (pch);
+ return NULL;
+ }
}
-#endif
d->contribution = deposit->amount;
d->h_denom_pub = deposit->h_denom_pub;
GNUNET_CRYPTO_eddsa_key_get_public (&deposit->coin_priv.eddsa_priv,
@@ -601,14 +604,12 @@ TALER_EXCHANGE_purse_create_with_deposit (
&deposit->coin_priv,
&d->coin_sig);
jdeposit = GNUNET_JSON_PACK (
-#if FIXME_OEC
GNUNET_JSON_pack_allow_null (
GNUNET_JSON_pack_data_auto ("h_age_commitment",
aghp)),
GNUNET_JSON_pack_allow_null (
GNUNET_JSON_pack_data_auto ("age_attestation",
- &attest)),
-#endif
+ attestp)),
TALER_JSON_pack_amount ("amount",
&deposit->amount),
GNUNET_JSON_pack_data_auto ("denom_pub_hash",
diff --git a/src/testing/testing_api_cmd_purse_create_deposit.c b/src/testing/testing_api_cmd_purse_create_deposit.c
index ef98c9055..c49c4bbb0 100644
--- a/src/testing/testing_api_cmd_purse_create_deposit.c
+++ b/src/testing/testing_api_cmd_purse_create_deposit.c
@@ -207,7 +207,6 @@ deposit_run (void *cls,
const struct TALER_TESTING_Command *coin_cmd;
const struct TALER_CoinSpendPrivateKeyP *coin_priv;
const struct TALER_AgeCommitmentProof *age_commitment_proof = NULL;
- struct TALER_AgeCommitmentHash h_age_commitment = {0};
const struct TALER_EXCHANGE_DenomPublicKey *denom_pub;
const struct TALER_DenominationSignature *denom_pub_sig;
@@ -242,14 +241,7 @@ deposit_run (void *cls,
TALER_TESTING_interpreter_fail (is);
return;
}
- if (NULL != age_commitment_proof)
- {
- TALER_age_commitment_hash (&age_commitment_proof->commitment,
- &h_age_commitment);
- }
-#if FIXME_OEC
- pd->age_commitment = *h_age_commitment;
-#endif
+ pd->age_commitment_proof = age_commitment_proof;
pd->denom_sig = *denom_pub_sig;
pd->coin_priv = *coin_priv;
pd->amount = cr->deposit_with_fee;
diff --git a/src/testing/testing_api_cmd_purse_deposit.c b/src/testing/testing_api_cmd_purse_deposit.c
index 57cc48cf8..b10c6d329 100644
--- a/src/testing/testing_api_cmd_purse_deposit.c
+++ b/src/testing/testing_api_cmd_purse_deposit.c
@@ -286,7 +286,6 @@ deposit_run (void *cls,
const struct TALER_TESTING_Command *coin_cmd;
const struct TALER_CoinSpendPrivateKeyP *coin_priv;
const struct TALER_AgeCommitmentProof *age_commitment_proof = NULL;
- struct TALER_AgeCommitmentHash h_age_commitment = {0};
const struct TALER_EXCHANGE_DenomPublicKey *denom_pub;
const struct TALER_DenominationSignature *denom_pub_sig;
@@ -321,14 +320,7 @@ deposit_run (void *cls,
TALER_TESTING_interpreter_fail (is);
return;
}
- if (NULL != age_commitment_proof)
- {
- TALER_age_commitment_hash (&age_commitment_proof->commitment,
- &h_age_commitment);
- }
-#if FIXME_OEC
- pd->age_commitment = *h_age_commitment;
-#endif
+ pd->age_commitment_proof = age_commitment_proof;
pd->denom_sig = *denom_pub_sig;
pd->coin_priv = *coin_priv;
pd->amount = cr->deposit_with_fee;