- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Publishing under keyword `%s'\n",
- &keyword[1]);
- /* first character of keyword indicates if it is
- * mandatory or not -- ignore for hashing */
- GNUNET_CRYPTO_hash (&keyword[1], strlen (&keyword[1]), &key);
- GNUNET_CRYPTO_hash_to_aes_key (&key, &skey, &iv);
- GNUNET_CRYPTO_aes_encrypt (&pkc->ub[1],
- 1 + pkc->slen + pkc->mdsize,
- &skey, &iv,
- &pkc->cpy[1]);
- ph = GNUNET_FS_pseudonym_get_anonymous_pseudonym_handle ();
- GNUNET_CRYPTO_hash (&key, sizeof (key), &signing_key);
- pkc->cpy->purpose.size = htonl (1 + pkc->slen + pkc->mdsize + sizeof (struct UBlock)
- - sizeof (struct GNUNET_FS_PseudonymSignature));
- pkc->cpy->purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_FS_UBLOCK);
- GNUNET_FS_pseudonym_sign (ph,
- &pkc->cpy->purpose,
- &seed,
- &signing_key,
- &pkc->cpy->signature);
- GNUNET_FS_pseudonym_get_identifier (ph, &pseudonym);
- GNUNET_FS_pseudonym_derive_verification_key (&pseudonym,
- &signing_key,
- &pkc->cpy->verification_key);
- GNUNET_CRYPTO_hash (&pkc->cpy->verification_key,
- sizeof (pkc->cpy->verification_key),
- &query);
- GNUNET_FS_pseudonym_destroy (ph);
- pkc->qre =
- GNUNET_DATASTORE_put (pkc->dsh, 0, &query,
- 1 + pkc->slen + pkc->mdsize + sizeof (struct UBlock),
- pkc->cpy, GNUNET_BLOCK_TYPE_FS_UBLOCK,
- pkc->bo.content_priority, pkc->bo.anonymity_level,
- pkc->bo.replication_level, pkc->bo.expiration_time,
- -2, 1, GNUNET_CONSTANTS_SERVICE_TIMEOUT,
- &kb_put_cont, pkc);