diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-07-09 07:35:46 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-07-09 07:35:46 +0000 |
commit | 4f95fb582c633d5d1b89bd6982efbfc540524314 (patch) | |
tree | 4e3e3fcd61781b68d8a545dcd141bee6e8ac9f6d /src/core/gnunet-service-core.c | |
parent | a83e4dee60810a6e78657a5537a3d4a747dc9445 (diff) | |
download | gnunet-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.c | 61 |
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 | */ |
55 | static struct GNUNET_SERVER_Handle *GSC_server; | 55 | static struct GNUNET_SERVER_Handle *GSC_server; |
56 | 56 | ||
57 | /** | ||
58 | * Hostkey generation context | ||
59 | */ | ||
60 | static 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 | |||
71 | shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | 66 | shutdown_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 | */ | ||
101 | static void | ||
102 | key_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 | |||
137 | run (void *cls, struct GNUNET_SERVER_Handle *server, | 91 | run (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 | ||