From 86d63901b65ec2a654bb7bb58a9fc962a6dc746d Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sat, 2 Mar 2013 22:19:19 +0000 Subject: adding option to disable use of ephemeral keys for HPC testing --- src/core/core.conf.in | 4 ++++ src/core/gnunet-service-core_kx.c | 42 +++++++++++++++++++++++++-------------- 2 files changed, 31 insertions(+), 15 deletions(-) (limited to 'src/core') diff --git a/src/core/core.conf.in b/src/core/core.conf.in index ad39a8a79..839c21eeb 100644 --- a/src/core/core.conf.in +++ b/src/core/core.conf.in @@ -18,3 +18,7 @@ UNIX_MATCH_GID = YES # REJECT_FROM = # REJECT_FROM6 = # PREFIX = + +# Note: this MUST be set to YES in production, only set to NO for testing +# for performance (testbed/cluster-scale use!). +USE_EPHEMERAL_KEYS = YES \ No newline at end of file diff --git a/src/core/gnunet-service-core_kx.c b/src/core/gnunet-service-core_kx.c index 5a70b62ad..f0cc835e7 100644 --- a/src/core/gnunet-service-core_kx.c +++ b/src/core/gnunet-service-core_kx.c @@ -1510,19 +1510,30 @@ GSC_KX_init (struct GNUNET_CRYPTO_EccPrivateKey *pk) GNUNET_CRYPTO_ecc_key_get_public (my_private_key, &my_public_key); GNUNET_CRYPTO_hash (&my_public_key, sizeof (my_public_key), &GSC_my_identity.hashPubKey); - my_ephemeral_key = GNUNET_CRYPTO_ecc_key_create (); - if (NULL == my_ephemeral_key) + if (GNUNET_YES == + GNUNET_CONFIGURATION_get_value_yesno (GSC_cfg, + "core", + "USE_EPHEMERAL_KEYS")) { - GNUNET_break (0); - GNUNET_CRYPTO_ecc_key_free (my_private_key); - my_private_key = NULL; - return GNUNET_SYSERR; + my_ephemeral_key = GNUNET_CRYPTO_ecc_key_create (); + if (NULL == my_ephemeral_key) + { + GNUNET_break (0); + GNUNET_CRYPTO_ecc_key_free (my_private_key); + my_private_key = NULL; + return GNUNET_SYSERR; + } + sign_ephemeral_key (); + rekey_task = GNUNET_SCHEDULER_add_delayed (REKEY_FREQUENCY, + &do_rekey, + NULL); + } + else + { + my_ephemeral_key = my_private_key; + sign_ephemeral_key (); } - sign_ephemeral_key (); mst = GNUNET_SERVER_mst_create (&deliver_message, NULL); - rekey_task = GNUNET_SCHEDULER_add_delayed (REKEY_FREQUENCY, - &do_rekey, - NULL); return GNUNET_OK; } @@ -1538,16 +1549,17 @@ GSC_KX_done () GNUNET_SCHEDULER_cancel (rekey_task); rekey_task = GNUNET_SCHEDULER_NO_TASK; } + if ( (NULL != my_ephemeral_key) && + (my_ephemeral_key != my_private_key) ) + { + GNUNET_CRYPTO_ecc_key_free (my_ephemeral_key); + my_ephemeral_key = NULL; + } if (NULL != my_private_key) { GNUNET_CRYPTO_ecc_key_free (my_private_key); my_private_key = NULL; } - if (NULL != my_ephemeral_key) - { - GNUNET_CRYPTO_ecc_key_free (my_ephemeral_key); - my_ephemeral_key = NULL; - } if (NULL != mst) { GNUNET_SERVER_mst_destroy (mst); -- cgit v1.2.3