diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-04-16 11:32:49 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-04-16 11:32:49 +0000 |
commit | 51e475cdc337a5d11bd3d552159243aa68dfe332 (patch) | |
tree | d3f19afd8b87294223619d30c3319d4490c9c24b /src/fs/fs_publish_ksk.c | |
parent | bfedb2299a323eb0a5ae39fba56b413e11de4d47 (diff) | |
download | gnunet-51e475cdc337a5d11bd3d552159243aa68dfe332.tar.gz gnunet-51e475cdc337a5d11bd3d552159243aa68dfe332.zip |
-fix
Diffstat (limited to 'src/fs/fs_publish_ksk.c')
-rw-r--r-- | src/fs/fs_publish_ksk.c | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/src/fs/fs_publish_ksk.c b/src/fs/fs_publish_ksk.c index 93eee7d72..3b0f1d4fb 100644 --- a/src/fs/fs_publish_ksk.c +++ b/src/fs/fs_publish_ksk.c | |||
@@ -174,6 +174,7 @@ publish_ksk_cont (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
174 | struct GNUNET_CRYPTO_AesInitializationVector iv; | 174 | struct GNUNET_CRYPTO_AesInitializationVector iv; |
175 | struct GNUNET_FS_PseudonymHandle *ph; | 175 | struct GNUNET_FS_PseudonymHandle *ph; |
176 | struct GNUNET_FS_PseudonymIdentifier pseudonym; | 176 | struct GNUNET_FS_PseudonymIdentifier pseudonym; |
177 | struct UBlock *ub_dst; | ||
177 | 178 | ||
178 | pkc->ksk_task = GNUNET_SCHEDULER_NO_TASK; | 179 | pkc->ksk_task = GNUNET_SCHEDULER_NO_TASK; |
179 | if ((pkc->i == pkc->ksk_uri->data.ksk.keywordCount) || (NULL == pkc->dsh)) | 180 | if ((pkc->i == pkc->ksk_uri->data.ksk.keywordCount) || (NULL == pkc->dsh)) |
@@ -194,32 +195,35 @@ publish_ksk_cont (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
194 | * mandatory or not -- ignore for hashing */ | 195 | * mandatory or not -- ignore for hashing */ |
195 | GNUNET_CRYPTO_hash (&keyword[1], strlen (&keyword[1]), &key); | 196 | GNUNET_CRYPTO_hash (&keyword[1], strlen (&keyword[1]), &key); |
196 | GNUNET_CRYPTO_hash_to_aes_key (&key, &skey, &iv); | 197 | GNUNET_CRYPTO_hash_to_aes_key (&key, &skey, &iv); |
198 | ub_dst = pkc->cpy; | ||
197 | GNUNET_CRYPTO_aes_encrypt (&pkc->ub[1], | 199 | GNUNET_CRYPTO_aes_encrypt (&pkc->ub[1], |
198 | 1 + pkc->slen + pkc->mdsize, | 200 | 1 + pkc->slen + pkc->mdsize, |
199 | &skey, &iv, | 201 | &skey, &iv, |
200 | &pkc->cpy[1]); | 202 | &ub_dst[1]); |
201 | ph = GNUNET_FS_pseudonym_get_anonymous_pseudonym_handle (); | 203 | ph = GNUNET_FS_pseudonym_get_anonymous_pseudonym_handle (); |
202 | GNUNET_CRYPTO_hash (&key, sizeof (key), &signing_key); | 204 | GNUNET_CRYPTO_hash (&key, sizeof (key), &signing_key); |
203 | pkc->cpy->purpose.size = htonl (1 + pkc->slen + pkc->mdsize + sizeof (struct UBlock) | 205 | ub_dst->purpose.size = htonl (1 + pkc->slen + pkc->mdsize + sizeof (struct UBlock) |
204 | - sizeof (struct GNUNET_FS_PseudonymSignature)); | 206 | - sizeof (struct GNUNET_FS_PseudonymSignature)); |
205 | pkc->cpy->purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_FS_UBLOCK); | 207 | ub_dst->purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_FS_UBLOCK); |
206 | GNUNET_FS_pseudonym_sign (ph, | 208 | |
207 | &pkc->cpy->purpose, | ||
208 | &seed, | ||
209 | &signing_key, | ||
210 | &pkc->cpy->signature); | ||
211 | GNUNET_FS_pseudonym_get_identifier (ph, &pseudonym); | 209 | GNUNET_FS_pseudonym_get_identifier (ph, &pseudonym); |
212 | GNUNET_FS_pseudonym_derive_verification_key (&pseudonym, | 210 | GNUNET_FS_pseudonym_derive_verification_key (&pseudonym, |
213 | &signing_key, | 211 | &signing_key, |
214 | &pkc->cpy->verification_key); | 212 | &ub_dst->verification_key); |
215 | GNUNET_CRYPTO_hash (&pkc->cpy->verification_key, | 213 | GNUNET_FS_pseudonym_sign (ph, |
216 | sizeof (pkc->cpy->verification_key), | 214 | &ub_dst->purpose, |
215 | &seed, | ||
216 | &signing_key, | ||
217 | &ub_dst->signature); | ||
218 | |||
219 | GNUNET_CRYPTO_hash (&ub_dst->verification_key, | ||
220 | sizeof (ub_dst->verification_key), | ||
217 | &query); | 221 | &query); |
218 | GNUNET_FS_pseudonym_destroy (ph); | 222 | GNUNET_FS_pseudonym_destroy (ph); |
219 | pkc->qre = | 223 | pkc->qre = |
220 | GNUNET_DATASTORE_put (pkc->dsh, 0, &query, | 224 | GNUNET_DATASTORE_put (pkc->dsh, 0, &query, |
221 | 1 + pkc->slen + pkc->mdsize + sizeof (struct UBlock), | 225 | 1 + pkc->slen + pkc->mdsize + sizeof (struct UBlock), |
222 | pkc->cpy, GNUNET_BLOCK_TYPE_FS_UBLOCK, | 226 | ub_dst, GNUNET_BLOCK_TYPE_FS_UBLOCK, |
223 | pkc->bo.content_priority, pkc->bo.anonymity_level, | 227 | pkc->bo.content_priority, pkc->bo.anonymity_level, |
224 | pkc->bo.replication_level, pkc->bo.expiration_time, | 228 | pkc->bo.replication_level, pkc->bo.expiration_time, |
225 | -2, 1, GNUNET_CONSTANTS_SERVICE_TIMEOUT, | 229 | -2, 1, GNUNET_CONSTANTS_SERVICE_TIMEOUT, |
@@ -308,12 +312,7 @@ GNUNET_FS_publish_ksk (struct GNUNET_FS_Handle *h, | |||
308 | return NULL; | 312 | return NULL; |
309 | } | 313 | } |
310 | size = sizeof (struct UBlock) + pkc->slen + pkc->mdsize + 1; | 314 | size = sizeof (struct UBlock) + pkc->slen + pkc->mdsize + 1; |
311 | |||
312 | pkc->cpy = GNUNET_malloc (size); | 315 | pkc->cpy = GNUNET_malloc (size); |
313 | pkc->cpy->purpose.size = | ||
314 | htonl (sizeof (struct GNUNET_FS_PseudonymSignaturePurpose) + | ||
315 | pkc->mdsize + pkc->slen + 1); | ||
316 | pkc->cpy->purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_FS_UBLOCK); | ||
317 | pkc->ksk_uri = GNUNET_FS_uri_dup (ksk_uri); | 316 | pkc->ksk_uri = GNUNET_FS_uri_dup (ksk_uri); |
318 | pkc->ksk_task = GNUNET_SCHEDULER_add_now (&publish_ksk_cont, pkc); | 317 | pkc->ksk_task = GNUNET_SCHEDULER_add_now (&publish_ksk_cont, pkc); |
319 | return pkc; | 318 | return pkc; |