-tests now with age restriction
This commit is contained in:
parent
7624db4efd
commit
10d7d93ad8
@ -101,6 +101,11 @@ test_high_level (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static struct TALER_AgeMask age_mask = {
|
||||||
|
.bits = 1 | 1 << 8 | 1 << 10 | 1 << 12
|
||||||
|
| 1 << 14 | 1 << 16 | 1 << 18 | 1 << 21
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test the basic planchet functionality of creating a fresh planchet
|
* Test the basic planchet functionality of creating a fresh planchet
|
||||||
* and extracting the respective signature.
|
* and extracting the respective signature.
|
||||||
@ -108,7 +113,7 @@ test_high_level (void)
|
|||||||
* @return 0 on success
|
* @return 0 on success
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
test_planchets_rsa (void)
|
test_planchets_rsa (uint8_t age)
|
||||||
{
|
{
|
||||||
struct TALER_PlanchetMasterSecretP ps;
|
struct TALER_PlanchetMasterSecretP ps;
|
||||||
struct TALER_CoinSpendPrivateKeyP coin_priv;
|
struct TALER_CoinSpendPrivateKeyP coin_priv;
|
||||||
@ -120,6 +125,26 @@ test_planchets_rsa (void)
|
|||||||
struct TALER_BlindedDenominationSignature blind_sig;
|
struct TALER_BlindedDenominationSignature blind_sig;
|
||||||
struct TALER_FreshCoin coin;
|
struct TALER_FreshCoin coin;
|
||||||
struct TALER_CoinPubHashP c_hash;
|
struct TALER_CoinPubHashP c_hash;
|
||||||
|
struct TALER_AgeCommitmentHash *ach = NULL;
|
||||||
|
|
||||||
|
if (0 < age)
|
||||||
|
{
|
||||||
|
struct TALER_AgeCommitmentHash ah = {0};
|
||||||
|
struct TALER_AgeCommitmentProof *acp;
|
||||||
|
uint64_t salt = GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
|
||||||
|
UINT64_MAX);
|
||||||
|
|
||||||
|
acp = GNUNET_new (struct TALER_AgeCommitmentProof);
|
||||||
|
|
||||||
|
GNUNET_assert (GNUNET_OK ==
|
||||||
|
TALER_age_restriction_commit (&age_mask,
|
||||||
|
age,
|
||||||
|
salt,
|
||||||
|
acp));
|
||||||
|
TALER_age_commitment_hash (&acp->commitment,
|
||||||
|
&ah);
|
||||||
|
ach = &ah;
|
||||||
|
}
|
||||||
|
|
||||||
GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_STRONG,
|
GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_STRONG,
|
||||||
&ps,
|
&ps,
|
||||||
@ -152,7 +177,7 @@ test_planchets_rsa (void)
|
|||||||
&alg_values,
|
&alg_values,
|
||||||
&bks,
|
&bks,
|
||||||
&coin_priv,
|
&coin_priv,
|
||||||
NULL, /* no age commitment */
|
ach,
|
||||||
&c_hash,
|
&c_hash,
|
||||||
&pd));
|
&pd));
|
||||||
GNUNET_assert (GNUNET_OK ==
|
GNUNET_assert (GNUNET_OK ==
|
||||||
@ -166,7 +191,7 @@ test_planchets_rsa (void)
|
|||||||
&blind_sig,
|
&blind_sig,
|
||||||
&bks,
|
&bks,
|
||||||
&coin_priv,
|
&coin_priv,
|
||||||
NULL, /* no age commitment */
|
ach,
|
||||||
&c_hash,
|
&c_hash,
|
||||||
&alg_values,
|
&alg_values,
|
||||||
&coin));
|
&coin));
|
||||||
@ -178,8 +203,6 @@ test_planchets_rsa (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** FIXME-oec: Add test for planchets with age commitment hash */
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Function for CS signatures to derive public R_0 and R_1
|
* @brief Function for CS signatures to derive public R_0 and R_1
|
||||||
*
|
*
|
||||||
@ -220,7 +243,7 @@ derive_r_public (
|
|||||||
* @return 0 on success
|
* @return 0 on success
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
test_planchets_cs (void)
|
test_planchets_cs (uint8_t age)
|
||||||
{
|
{
|
||||||
struct TALER_PlanchetMasterSecretP ps;
|
struct TALER_PlanchetMasterSecretP ps;
|
||||||
struct TALER_CoinSpendPrivateKeyP coin_priv;
|
struct TALER_CoinSpendPrivateKeyP coin_priv;
|
||||||
@ -232,6 +255,26 @@ test_planchets_cs (void)
|
|||||||
struct TALER_BlindedDenominationSignature blind_sig;
|
struct TALER_BlindedDenominationSignature blind_sig;
|
||||||
struct TALER_FreshCoin coin;
|
struct TALER_FreshCoin coin;
|
||||||
struct TALER_ExchangeWithdrawValues alg_values;
|
struct TALER_ExchangeWithdrawValues alg_values;
|
||||||
|
struct TALER_AgeCommitmentHash *ach = NULL;
|
||||||
|
|
||||||
|
if (0 < age)
|
||||||
|
{
|
||||||
|
struct TALER_AgeCommitmentHash ah = {0};
|
||||||
|
struct TALER_AgeCommitmentProof *acp;
|
||||||
|
uint64_t salt = GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
|
||||||
|
UINT64_MAX);
|
||||||
|
|
||||||
|
acp = GNUNET_new (struct TALER_AgeCommitmentProof);
|
||||||
|
|
||||||
|
GNUNET_assert (GNUNET_OK ==
|
||||||
|
TALER_age_restriction_commit (&age_mask,
|
||||||
|
age,
|
||||||
|
salt,
|
||||||
|
acp));
|
||||||
|
TALER_age_commitment_hash (&acp->commitment,
|
||||||
|
&ah);
|
||||||
|
ach = &ah;
|
||||||
|
}
|
||||||
|
|
||||||
GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_STRONG,
|
GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_STRONG,
|
||||||
&ps,
|
&ps,
|
||||||
@ -260,7 +303,7 @@ test_planchets_cs (void)
|
|||||||
&alg_values,
|
&alg_values,
|
||||||
&bks,
|
&bks,
|
||||||
&coin_priv,
|
&coin_priv,
|
||||||
NULL,
|
ach,
|
||||||
&c_hash,
|
&c_hash,
|
||||||
&pd));
|
&pd));
|
||||||
GNUNET_assert (GNUNET_OK ==
|
GNUNET_assert (GNUNET_OK ==
|
||||||
@ -274,7 +317,7 @@ test_planchets_cs (void)
|
|||||||
&blind_sig,
|
&blind_sig,
|
||||||
&bks,
|
&bks,
|
||||||
&coin_priv,
|
&coin_priv,
|
||||||
NULL,
|
ach,
|
||||||
&c_hash,
|
&c_hash,
|
||||||
&alg_values,
|
&alg_values,
|
||||||
&coin));
|
&coin));
|
||||||
@ -294,11 +337,11 @@ test_planchets_cs (void)
|
|||||||
* @return 0 on success
|
* @return 0 on success
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
test_planchets (void)
|
test_planchets (uint8_t age)
|
||||||
{
|
{
|
||||||
if (0 != test_planchets_rsa ())
|
if (0 != test_planchets_rsa (age))
|
||||||
return -1;
|
return -1;
|
||||||
return test_planchets_cs ();
|
return test_planchets_cs (age);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -399,12 +442,10 @@ main (int argc,
|
|||||||
(void) argv;
|
(void) argv;
|
||||||
if (0 != test_high_level ())
|
if (0 != test_high_level ())
|
||||||
return 1;
|
return 1;
|
||||||
if (0 != test_planchets ())
|
if (0 != test_planchets (0))
|
||||||
return 2;
|
return 2;
|
||||||
#if FIXME_OEC
|
if (0 != test_planchets (13))
|
||||||
if (0 != test_planchets_with_age_commitment ())
|
|
||||||
return 3;
|
return 3;
|
||||||
#endif
|
|
||||||
if (0 != test_exchange_sigs ())
|
if (0 != test_exchange_sigs ())
|
||||||
return 4;
|
return 4;
|
||||||
if (0 != test_merchant_sigs ())
|
if (0 != test_merchant_sigs ())
|
||||||
|
Loading…
Reference in New Issue
Block a user