diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-08-06 14:18:31 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-08-06 14:18:31 +0000 |
commit | fe76c075e315c0351e2fe465434ae39087daf014 (patch) | |
tree | 436887ccaf331932a3c13a8b9d2a2a710dad4be6 /src/fs/fs_publish_ksk.c | |
parent | 7eb2835d8a494c83aedb720a2ac6f6e5ba23f22f (diff) | |
download | gnunet-fe76c075e315c0351e2fe465434ae39087daf014.tar.gz gnunet-fe76c075e315c0351e2fe465434ae39087daf014.zip |
moving to new, fixed-size encoding of public and private ECC keys everywhere, also improving ECC API to better support ECRS/GADS operations
Diffstat (limited to 'src/fs/fs_publish_ksk.c')
-rw-r--r-- | src/fs/fs_publish_ksk.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/fs/fs_publish_ksk.c b/src/fs/fs_publish_ksk.c index 3b0f1d4fb..10512af5f 100644 --- a/src/fs/fs_publish_ksk.c +++ b/src/fs/fs_publish_ksk.c | |||
@@ -177,23 +177,35 @@ publish_ksk_cont (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
177 | struct UBlock *ub_dst; | 177 | struct UBlock *ub_dst; |
178 | 178 | ||
179 | pkc->ksk_task = GNUNET_SCHEDULER_NO_TASK; | 179 | pkc->ksk_task = GNUNET_SCHEDULER_NO_TASK; |
180 | if ((pkc->i == pkc->ksk_uri->data.ksk.keywordCount) || (NULL == pkc->dsh)) | 180 | if ( (pkc->i == pkc->ksk_uri->data.ksk.keywordCount) || |
181 | (NULL == pkc->dsh) ) | ||
181 | { | 182 | { |
182 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "KSK PUT operation complete\n"); | 183 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "KSK PUT operation complete\n"); |
183 | pkc->cont (pkc->cont_cls, pkc->ksk_uri, NULL); | 184 | pkc->cont (pkc->cont_cls, pkc->ksk_uri, NULL); |
184 | GNUNET_FS_publish_ksk_cancel (pkc); | 185 | GNUNET_FS_publish_ksk_cancel (pkc); |
185 | return; | 186 | return; |
186 | } | 187 | } |
188 | keyword = pkc->ksk_uri->data.ksk.keywords[pkc->i++]; | ||
189 | pkc->sks_task = GNUNET_FS_publish_sks (pkc->h, | ||
190 | anonymous, | ||
191 | keyword, NULL, | ||
192 | pkc->meta, | ||
193 | pkc->uri, | ||
194 | &pkc->bo, | ||
195 | pkc->options, | ||
196 | &publish_ksk_cont, pkc); | ||
197 | |||
198 | |||
187 | /* derive signing seed from plaintext */ | 199 | /* derive signing seed from plaintext */ |
188 | GNUNET_CRYPTO_hash (&pkc->ub[1], | 200 | GNUNET_CRYPTO_hash (&pkc->ub[1], |
189 | 1 + pkc->slen + pkc->mdsize, | 201 | 1 + pkc->slen + pkc->mdsize, |
190 | &seed); | 202 | &seed); |
191 | keyword = pkc->ksk_uri->data.ksk.keywords[pkc->i++]; | ||
192 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Publishing under keyword `%s'\n", | 203 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Publishing under keyword `%s'\n", |
193 | &keyword[1]); | 204 | &keyword[1]); |
194 | /* first character of keyword indicates if it is | 205 | /* first character of keyword indicates if it is |
195 | * mandatory or not -- ignore for hashing */ | 206 | * mandatory or not -- ignore for hashing */ |
196 | GNUNET_CRYPTO_hash (&keyword[1], strlen (&keyword[1]), &key); | 207 | GNUNET_CRYPTO_hash (&keyword[1], strlen (&keyword[1]), &key); |
208 | |||
197 | GNUNET_CRYPTO_hash_to_aes_key (&key, &skey, &iv); | 209 | GNUNET_CRYPTO_hash_to_aes_key (&key, &skey, &iv); |
198 | ub_dst = pkc->cpy; | 210 | ub_dst = pkc->cpy; |
199 | GNUNET_CRYPTO_aes_encrypt (&pkc->ub[1], | 211 | GNUNET_CRYPTO_aes_encrypt (&pkc->ub[1], |
@@ -202,8 +214,9 @@ publish_ksk_cont (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
202 | &ub_dst[1]); | 214 | &ub_dst[1]); |
203 | ph = GNUNET_FS_pseudonym_get_anonymous_pseudonym_handle (); | 215 | ph = GNUNET_FS_pseudonym_get_anonymous_pseudonym_handle (); |
204 | GNUNET_CRYPTO_hash (&key, sizeof (key), &signing_key); | 216 | GNUNET_CRYPTO_hash (&key, sizeof (key), &signing_key); |
205 | ub_dst->purpose.size = htonl (1 + pkc->slen + pkc->mdsize + sizeof (struct UBlock) | 217 | ub_dst->purpose.size = htonl (1 + pkc->slen + pkc->mdsize + |
206 | - sizeof (struct GNUNET_FS_PseudonymSignature)); | 218 | sizeof (struct UBlock) |
219 | - sizeof (struct GNUNET_FS_PseudonymSignature)); | ||
207 | ub_dst->purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_FS_UBLOCK); | 220 | ub_dst->purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_FS_UBLOCK); |
208 | 221 | ||
209 | GNUNET_FS_pseudonym_get_identifier (ph, &pseudonym); | 222 | GNUNET_FS_pseudonym_get_identifier (ph, &pseudonym); |