aboutsummaryrefslogtreecommitdiff
path: root/src/core/gnunet-service-core.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2013-07-09 07:35:46 +0000
committerChristian Grothoff <christian@grothoff.org>2013-07-09 07:35:46 +0000
commit4f95fb582c633d5d1b89bd6982efbfc540524314 (patch)
tree4e3e3fcd61781b68d8a545dcd141bee6e8ac9f6d /src/core/gnunet-service-core.c
parenta83e4dee60810a6e78657a5537a3d4a747dc9445 (diff)
downloadgnunet-4f95fb582c633d5d1b89bd6982efbfc540524314.tar.gz
gnunet-4f95fb582c633d5d1b89bd6982efbfc540524314.zip
-simplify zone key loading by using synchronous ECC key API
Diffstat (limited to 'src/core/gnunet-service-core.c')
-rw-r--r--src/core/gnunet-service-core.c61
1 files changed, 11 insertions, 50 deletions
diff --git a/src/core/gnunet-service-core.c b/src/core/gnunet-service-core.c
index 6e0dbc122..5665fc82a 100644
--- a/src/core/gnunet-service-core.c
+++ b/src/core/gnunet-service-core.c
@@ -54,11 +54,6 @@ struct GNUNET_STATISTICS_Handle *GSC_stats;
54 */ 54 */
55static struct GNUNET_SERVER_Handle *GSC_server; 55static struct GNUNET_SERVER_Handle *GSC_server;
56 56
57/**
58 * Hostkey generation context
59 */
60static struct GNUNET_CRYPTO_EccKeyGenerationContext *keygen;
61
62 57
63/** 58/**
64 * Last task run during shutdown. Disconnects us from 59 * Last task run during shutdown. Disconnects us from
@@ -71,11 +66,6 @@ static void
71shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 66shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
72{ 67{
73 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Core service shutting down.\n"); 68 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Core service shutting down.\n");
74 if (NULL != keygen)
75 {
76 GNUNET_CRYPTO_ecc_key_create_stop (keygen);
77 keygen = NULL;
78 }
79 GSC_CLIENTS_done (); 69 GSC_CLIENTS_done ();
80 GSC_NEIGHBOURS_done (); 70 GSC_NEIGHBOURS_done ();
81 GSC_SESSIONS_done (); 71 GSC_SESSIONS_done ();
@@ -90,42 +80,6 @@ shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
90} 80}
91 81
92 82
93
94/**
95 * Callback for hostkey read/generation
96 *
97 * @param cls NULL
98 * @param pk the private key
99 * @param emsg error message
100 */
101static void
102key_generation_cb (void *cls,
103 struct GNUNET_CRYPTO_EccPrivateKey *pk,
104 const char *emsg)
105{
106 keygen = NULL;
107 if (NULL == pk)
108 {
109 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
110 _("Failed to read or generate private key: %s\n"),
111 emsg);
112 GNUNET_SCHEDULER_shutdown ();
113 return;
114 }
115 if ((GNUNET_OK != GSC_KX_init (pk)) ||
116 (GNUNET_OK != GSC_NEIGHBOURS_init ()))
117 {
118 GNUNET_SCHEDULER_shutdown ();
119 return;
120 }
121 GSC_SESSIONS_init ();
122 GSC_CLIENTS_init (GSC_server);
123 GNUNET_SERVER_resume (GSC_server);
124 GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Core service of `%4s' ready.\n"),
125 GNUNET_i2s (&GSC_my_identity));
126}
127
128
129/** 83/**
130 * Initiate core service. 84 * Initiate core service.
131 * 85 *
@@ -137,6 +91,7 @@ static void
137run (void *cls, struct GNUNET_SERVER_Handle *server, 91run (void *cls, struct GNUNET_SERVER_Handle *server,
138 const struct GNUNET_CONFIGURATION_Handle *c) 92 const struct GNUNET_CONFIGURATION_Handle *c)
139{ 93{
94 struct GNUNET_CRYPTO_EccPrivateKey *pk;
140 char *keyfile; 95 char *keyfile;
141 96
142 GSC_cfg = c; 97 GSC_cfg = c;
@@ -156,14 +111,20 @@ run (void *cls, struct GNUNET_SERVER_Handle *server,
156 NULL); 111 NULL);
157 GNUNET_SERVER_suspend (server); 112 GNUNET_SERVER_suspend (server);
158 GSC_TYPEMAP_init (); 113 GSC_TYPEMAP_init ();
159 keygen = GNUNET_CRYPTO_ecc_key_create_start (keyfile, &key_generation_cb, NULL); 114 pk = GNUNET_CRYPTO_ecc_key_create_from_file (keyfile);
160 GNUNET_free (keyfile); 115 GNUNET_free (keyfile);
161 if (NULL == keygen) 116 GNUNET_assert (NULL != pk);
117 if ((GNUNET_OK != GSC_KX_init (pk)) ||
118 (GNUNET_OK != GSC_NEIGHBOURS_init ()))
162 { 119 {
163 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
164 _("Transport service is unable to access hostkey. Exiting.\n"));
165 GNUNET_SCHEDULER_shutdown (); 120 GNUNET_SCHEDULER_shutdown ();
121 return;
166 } 122 }
123 GSC_SESSIONS_init ();
124 GSC_CLIENTS_init (GSC_server);
125 GNUNET_SERVER_resume (GSC_server);
126 GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Core service of `%4s' ready.\n"),
127 GNUNET_i2s (&GSC_my_identity));
167} 128}
168 129
169 130