summaryrefslogtreecommitdiff
path: root/src/util/test_crypto.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2016-08-05 16:08:19 +0200
committerChristian Grothoff <christian@grothoff.org>2016-08-05 16:08:19 +0200
commit745719dbc1482734ab3ca7a20541ee8a12ecb69c (patch)
tree68ca6a1f328f59351a69064c72dc87b92756b689 /src/util/test_crypto.c
parente800772c85e1e1399c756162921c3f557794ffea (diff)
downloadexchange-745719dbc1482734ab3ca7a20541ee8a12ecb69c.tar.gz
exchange-745719dbc1482734ab3ca7a20541ee8a12ecb69c.tar.bz2
exchange-745719dbc1482734ab3ca7a20541ee8a12ecb69c.zip
first half of changing refresh protocol to derive all key data from DH
Diffstat (limited to 'src/util/test_crypto.c')
-rw-r--r--src/util/test_crypto.c115
1 files changed, 34 insertions, 81 deletions
diff --git a/src/util/test_crypto.c b/src/util/test_crypto.c
index f442cefbd..f28ae8003 100644
--- a/src/util/test_crypto.c
+++ b/src/util/test_crypto.c
@@ -25,58 +25,6 @@
/**
- * Test low-level link encryption/decryption APIs.
- *
- * @return 0 on success
- */
-static int
-test_basics ()
-{
- struct TALER_EncryptedLinkSecretP secret_enc;
- struct TALER_TransferSecretP trans_sec;
- struct TALER_LinkSecretP secret;
- struct TALER_LinkSecretP secret2;
- struct TALER_RefreshLinkEncryptedP rl_enc;
- struct TALER_RefreshLinkDecryptedP rl;
- struct TALER_RefreshLinkDecryptedP rld;
-
- GNUNET_log_setup ("test-crypto",
- "WARNING",
- NULL);
- GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
- &secret,
- sizeof (secret));
- GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
- &rl,
- sizeof (rl));
- TALER_refresh_encrypt (&rl,
- &secret,
- &rl_enc);
- GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
- &trans_sec,
- sizeof (trans_sec));
- GNUNET_assert (GNUNET_OK ==
- TALER_transfer_encrypt (&secret,
- &trans_sec,
- &secret_enc));
- GNUNET_assert (GNUNET_OK ==
- TALER_transfer_decrypt (&secret_enc,
- &trans_sec,
- &secret2));
- GNUNET_assert (0 == memcmp (&secret,
- &secret2,
- sizeof (secret)));
- TALER_refresh_decrypt (&rl_enc,
- &secret2,
- &rld);
- GNUNET_assert (0 == memcmp (&rld,
- &rl,
- sizeof (struct TALER_RefreshLinkDecryptedP)));
- return 0;
-}
-
-
-/**
* Test high-level link encryption/decryption API.
*
* @return 0 on success
@@ -85,46 +33,53 @@ static int
test_high_level ()
{
struct GNUNET_CRYPTO_EddsaPrivateKey *pk;
- struct TALER_LinkSecretP secret;
- struct TALER_LinkSecretP secret2;
- struct TALER_CoinSpendPublicKeyP coin_pub;
struct TALER_CoinSpendPrivateKeyP coin_priv;
+ struct TALER_CoinSpendPublicKeyP coin_pub;
+ struct GNUNET_CRYPTO_EcdhePrivateKey *pk2;
struct TALER_TransferPrivateKeyP trans_priv;
struct TALER_TransferPublicKeyP trans_pub;
- struct TALER_EncryptedLinkSecretP secret_enc;
+ struct TALER_TransferSecretP secret;
+ struct TALER_TransferSecretP secret2;
+ struct TALER_FreshCoinP fc1;
+ struct TALER_FreshCoinP fc2;
pk = GNUNET_CRYPTO_eddsa_key_create ();
- GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
- &secret,
- sizeof (secret));
- GNUNET_CRYPTO_eddsa_key_get_public (pk,
+ coin_priv.eddsa_priv = *pk;
+ GNUNET_free (pk);
+ GNUNET_CRYPTO_eddsa_key_get_public (&coin_priv.eddsa_priv,
&coin_pub.eddsa_pub);
- GNUNET_assert (GNUNET_OK ==
- TALER_link_encrypt_secret (&secret,
- &coin_pub,
- &trans_priv,
- &trans_pub,
- &secret_enc));
- GNUNET_assert (GNUNET_OK ==
- TALER_link_decrypt_secret (&secret_enc,
- &trans_priv,
- &coin_pub,
- &secret2));
+ pk2 = GNUNET_CRYPTO_ecdhe_key_create ();
+ trans_priv.ecdhe_priv = *pk2;
+ GNUNET_free (pk2);
+ GNUNET_CRYPTO_ecdhe_key_get_public (&trans_priv.ecdhe_priv,
+ &trans_pub.ecdhe_pub);
+ TALER_link_derive_transfer_secret (&coin_priv,
+ &trans_priv,
+ &secret);
+ TALER_link_reveal_transfer_secret (&trans_priv,
+ &coin_pub,
+ &secret2);
GNUNET_assert (0 ==
memcmp (&secret,
&secret2,
sizeof (secret)));
- coin_priv.eddsa_priv = *pk;
- GNUNET_assert (GNUNET_OK ==
- TALER_link_decrypt_secret2 (&secret_enc,
- &trans_pub,
- &coin_priv,
- &secret2));
+ TALER_link_recover_transfer_secret (&trans_pub,
+ &coin_priv,
+ &secret2);
GNUNET_assert (0 ==
memcmp (&secret,
&secret2,
sizeof (secret)));
- GNUNET_free (pk);
+ TALER_setup_fresh_coin (&secret,
+ 0,
+ &fc1);
+ TALER_setup_fresh_coin (&secret,
+ 1,
+ &fc2);
+ GNUNET_assert (0 !=
+ memcmp (&fc1,
+ &fc2,
+ sizeof (struct TALER_FreshCoinP)));
return 0;
}
@@ -133,11 +88,9 @@ int
main(int argc,
const char *const argv[])
{
- if (0 != test_basics ())
- return 1;
if (0 != test_high_level ())
return 1;
- return 0;
+ return 0;
}
/* end of test_crypto.c */