diff options
author | Christian Grothoff <christian@grothoff.org> | 2016-08-05 16:08:19 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2016-08-05 16:08:19 +0200 |
commit | 745719dbc1482734ab3ca7a20541ee8a12ecb69c (patch) | |
tree | 68ca6a1f328f59351a69064c72dc87b92756b689 /src/util/test_crypto.c | |
parent | e800772c85e1e1399c756162921c3f557794ffea (diff) |
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.c | 115 |
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 */ |