aboutsummaryrefslogtreecommitdiff
path: root/src/fs/fs_publish_ksk.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2013-08-06 14:18:31 +0000
committerChristian Grothoff <christian@grothoff.org>2013-08-06 14:18:31 +0000
commitfe76c075e315c0351e2fe465434ae39087daf014 (patch)
tree436887ccaf331932a3c13a8b9d2a2a710dad4be6 /src/fs/fs_publish_ksk.c
parent7eb2835d8a494c83aedb720a2ac6f6e5ba23f22f (diff)
downloadgnunet-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.c21
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);