From f4a59d1cccd058b3180ea23ed9fdea69cb2129b8 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sat, 16 May 2015 14:15:34 +0200 Subject: eliminating ECDSA, replacing with EdDSA-ECDHE-combo in transfer protocol --- src/util/crypto.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'src/util/crypto.c') diff --git a/src/util/crypto.c b/src/util/crypto.c index 529caa930..966f010e4 100644 --- a/src/util/crypto.c +++ b/src/util/crypto.c @@ -214,7 +214,7 @@ TALER_refresh_decrypt (const struct TALER_RefreshLinkEncrypted *input, ret = GNUNET_new (struct TALER_RefreshLinkDecrypted); memcpy (&ret->coin_priv, buf, - sizeof (union TALER_CoinSpendPrivateKeyP)); + sizeof (struct TALER_CoinSpendPrivateKeyP)); ret->blinding_key.rsa_blinding_key = GNUNET_CRYPTO_rsa_blinding_key_decode (&buf[sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey)], input->blinding_key_enc_size); @@ -290,7 +290,7 @@ TALER_refresh_link_encrypted_decode (const char *buf, { struct TALER_RefreshLinkEncrypted *rle; - if (buf_len < sizeof (union TALER_CoinSpendPrivateKeyP)) + if (buf_len < sizeof (struct TALER_CoinSpendPrivateKeyP)) return NULL; if (buf_len >= GNUNET_MAX_MALLOC_CHECKED) { @@ -298,9 +298,9 @@ TALER_refresh_link_encrypted_decode (const char *buf, return NULL; } rle = GNUNET_malloc (sizeof (struct TALER_RefreshLinkEncrypted) + - buf_len - sizeof (union TALER_CoinSpendPrivateKeyP)); + buf_len - sizeof (struct TALER_CoinSpendPrivateKeyP)); rle->blinding_key_enc = (const char *) &rle[1]; - rle->blinding_key_enc_size = buf_len - sizeof (union TALER_CoinSpendPrivateKeyP); + rle->blinding_key_enc_size = buf_len - sizeof (struct TALER_CoinSpendPrivateKeyP); memcpy (rle->coin_priv_enc, buf, buf_len); @@ -321,12 +321,12 @@ TALER_refresh_link_encrypted_encode (const struct TALER_RefreshLinkEncrypted *rl { char *buf; - if (rle->blinding_key_enc_size >= GNUNET_MAX_MALLOC_CHECKED - sizeof (union TALER_CoinSpendPrivateKeyP)) + if (rle->blinding_key_enc_size >= GNUNET_MAX_MALLOC_CHECKED - sizeof (struct TALER_CoinSpendPrivateKeyP)) { GNUNET_break (0); return NULL; } - *buf_len = sizeof (union TALER_CoinSpendPrivateKeyP) + rle->blinding_key_enc_size; + *buf_len = sizeof (struct TALER_CoinSpendPrivateKeyP) + rle->blinding_key_enc_size; buf = GNUNET_malloc (*buf_len); memcpy (buf, rle->coin_priv_enc, @@ -379,15 +379,15 @@ TALER_test_coin_valid (const struct TALER_CoinPublicInfo *coin_public_info) int TALER_link_decrypt_secret (const struct TALER_EncryptedLinkSecretP *secret_enc, const struct TALER_TransferPrivateKeyP *trans_priv, - const union TALER_CoinSpendPublicKeyP *coin_pub, + const struct TALER_CoinSpendPublicKeyP *coin_pub, struct TALER_LinkSecretP *secret) { struct TALER_TransferSecretP transfer_secret; if (GNUNET_OK != - GNUNET_CRYPTO_ecc_ecdh (&trans_priv->ecdhe_priv, - &coin_pub->ecdhe_pub, - &transfer_secret.key)) + GNUNET_CRYPTO_ecdh_eddsa (&trans_priv->ecdhe_priv, + &coin_pub->eddsa_pub, + &transfer_secret.key)) { GNUNET_break (0); return GNUNET_SYSERR; @@ -418,15 +418,15 @@ TALER_link_decrypt_secret (const struct TALER_EncryptedLinkSecretP *secret_enc, int TALER_link_decrypt_secret2 (const struct TALER_EncryptedLinkSecretP *secret_enc, const struct TALER_TransferPublicKeyP *trans_pub, - const union TALER_CoinSpendPrivateKeyP *coin_priv, + const struct TALER_CoinSpendPrivateKeyP *coin_priv, struct TALER_LinkSecretP *secret) { struct TALER_TransferSecretP transfer_secret; if (GNUNET_OK != - GNUNET_CRYPTO_ecc_ecdh (&coin_priv->ecdhe_priv, - &trans_pub->ecdhe_pub, - &transfer_secret.key)) + GNUNET_CRYPTO_eddsa_ecdh (&coin_priv->eddsa_priv, + &trans_pub->ecdhe_pub, + &transfer_secret.key)) { GNUNET_break (0); return GNUNET_SYSERR; @@ -456,7 +456,7 @@ TALER_link_decrypt_secret2 (const struct TALER_EncryptedLinkSecretP *secret_enc, */ int TALER_link_encrypt_secret (const struct TALER_LinkSecretP *secret, - const union TALER_CoinSpendPublicKeyP *coin_pub, + const struct TALER_CoinSpendPublicKeyP *coin_pub, struct TALER_TransferPrivateKeyP *trans_priv, struct TALER_TransferPublicKeyP *trans_pub, struct TALER_EncryptedLinkSecretP *secret_enc) @@ -466,9 +466,9 @@ TALER_link_encrypt_secret (const struct TALER_LinkSecretP *secret, pk = GNUNET_CRYPTO_ecdhe_key_create (); if (GNUNET_OK != - GNUNET_CRYPTO_ecc_ecdh (pk, - &coin_pub->ecdhe_pub, - &transfer_secret.key)) + GNUNET_CRYPTO_ecdh_eddsa (pk, + &coin_pub->eddsa_pub, + &transfer_secret.key)) { GNUNET_break (0); GNUNET_free (pk); -- cgit v1.2.3 From 21da34a5011bfb9445b658febdb40c90c34b4170 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sat, 16 May 2015 18:26:34 +0200 Subject: -fix doxygen errors --- src/include/taler_crypto_lib.h | 8 ++++---- src/include/taler_mintdb_plugin.h | 4 ++-- src/include/taler_pq_lib.h | 2 +- src/mintdb/plugin_mintdb_postgres.c | 6 +++--- src/pq/db_pq.c | 2 +- src/util/crypto.c | 8 ++++---- 6 files changed, 15 insertions(+), 15 deletions(-) (limited to 'src/util/crypto.c') diff --git a/src/include/taler_crypto_lib.h b/src/include/taler_crypto_lib.h index fce27ce5e..f2c73faa3 100644 --- a/src/include/taler_crypto_lib.h +++ b/src/include/taler_crypto_lib.h @@ -419,7 +419,7 @@ struct TALER_RefreshLinkEncrypted * private key and the coin's public key. * * @param secret_enc encrypted link secret - * @param transfer_priv transfer private key + * @param trans_priv transfer private key * @param coin_pub coin public key * @param[out] secret set to the shared secret * @return #GNUNET_OK on success, #GNUNET_SYSERR on error @@ -437,7 +437,7 @@ TALER_link_decrypt_secret (const struct TALER_EncryptedLinkSecretP *secret_enc, * public key and the coin's private key. * * @param secret_enc encrypted link secret - * @param transfer_pub transfer public key + * @param trans_pub transfer public key * @param coin_priv coin private key * @param[out] secret set to the shared secret * @return #GNUNET_OK on success, #GNUNET_SYSERR on error @@ -455,8 +455,8 @@ TALER_link_decrypt_secret2 (const struct TALER_EncryptedLinkSecretP *secret_enc, * * @param secret link secret to encrypt * @param coin_pub coin public key - * @param transfer_priv[out] set to transfer private key - * @param transfer_pub[out] set to transfer public key + * @param[out] trans_priv set to transfer private key + * @param[out] trans_pub set to transfer public key * @param[out] secret_enc set to the encryptd @a secret * @return #GNUNET_OK on success, #GNUNET_SYSERR on error */ diff --git a/src/include/taler_mintdb_plugin.h b/src/include/taler_mintdb_plugin.h index 0c9b21ebd..1a4a6c602 100644 --- a/src/include/taler_mintdb_plugin.h +++ b/src/include/taler_mintdb_plugin.h @@ -1085,7 +1085,7 @@ struct TALER_MINTDB_Plugin /** * Obtain shared secret and transfer public key from the public key of * the coin. This information and the link information returned by - * #TALER_db_get_link() enable the owner of an old coin to determine + * @e get_link_data_list() enable the owner of an old coin to determine * the private keys of the new coins after the melt. * * @@ -1113,7 +1113,7 @@ struct TALER_MINTDB_Plugin * @param sesssion database connection * @param lock lock operation * @return #GNUNET_YES if known, - * #GNUENT_NO if not, + * #GNUNET_NO if not, * #GNUNET_SYSERR on internal error */ int diff --git a/src/include/taler_pq_lib.h b/src/include/taler_pq_lib.h index 980ca29bf..d02dc55a6 100644 --- a/src/include/taler_pq_lib.h +++ b/src/include/taler_pq_lib.h @@ -394,7 +394,7 @@ TALER_PQ_exec_prepared (PGconn *db_conn, * is returned. * * @param result result to process - * @param[in|out] rs result specification to extract for + * @param[in,out] rs result specification to extract for * @param row row from the result to extract * @return * #GNUNET_YES if all results could be extracted diff --git a/src/mintdb/plugin_mintdb_postgres.c b/src/mintdb/plugin_mintdb_postgres.c index 8bf3302df..e5eb7cce7 100644 --- a/src/mintdb/plugin_mintdb_postgres.c +++ b/src/mintdb/plugin_mintdb_postgres.c @@ -848,7 +848,7 @@ postgres_commit (void *cls, * Insert a denomination key * * @param cls the @e cls of this struct with the plugin-specific state - * @param sesssion connection to use + * @param session connection to use * @param dki the denomination key information * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure */ @@ -2099,14 +2099,14 @@ postgres_get_refresh_commit_links (void *cls, * Get all of the information from the given melt commit operation. * * @param cls the @e cls of this struct with the plugin-specific state - * @param sesssion database connection to use + * @param session database connection to use * @param session_hash hash to identify refresh session * @return NULL if the @a session_hash does not correspond to any known melt * operation */ static struct TALER_MINTDB_MeltCommitment * postgres_get_melt_commitment (void *cls, - struct TALER_MINTDB_Session *sesssion, + struct TALER_MINTDB_Session *session, const struct GNUNET_HashCode *session_hash) { // FIXME: needs to be implemented! diff --git a/src/pq/db_pq.c b/src/pq/db_pq.c index bb18c56a9..a718c805f 100644 --- a/src/pq/db_pq.c +++ b/src/pq/db_pq.c @@ -266,7 +266,7 @@ TALER_PQ_cleanup_result (struct TALER_PQ_ResultSpec *rs) * is returned. * * @param result result to process - * @param[in|out] rs result specification to extract for + * @param[in,out] rs result specification to extract for * @param row row from the result to extract * @return * #GNUNET_YES if all results could be extracted diff --git a/src/util/crypto.c b/src/util/crypto.c index 966f010e4..8cd08af63 100644 --- a/src/util/crypto.c +++ b/src/util/crypto.c @@ -371,7 +371,7 @@ TALER_test_coin_valid (const struct TALER_CoinPublicInfo *coin_public_info) * private key and the coin's public key. * * @param secret_enc encrypted link secret - * @param transfer_priv transfer private key + * @param trans_priv transfer private key * @param coin_pub coin public key * @param[out] secret set to the shared secret * @return #GNUNET_OK on success, #GNUNET_SYSERR on error @@ -410,7 +410,7 @@ TALER_link_decrypt_secret (const struct TALER_EncryptedLinkSecretP *secret_enc, * public key and the coin's private key. * * @param secret_enc encrypted link secret - * @param transfer_pub transfer public key + * @param trans_pub transfer public key * @param coin_priv coin private key * @param[out] secret set to the shared secret * @return #GNUNET_OK on success, #GNUNET_SYSERR on error @@ -449,8 +449,8 @@ TALER_link_decrypt_secret2 (const struct TALER_EncryptedLinkSecretP *secret_enc, * * @param secret link secret to encrypt * @param coin_pub coin public key - * @param transfer_priv[out] set to transfer private key - * @param transfer_pub[out] set to transfer public key + * @param[out] trans_priv set to transfer private key + * @param[out] trans_pub set to transfer public key * @param[out] secret_enc set to the encryptd @a secret * @return #GNUNET_OK on success, #GNUNET_SYSERR on error */ -- cgit v1.2.3 From 25e530f37a09dd154d09e468cc724252524da6c6 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 17 May 2015 16:46:16 +0200 Subject: add test for varsize pq operation --- src/include/taler_pq_lib.h | 4 ++-- src/pq/test_pq.c | 14 +++++++++++++- src/util/crypto.c | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) (limited to 'src/util/crypto.c') diff --git a/src/include/taler_pq_lib.h b/src/include/taler_pq_lib.h index 06ff580fe..d030d9b74 100644 --- a/src/include/taler_pq_lib.h +++ b/src/include/taler_pq_lib.h @@ -310,8 +310,8 @@ struct TALER_PQ_ResultSpec */ struct TALER_PQ_ResultSpec TALER_PQ_result_spec_variable_size (const char *name, - void **dst, - size_t *sptr); + void **dst, + size_t *sptr); /** diff --git a/src/pq/test_pq.c b/src/pq/test_pq.c index 185b95ca1..ff89e29f3 100644 --- a/src/pq/test_pq.c +++ b/src/pq/test_pq.c @@ -60,9 +60,10 @@ postgres_prepare (PGconn *db_conn) ",namount_val" ",namount_frac" ",namount_curr" + ",vsize" ") VALUES " "($1, $2, $3, $4, $5, $6," - "$7, $8, $9, $10, $11);", + "$7, $8, $9, $10, $11, $12);", 11, NULL); PREPARE ("test_select", "SELECT" @@ -77,6 +78,7 @@ postgres_prepare (PGconn *db_conn) ",namount_val" ",namount_frac" ",namount_curr" + ",vsize" " FROM test_pq" " ORDER BY abs_time DESC " " LIMIT 1;", @@ -112,6 +114,8 @@ run_queries (PGconn *conn) int ret; struct GNUNET_CRYPTO_rsa_PrivateKey *priv; char msg[] = "Hello"; + void *msg2; + size_t msg2_len; priv = GNUNET_CRYPTO_rsa_private_key_create (1024); pub = GNUNET_CRYPTO_rsa_private_key_get_public (priv); @@ -134,6 +138,7 @@ run_queries (PGconn *conn) TALER_PQ_query_param_auto_from_type (&hc), TALER_PQ_query_param_amount (&hamount), TALER_PQ_query_param_amount_nbo (&namount), + TALER_PQ_query_param_fixed_size (msg, strlen (msg)), TALER_PQ_query_param_end }; struct TALER_PQ_QueryParam params_select[] = { @@ -147,6 +152,7 @@ run_queries (PGconn *conn) TALER_PQ_result_spec_auto_from_type ("hash", &hc2), TALER_PQ_result_spec_amount ("hamount", &hamount2), TALER_PQ_result_spec_amount_nbo ("namount", &namount2), + TALER_PQ_result_spec_variable_size ("vsize", &msg2, &msg2_len), TALER_PQ_result_spec_end }; @@ -205,6 +211,11 @@ run_queries (PGconn *conn) GNUNET_break (0 == GNUNET_CRYPTO_rsa_public_key_cmp (pub, pub2)); + GNUNET_break (strlen (msg) == msg2_len); + GNUNET_break (0 == + strncmp (msg, + msg2, + msg2_len)); TALER_PQ_cleanup_result (results_select); PQclear (result); @@ -254,6 +265,7 @@ main(int argc, ",namount_val INT8 NOT NULL" ",namount_frac INT4 NOT NULL" ",namount_curr VARCHAR("TALER_CURRENCY_LEN_STR") NOT NULL" + ",vsize VARCHAR NOT NULL" ")"); if (PGRES_COMMAND_OK != PQresultStatus (result)) { diff --git a/src/util/crypto.c b/src/util/crypto.c index 8cd08af63..abc9fc5f8 100644 --- a/src/util/crypto.c +++ b/src/util/crypto.c @@ -49,7 +49,7 @@ fatal_error_handler (void *cls, /** * Initialize libgcrypt. */ -void +void __attribute__ ((constructor)) TALER_gcrypt_init () { gcry_set_fatalerror_handler (&fatal_error_handler, -- cgit v1.2.3