/**
* optional zone private key used for shorten
*/
- struct GNUNET_CRYPTO_RsaPrivateKey *shorten_key;
+ struct GNUNET_CRYPTO_EccPrivateKey *shorten_key;
/**
* the name to look up
/**
* Our zone's private key
*/
-static struct GNUNET_CRYPTO_RsaPrivateKey *zone_key;
+static struct GNUNET_CRYPTO_EccPrivateKey *zone_key;
/**
* Our handle to the namestore service
struct ClientShortenHandle *csh_tmp;
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
- "Shutting down!");
+ "Shutting down!\n");
while (NULL != (csh_tmp = csh_head))
{
GNUNET_CONTAINER_DLL_remove (csh_head, csh_tail, csh_tmp);
*/
static void
put_gns_record (void *cls,
- const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *key,
+ const struct GNUNET_CRYPTO_EccPublicKey *key,
struct GNUNET_TIME_Absolute expiration,
const char *name,
unsigned int rd_count,
const struct GNUNET_NAMESTORE_RecordData *rd,
- const struct GNUNET_CRYPTO_RsaSignature *signature)
+ const struct GNUNET_CRYPTO_EccSignature *signature)
{
struct GNSNameRecordBlock *nrb;
struct GNUNET_CRYPTO_ShortHashCode zhash;
GNUNET_STRINGS_relative_time_to_string (put_interval, GNUNET_YES));
GNUNET_STATISTICS_set (statistics,
"Current zone iteration interval (in ms)",
- put_interval.rel_value,
+ put_interval.rel_value_us / 1000LL,
GNUNET_NO);
GNUNET_STATISTICS_update (statistics,
"Number of zone iterations", 1, GNUNET_NO);
return;
}
+ /* TODO 2) AB: New publishing
+ *
+ * - Use new signature S_d
+ * - Obtain new derived public key V = H(H(i,Q) * Q)
+ * - Obtain HKDF(i,Q)
+ * - Compute encrypte record block E with HKDF(i,Q) (rd, rd_count)
+ * - Create block B = |V,E,S_d|
+ * - Compute new DHT key H(V) in TODO 3)
+ *
+ * -> Put (H(V), B)
+ */
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Putting records for `%s' into the DHT\n", name);
rd_payload_length = GNUNET_NAMESTORE_records_get_size (rd_count, rd);
nrb_data += namelen;
rd_payload_length += sizeof(struct GNSNameRecordBlock) + namelen;
GNUNET_CRYPTO_short_hash (key,
- sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded),
+ sizeof (struct GNUNET_CRYPTO_EccPublicKey),
&zhash);
if (-1 == GNUNET_NAMESTORE_records_serialize (rd_count,
rd,
NULL);
return;
}
-
+ /* TODO AB: Here records are put in the DHT: modify dht_key to H(key) = H(H(name,zone) * zone) */
GNUNET_GNS_get_key_for_record (name, &zhash, &dht_key);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"putting %u records from zone %s for `%s' under key: %s with size %u and timeout %s\n",
GNUNET_STATISTICS_set (statistics,
"Current zone iteration interval (ms)",
- next_put_interval.rel_value,
+ next_put_interval.rel_value_us / 1000LL,
GNUNET_NO);
zone_publish_task = GNUNET_SCHEDULER_add_delayed (next_put_interval,
&publish_zone_dht_next,
*/
static void
process_shorten_in_private_zone_lookup (void *cls,
- const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *key,
+ const struct GNUNET_CRYPTO_EccPublicKey *key,
struct GNUNET_TIME_Absolute expiration,
const char *name,
unsigned int rd_count,
const struct GNUNET_NAMESTORE_RecordData *rd,
- const struct GNUNET_CRYPTO_RsaSignature *signature)
+ const struct GNUNET_CRYPTO_EccSignature *signature)
{
struct ClientShortenHandle *csh = cls;
struct GNUNET_CRYPTO_ShortHashCode *szone = &csh->shorten_zone;
*/
static void
process_shorten_in_root_zone_lookup (void *cls,
- const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *key,
+ const struct GNUNET_CRYPTO_EccPublicKey *key,
struct GNUNET_TIME_Absolute expiration,
const char *name,
unsigned int rd_count,
const struct GNUNET_NAMESTORE_RecordData *rd,
- const struct GNUNET_CRYPTO_RsaSignature *signature)
+ const struct GNUNET_CRYPTO_EccSignature *signature)
{
struct ClientShortenHandle *csh = cls;
struct GNUNET_CRYPTO_ShortHashCode *szone = &csh->shorten_zone;
*/
static void
process_private_in_root_zone_lookup (void *cls,
- const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *key,
+ const struct GNUNET_CRYPTO_EccPublicKey *key,
struct GNUNET_TIME_Absolute expiration,
const char *name,
unsigned int rd_count,
const struct GNUNET_NAMESTORE_RecordData *rd,
- const struct GNUNET_CRYPTO_RsaSignature *signature)
+ const struct GNUNET_CRYPTO_EccSignature *signature)
{
struct ClientShortenHandle *csh = cls;
GNUNET_free(clh->name);
if (NULL != clh->shorten_key)
- GNUNET_CRYPTO_rsa_key_free (clh->shorten_key);
+ GNUNET_CRYPTO_ecc_key_free (clh->shorten_key);
GNUNET_free (clh);
GNUNET_STATISTICS_update (statistics,
"Completed lookups", 1, GNUNET_NO);
char* nameptr = name;
const char *utf_in;
int only_cached;
- struct GNUNET_CRYPTO_RsaPrivateKey *key;
- struct GNUNET_CRYPTO_RsaPrivateKeyBinaryEncoded *pkey;
- char* tmp_pkey;
+ const struct GNUNET_CRYPTO_EccPrivateKey *key;
uint16_t msg_size;
const struct GNUNET_GNS_ClientLookupMessage *sh_msg;
GNUNET_SERVER_notification_context_add (nc, client);
if (GNUNET_YES == ntohl (sh_msg->have_key))
{
- pkey = (struct GNUNET_CRYPTO_RsaPrivateKeyBinaryEncoded *) &sh_msg[1];
- tmp_pkey = (char*) &sh_msg[1];
- key = GNUNET_CRYPTO_rsa_decode_key (tmp_pkey, ntohs (pkey->len));
- GNUNET_STRINGS_utf8_tolower (&tmp_pkey[ntohs (pkey->len)], &nameptr);
+ key = &sh_msg->shorten_key;
}
else
{
key = NULL;
- utf_in = (const char *) &sh_msg[1];
- if ('\0' != utf_in[msg_size - sizeof (struct GNUNET_GNS_ClientLookupMessage) - 1])
- {
- GNUNET_break (0);
- GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
- return;
- }
- GNUNET_STRINGS_utf8_tolower (utf_in, &nameptr);
}
+ utf_in = (const char *) &sh_msg[1];
+ if ('\0' != utf_in[msg_size - sizeof (struct GNUNET_GNS_ClientLookupMessage) - 1])
+ {
+ GNUNET_break (0);
+ GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+ return;
+ }
+ GNUNET_STRINGS_utf8_tolower (utf_in, &nameptr);
namelen = strlen (name) + 1;
clh = GNUNET_malloc (sizeof (struct ClientLookupHandle));
strcpy (clh->name, name);
clh->request_id = sh_msg->id;
clh->type = ntohl (sh_msg->type);
- clh->shorten_key = key;
-
+ if (NULL != key)
+ {
+ clh->shorten_key = GNUNET_new (struct GNUNET_CRYPTO_EccPrivateKey);
+ *clh->shorten_key = *key;
+ }
only_cached = ntohl (sh_msg->only_cached);
if (strlen (name) > GNUNET_DNSPARSER_MAX_NAME_LENGTH) {
return;
}
- if (1 == ntohl (sh_msg->use_default_zone))
+ if (GNUNET_NO == ntohl (sh_msg->have_zone))
clh->zone = zone_hash; /* Default zone */
else
clh->zone = sh_msg->zone;
{&handle_get_authority, NULL, GNUNET_MESSAGE_TYPE_GNS_GET_AUTH, 0}
};
char* keyfile;
- struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pkey;
+ struct GNUNET_CRYPTO_EccPublicKey pkey;
unsigned long long max_parallel_bg_queries = 0;
int ignore_pending = GNUNET_NO;
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"Using keyfile %s for root zone.\n", keyfile);
- zone_key = GNUNET_CRYPTO_rsa_key_create_from_file (keyfile);
- GNUNET_CRYPTO_rsa_key_get_public (zone_key, &pkey);
- GNUNET_CRYPTO_short_hash(&pkey,
- sizeof(struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded),
- &zone_hash);
+ zone_key = GNUNET_CRYPTO_ecc_key_create_from_file (keyfile);
+ GNUNET_CRYPTO_ecc_key_get_public (zone_key, &pkey);
+ GNUNET_CRYPTO_short_hash (&pkey,
+ sizeof(struct GNUNET_CRYPTO_EccPublicKey),
+ &zone_hash);
GNUNET_free(keyfile);
namestore_handle = GNUNET_NAMESTORE_connect (c);
if (NULL == namestore_handle)