#include "platform.h"
#include "gnunet_util_lib.h"
#include "gnunet_dht_service.h"
+#include "gnunet_gnsrecord_lib.h"
#include "gnunet_namestore_service.h"
#include "gnunet_resolver_service.h"
#include "gnunet_gns_service.h"
* Private key of the (shorten) zone to store the resulting
* pseudonym in.
*/
- struct GNUNET_CRYPTO_EccPrivateKey shorten_zone_key;
+ struct GNUNET_CRYPTO_EcdsaPrivateKey shorten_zone_key;
/**
* Original label (used if no PSEU record is found).
/**
* The zone for which we are trying to find the PSEU record.
*/
- struct GNUNET_CRYPTO_EccPublicSignKey target_zone;
+ struct GNUNET_CRYPTO_EcdsaPublicKey target_zone;
/**
* Handle for DHT lookups. Should be NULL if no lookups are in progress
*/
struct GNUNET_NAMESTORE_QueueEntry *namestore_task;
+ /**
+ * Handle to namecache request
+ */
+ struct GNUNET_NAMECACHE_QueueEntry *namecache_task;
+
/**
* Task to abort DHT lookup operation.
*/
*/
static struct GNUNET_NAMESTORE_Handle *namestore_handle;
+/**
+ * Our handle to the namecache service
+ */
+static struct GNUNET_NAMECACHE_Handle *namecache_handle;
+
/**
* Resolver handle to the dht
*/
GNUNET_NAMESTORE_cancel (gph->namestore_task);
gph->namestore_task = NULL;
}
+ if (NULL != gph->namecache_task)
+ {
+ GNUNET_NAMECACHE_cancel (gph->namecache_task);
+ gph->namecache_task = NULL;
+ }
if (GNUNET_SCHEDULER_NO_TASK != gph->timeout_task)
{
GNUNET_SCHEDULER_cancel (gph->timeout_task);
static void
process_pseu_lookup_ns (void *cls,
unsigned int rd_count,
- const struct GNUNET_NAMESTORE_RecordData *rd);
+ const struct GNUNET_GNSRECORD_Data *rd);
/**
*/
static void
process_pseu_block_ns (void *cls,
- const struct GNUNET_NAMESTORE_Block *block)
+ const struct GNUNET_GNSRECORD_Block *block)
{
struct GetPseuAuthorityHandle *gph = cls;
- struct GNUNET_CRYPTO_EccPublicSignKey pub;
+ struct GNUNET_CRYPTO_EcdsaPublicKey pub;
- gph->namestore_task = NULL;
+ gph->namecache_task = NULL;
if (NULL == block)
{
process_pseu_lookup_ns (gph, 0, NULL);
return;
}
- GNUNET_CRYPTO_ecc_key_get_public_for_signature (&gph->shorten_zone_key,
+ GNUNET_CRYPTO_ecdsa_key_get_public (&gph->shorten_zone_key,
&pub);
if (GNUNET_OK !=
- GNUNET_NAMESTORE_block_decrypt (block,
+ GNUNET_GNSRECORD_block_decrypt (block,
&pub,
gph->current_label,
&process_pseu_lookup_ns,
perform_pseu_lookup (struct GetPseuAuthorityHandle *gph,
const char *label)
{
- struct GNUNET_CRYPTO_EccPublicSignKey pub;
+ struct GNUNET_CRYPTO_EcdsaPublicKey pub;
struct GNUNET_HashCode query;
- GNUNET_CRYPTO_ecc_key_get_public_for_signature (&gph->shorten_zone_key,
+ GNUNET_CRYPTO_ecdsa_key_get_public (&gph->shorten_zone_key,
&pub);
GNUNET_free_non_null (gph->current_label);
gph->current_label = GNUNET_strdup (label);
- GNUNET_NAMESTORE_query_from_public_key (&pub,
+ GNUNET_GNSRECORD_query_from_public_key (&pub,
label,
&query);
- gph->namestore_task = GNUNET_NAMESTORE_lookup_block (namestore_handle,
+ gph->namecache_task = GNUNET_NAMECACHE_lookup_block (namecache_handle,
&query,
&process_pseu_block_ns,
gph);
static void
process_pseu_lookup_ns (void *cls,
unsigned int rd_count,
- const struct GNUNET_NAMESTORE_RecordData *rd)
+ const struct GNUNET_GNSRECORD_Data *rd)
{
struct GetPseuAuthorityHandle *gph = cls;
- struct GNUNET_NAMESTORE_RecordData new_pkey;
+ struct GNUNET_GNSRECORD_Data new_pkey;
gph->namestore_task = NULL;
if (rd_count > 0)
{
- GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
- "Name `%s' already taken, cannot shorten.\n",
- gph->current_label);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Name `%s' already taken, cannot shorten.\n",
+ gph->current_label);
/* if this was not yet the original label, try one more
time, this time not using PSEU but the original label */
if (0 == strcmp (gph->current_label,
/* name is available */
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Shortening `%s' to `%s'\n",
- GNUNET_NAMESTORE_z2s (&gph->target_zone),
+ GNUNET_GNSRECORD_z2s (&gph->target_zone),
gph->current_label);
new_pkey.expiration_time = UINT64_MAX;
- new_pkey.data_size = sizeof (struct GNUNET_CRYPTO_EccPublicSignKey);
+ new_pkey.data_size = sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey);
new_pkey.data = &gph->target_zone;
- new_pkey.record_type = GNUNET_NAMESTORE_TYPE_PKEY;
- new_pkey.flags = GNUNET_NAMESTORE_RF_NONE
- | GNUNET_NAMESTORE_RF_PRIVATE
- | GNUNET_NAMESTORE_RF_PENDING;
+ new_pkey.record_type = GNUNET_GNSRECORD_TYPE_PKEY;
+ new_pkey.flags = GNUNET_GNSRECORD_RF_NONE
+ | GNUNET_GNSRECORD_RF_PRIVATE
+ | GNUNET_GNSRECORD_RF_PENDING;
gph->namestore_task
= GNUNET_NAMESTORE_records_store (namestore_handle,
&gph->shorten_zone_key,
gph->timeout_task = GNUNET_SCHEDULER_NO_TASK;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "DHT lookup for PSEU query timed out.\n");
+ "DHT lookup for PSEU query in zone `%s' timed out.\n",
+ GNUNET_GNSRECORD_z2s (&gph->target_zone));
GNUNET_DHT_get_stop (gph->get_handle);
gph->get_handle = NULL;
process_pseu_result (gph, NULL);
static void
process_auth_records (void *cls,
unsigned int rd_count,
- const struct GNUNET_NAMESTORE_RecordData *rd)
+ const struct GNUNET_GNSRECORD_Data *rd)
{
struct GetPseuAuthorityHandle *gph = cls;
unsigned int i;
for (i=0; i < rd_count; i++)
{
- if (GNUNET_NAMESTORE_TYPE_PSEU == rd[i].record_type)
+ if (GNUNET_GNSRECORD_TYPE_PSEU == rd[i].record_type)
{
char pseu[rd[i].data_size + 1];
}
}
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "No PSEU record found in DHT reply.\n");
+ "No PSEU record found in DHT reply with %u records.\n",
+ rd_count);
process_pseu_result (gph, NULL);
}
* @param exp lifetime
* @param key the key the record was stored under
* @param get_path get path
- * @param get_path_length get path length
+ * @param get_path_length @a get_path length
* @param put_path put path
- * @param put_path_length put path length
+ * @param put_path_length @a put_path length
* @param type the block type
- * @param size the size of the record
+ * @param size number of bytes in @a data
* @param data the record data
*/
static void
const void *data)
{
struct GetPseuAuthorityHandle *gph = cls;
- const struct GNUNET_NAMESTORE_Block *block;
+ const struct GNUNET_GNSRECORD_Block *block;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Got DHT result for PSEU request\n");
process_pseu_result (gph, NULL);
return;
}
- if (size < sizeof (struct GNUNET_NAMESTORE_Block))
+ if (size < sizeof (struct GNUNET_GNSRECORD_Block))
{
/* how did this pass DHT block validation!? */
GNUNET_break (0);
block = data;
if (size !=
ntohl (block->purpose.size) +
- sizeof (struct GNUNET_CRYPTO_EccPublicSignKey) +
- sizeof (struct GNUNET_CRYPTO_EccSignature))
+ sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey) +
+ sizeof (struct GNUNET_CRYPTO_EcdsaSignature))
{
/* how did this pass DHT block validation!? */
GNUNET_break (0);
return;
}
if (GNUNET_OK !=
- GNUNET_NAMESTORE_block_decrypt (block,
+ GNUNET_GNSRECORD_block_decrypt (block,
&gph->target_zone,
GNUNET_GNS_TLD_PLUS,
&process_auth_records,
*/
static void
process_zone_to_name_discover (void *cls,
- const struct GNUNET_CRYPTO_EccPrivateKey *zone_key,
+ const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone_key,
const char *name,
unsigned int rd_len,
- const struct GNUNET_NAMESTORE_RecordData *rd)
+ const struct GNUNET_GNSRECORD_Data *rd)
{
struct GetPseuAuthorityHandle* gph = cls;
struct GNUNET_HashCode lookup_key;
return;
}
/* record does not yet exist, go into DHT to find PSEU record */
- GNUNET_NAMESTORE_query_from_public_key (&gph->target_zone,
- GNUNET_GNS_TLD_PLUS,
+ GNUNET_GNSRECORD_query_from_public_key (&gph->target_zone,
+ GNUNET_GNS_TLD_PLUS,
&lookup_key);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Shortening searches in DHT for PSEU record under `%s' in zone `%s'\n",
+ GNUNET_h2s (&lookup_key),
+ GNUNET_GNSRECORD_z2s (&gph->target_zone));
+
gph->timeout_task = GNUNET_SCHEDULER_add_delayed (DHT_LOOKUP_TIMEOUT,
&handle_auth_discovery_timeout,
gph);
*/
void
GNS_shorten_start (const char *original_label,
- const struct GNUNET_CRYPTO_EccPublicSignKey *pub,
- const struct GNUNET_CRYPTO_EccPrivateKey *shorten_zone)
+ const struct GNUNET_CRYPTO_EcdsaPublicKey *pub,
+ const struct GNUNET_CRYPTO_EcdsaPrivateKey *shorten_zone)
{
struct GetPseuAuthorityHandle *gph;
- // if (1) return;
if (strlen (original_label) > GNUNET_DNSPARSER_MAX_LABEL_LENGTH)
{
GNUNET_break (0);
}
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Starting shortening process for `%s' with old label `%s'\n",
- GNUNET_NAMESTORE_z2s (pub),
+ GNUNET_GNSRECORD_z2s (pub),
original_label);
gph = GNUNET_new (struct GetPseuAuthorityHandle);
gph->shorten_zone_key = *shorten_zone;
* Initialize the shortening subsystem
*
* @param nh the namestore handle
+ * @param nc the namecache handle
* @param dht the dht handle
*/
void
GNS_shorten_init (struct GNUNET_NAMESTORE_Handle *nh,
+ struct GNUNET_NAMECACHE_Handle *nc,
struct GNUNET_DHT_Handle *dht)
{
namestore_handle = nh;
+ namecache_handle = nc;
dht_handle = dht;
}
free_get_pseu_authority_handle (gph_head);
dht_handle = NULL;
namestore_handle = NULL;
+ namecache_handle = NULL;
}
/* end of gnunet-service-gns_shorten.c */