X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fcore%2Fgnunet-service-core.c;h=05e461278d8d8a860e1db088409c8becf79c3829;hb=4e1baae59f18ee5d7cd47afe28ced3daaaa5a5ad;hp=2be833fa04c38cae36c7d239c110e96cea18e38c;hpb=ca35f67faee8371fa763bdf49f04a8d5d4cdc021;p=oweals%2Fgnunet.git diff --git a/src/core/gnunet-service-core.c b/src/core/gnunet-service-core.c index 2be833fa0..05e461278 100644 --- a/src/core/gnunet-service-core.c +++ b/src/core/gnunet-service-core.c @@ -24,6 +24,7 @@ * @author Christian Grothoff */ #include "platform.h" +#include #include "gnunet_util_lib.h" #include "gnunet-service-core.h" #include "gnunet-service-core_clients.h" @@ -53,16 +54,11 @@ struct GNUNET_STATISTICS_Handle *GSC_stats; */ static struct GNUNET_SERVER_Handle *GSC_server; -/** - * Hostkey generation context - */ -static struct GNUNET_CRYPTO_EccKeyGenerationContext *keygen; - /** * Last task run during shutdown. Disconnects us from * the transport. - * + * * @param cls NULL, unused * @param tc scheduler context, unused */ @@ -70,11 +66,6 @@ static void shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Core service shutting down.\n"); - if (NULL != keygen) - { - GNUNET_CRYPTO_ecc_key_create_stop (keygen); - keygen = NULL; - } GSC_CLIENTS_done (); GSC_NEIGHBOURS_done (); GSC_SESSIONS_done (); @@ -89,42 +80,6 @@ shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) } - -/** - * Callback for hostkey read/generation - * - * @param cls NULL - * @param pk the private key - * @param emsg error message - */ -static void -key_generation_cb (void *cls, - struct GNUNET_CRYPTO_EccPrivateKey *pk, - const char *emsg) -{ - keygen = NULL; - if (NULL == pk) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - _("Failed to read or generate private key: %s\n"), - emsg); - GNUNET_SCHEDULER_shutdown (); - return; - } - if ((GNUNET_OK != GSC_KX_init (pk)) || - (GNUNET_OK != GSC_NEIGHBOURS_init ())) - { - GNUNET_SCHEDULER_shutdown (); - return; - } - GSC_SESSIONS_init (); - GSC_CLIENTS_init (GSC_server); - GNUNET_SERVER_resume (GSC_server); - GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Core service of `%4s' ready.\n"), - GNUNET_i2s (&GSC_my_identity)); -} - - /** * Initiate core service. * @@ -136,6 +91,7 @@ static void run (void *cls, struct GNUNET_SERVER_Handle *server, const struct GNUNET_CONFIGURATION_Handle *c) { + struct GNUNET_CRYPTO_EddsaPrivateKey *pk; char *keyfile; GSC_cfg = c; @@ -145,24 +101,32 @@ run (void *cls, struct GNUNET_SERVER_Handle *server, &keyfile)) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - _ - ("Core service is lacking HOSTKEY configuration setting. Exiting.\n")); + _("Core service is lacking HOSTKEY configuration setting. Exiting.\n")); GNUNET_SCHEDULER_shutdown (); return; } GSC_stats = GNUNET_STATISTICS_create ("core", GSC_cfg); - GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &shutdown_task, + GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, + &shutdown_task, NULL); GNUNET_SERVER_suspend (server); GSC_TYPEMAP_init (); - keygen = GNUNET_CRYPTO_ecc_key_create_start (keyfile, &key_generation_cb, NULL); + pk = GNUNET_CRYPTO_eddsa_key_create_from_file (keyfile); GNUNET_free (keyfile); - if (NULL == keygen) + GNUNET_assert (NULL != pk); + if ((GNUNET_OK != GSC_KX_init (pk, + server)) || + (GNUNET_OK != GSC_NEIGHBOURS_init ())) { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - _("Transport service is unable to access hostkey. Exiting.\n")); GNUNET_SCHEDULER_shutdown (); + return; } + GSC_SESSIONS_init (); + GSC_CLIENTS_init (GSC_server); + GNUNET_SERVER_resume (GSC_server); + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + _("Core service of `%4s' ready.\n"), + GNUNET_i2s (&GSC_my_identity)); } @@ -177,7 +141,8 @@ int main (int argc, char *const *argv) { return (GNUNET_OK == - GNUNET_SERVICE_run (argc, argv, "core", GNUNET_SERVICE_OPTION_NONE, + GNUNET_SERVICE_run (argc, argv, "core", + GNUNET_SERVICE_OPTION_NONE, &run, NULL)) ? 0 : 1; }