/**
* Our zone hash
*/
-GNUNET_HashCode zone_hash;
+struct GNUNET_CRYPTO_ShortHashCode zone_hash;
/**
* Useful for zone update for DHT put
{
struct GNSNameRecordBlock *nrb;
- GNUNET_HashCode name_hash;
+ struct GNUNET_CRYPTO_ShortHashCode name_hash;
GNUNET_HashCode xor_hash;
+ GNUNET_HashCode name_hash_double;
+ GNUNET_HashCode zone_hash_double;
struct GNUNET_CRYPTO_HashAsciiEncoded xor_hash_string;
uint32_t rd_payload_length;
char* nrb_data = NULL;
/*
* calculate DHT key: H(name) xor H(pubkey)
*/
- GNUNET_CRYPTO_hash(name, strlen(name), &name_hash);
- GNUNET_CRYPTO_hash_xor(&zone_hash, &name_hash, &xor_hash);
+ GNUNET_CRYPTO_short_hash(name, strlen(name), &name_hash);
+ GNUNET_CRYPTO_short_hash_double (&name_hash, &name_hash_double);
+ GNUNET_CRYPTO_short_hash_double (&zone_hash, &zone_hash_double);
+ GNUNET_CRYPTO_hash_xor(&zone_hash_double, &name_hash_double, &xor_hash);
GNUNET_CRYPTO_hash_to_enc (&xor_hash, &xor_hash_string);
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
zone_key = GNUNET_CRYPTO_rsa_key_create_from_file (keyfile);
GNUNET_CRYPTO_rsa_key_get_public (zone_key, &pkey);
- GNUNET_CRYPTO_hash(&pkey, sizeof(struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded),
+ GNUNET_CRYPTO_short_hash(&pkey,
+ sizeof(struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded),
&zone_hash);
GNUNET_free(keyfile);
/**
* The root zone for this interceptor
*/
-static GNUNET_HashCode our_zone;
+static struct GNUNET_CRYPTO_ShortHashCode our_zone;
/**
* Our priv key
* @return GNUNET_OK on success
*/
int
-gns_interceptor_init(GNUNET_HashCode zone,
+gns_interceptor_init(struct GNUNET_CRYPTO_ShortHashCode zone,
struct GNUNET_CRYPTO_RsaPrivateKey *key,
const struct GNUNET_CONFIGURATION_Handle *c)
{
* @return GNUNET_YES on success GNUNET_SYSERR on error
*/
int
-gns_interceptor_init(GNUNET_HashCode zone,
+gns_interceptor_init(struct GNUNET_CRYPTO_ShortHashCode zone,
struct GNUNET_CRYPTO_RsaPrivateKey *key,
const struct GNUNET_CONFIGURATION_Handle *c);
"Name %s not taken in NS! Adding\n", gph->new_name);
new_pkey.expiration = GNUNET_TIME_absolute_get_forever ();
- new_pkey.data_size = sizeof(GNUNET_HashCode);
+ new_pkey.data_size = sizeof(struct GNUNET_CRYPTO_ShortHashCode);
new_pkey.data = &gph->new_zone;
new_pkey.record_type = GNUNET_GNS_RECORD_PKEY;
GNUNET_NAMESTORE_record_create (namestore_handle,
* check dht
*/
uint32_t xquery;
- GNUNET_HashCode name_hash;
+ struct GNUNET_CRYPTO_ShortHashCode name_hash;
GNUNET_HashCode lookup_key;
struct GNUNET_CRYPTO_HashAsciiEncoded lookup_key_string;
+ GNUNET_HashCode name_hash_double;
+ GNUNET_HashCode zone_hash_double;
- GNUNET_CRYPTO_hash("+", strlen("+"), &name_hash);
- GNUNET_CRYPTO_hash_xor(&name_hash, &gph->new_zone, &lookup_key);
+ GNUNET_CRYPTO_short_hash("+", strlen("+"), &name_hash);
+ GNUNET_CRYPTO_short_hash_double (&name_hash, &name_hash_double);
+ GNUNET_CRYPTO_short_hash_double (&gph->new_zone, &zone_hash_double);
+ GNUNET_CRYPTO_hash_xor(&name_hash_double, &zone_hash_double, &lookup_key);
GNUNET_CRYPTO_hash_to_enc (&lookup_key, &lookup_key_string);
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
* @param zone the authority
* @param the private key of our authority
*/
-static void process_discovered_authority(char* name, GNUNET_HashCode zone,
- GNUNET_HashCode our_zone,
+static void process_discovered_authority(char* name, struct GNUNET_CRYPTO_ShortHashCode zone,
+ struct GNUNET_CRYPTO_ShortHashCode our_zone,
struct GNUNET_CRYPTO_RsaPrivateKey *key)
{
struct GetPseuAuthorityHandle *gph;
int i;
int rd_size;
- GNUNET_HashCode zone, name_hash;
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "got dht result (size=%d)\n", size);
if (data == NULL)
}
- GNUNET_CRYPTO_hash(name, strlen(name), &name_hash);
- GNUNET_CRYPTO_hash_xor(key, &name_hash, &zone);
-
/**
* FIXME check pubkey against existing key in namestore?
* https://gnunet.org/bugs/view.php?id=2179
resolve_record_dht(struct ResolverHandle *rh)
{
uint32_t xquery;
- GNUNET_HashCode name_hash;
+ struct GNUNET_CRYPTO_ShortHashCode name_hash;
GNUNET_HashCode lookup_key;
+ GNUNET_HashCode name_hash_double;
+ GNUNET_HashCode zone_hash_double;
struct GNUNET_CRYPTO_HashAsciiEncoded lookup_key_string;
struct RecordLookupHandle *rlh = (struct RecordLookupHandle *)rh->proc_cls;
- GNUNET_CRYPTO_hash(rh->name, strlen(rh->name), &name_hash);
- GNUNET_CRYPTO_hash_xor(&name_hash, &rh->authority, &lookup_key);
+ GNUNET_CRYPTO_short_hash(rh->name, strlen(rh->name), &name_hash);
+ GNUNET_CRYPTO_short_hash_double(&name_hash, &name_hash_double);
+ GNUNET_CRYPTO_short_hash_double(&rh->authority, &zone_hash_double);
+ GNUNET_CRYPTO_hash_xor(&name_hash_double, &zone_hash_double, &lookup_key);
GNUNET_CRYPTO_hash_to_enc (&lookup_key, &lookup_key_string);
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
struct ResolverHandle *rh;
struct RecordLookupHandle *rlh;
struct GNUNET_TIME_Relative remaining_time;
- GNUNET_HashCode zone;
+ struct GNUNET_CRYPTO_ShortHashCode zone;
rh = (struct ResolverHandle *) cls;
rlh = (struct RecordLookupHandle *)rh->proc_cls;
- GNUNET_CRYPTO_hash(key,
+ GNUNET_CRYPTO_short_hash(key,
sizeof(struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded),
&zone);
remaining_time = GNUNET_TIME_absolute_get_remaining (expiration);
char* rd_data = (char*) data;
int i;
int rd_size;
- GNUNET_HashCode zone, name_hash;
+ struct GNUNET_CRYPTO_ShortHashCode zone, name_hash;
+ GNUNET_HashCode zone_hash_double, name_hash_double;
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Got DHT result\n");
{
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Authority found in DHT\n");
rh->answered = 1;
- memcpy(&rh->authority, rd[i].data, sizeof(GNUNET_HashCode));
+ memcpy(&rh->authority, rd[i].data, sizeof(struct GNUNET_CRYPTO_ShortHashCode));
struct AuthorityChain *auth =
GNUNET_malloc(sizeof(struct AuthorityChain));
auth->zone = rh->authority;
}
- GNUNET_CRYPTO_hash(name, strlen(name), &name_hash);
- GNUNET_CRYPTO_hash_xor(key, &name_hash, &zone);
+ GNUNET_CRYPTO_short_hash(name, strlen(name), &name_hash);
+ GNUNET_CRYPTO_short_hash_double(&name_hash, &name_hash_double);
+ GNUNET_CRYPTO_hash_xor(key, &name_hash_double, &zone_hash_double);
+ GNUNET_CRYPTO_short_hash_from_truncation (&zone_hash_double, &zone);
/* Save to namestore */
- if (0 != GNUNET_CRYPTO_hash_cmp(&rh->authority_chain_tail->zone, &zone))
+ if (0 != GNUNET_CRYPTO_short_hash_cmp(&rh->authority_chain_tail->zone,
+ &zone))
{
GNUNET_NAMESTORE_record_put (namestore_handle,
&nrb->public_key,
{
/* ns entry expired and not ours. try dht */
if (rh->status & (EXPIRED | !EXISTS) &&
- GNUNET_CRYPTO_hash_cmp(&rh->authority_chain_head->zone,
- &rh->authority_chain_tail->zone))
+ GNUNET_CRYPTO_short_hash_cmp(&rh->authority_chain_head->zone,
+ &rh->authority_chain_tail->zone))
{
rh->proc = &handle_record_dht;
resolve_record_dht(rh);
resolve_delegation_dht(struct ResolverHandle *rh)
{
uint32_t xquery;
- GNUNET_HashCode name_hash;
+ struct GNUNET_CRYPTO_ShortHashCode name_hash;
+ GNUNET_HashCode name_hash_double;
+ GNUNET_HashCode zone_hash_double;
GNUNET_HashCode lookup_key;
- GNUNET_CRYPTO_hash(rh->authority_name,
+ GNUNET_CRYPTO_short_hash(rh->authority_name,
strlen(rh->authority_name),
&name_hash);
- GNUNET_CRYPTO_hash_xor(&name_hash, &rh->authority, &lookup_key);
+ GNUNET_CRYPTO_short_hash_double(&name_hash, &name_hash_double);
+ GNUNET_CRYPTO_short_hash_double(&rh->authority, &zone_hash_double);
+ GNUNET_CRYPTO_hash_xor(&name_hash_double, &zone_hash_double, &lookup_key);
rh->dht_timeout_task = GNUNET_SCHEDULER_add_delayed (DHT_LOOKUP_TIMEOUT,
&dht_authority_lookup_timeout,
* or we are authority
**/
if ((rh->status & (EXISTS | !EXPIRED)) ||
- !GNUNET_CRYPTO_hash_cmp(&rh->authority_chain_head->zone,
+ !GNUNET_CRYPTO_short_hash_cmp(&rh->authority_chain_head->zone,
&rh->authority_chain_tail->zone))
{
if (is_canonical(rh->name))
{
struct ResolverHandle *rh;
struct GNUNET_TIME_Relative remaining_time;
- GNUNET_HashCode zone;
+ struct GNUNET_CRYPTO_ShortHashCode zone;
char new_name[MAX_DNS_NAME_LENGTH];
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Got %d records from authority lookup\n",
rd_count);
rh = (struct ResolverHandle *)cls;
- GNUNET_CRYPTO_hash(key,
+ GNUNET_CRYPTO_short_hash(key,
sizeof(struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded),
&zone);
remaining_time = GNUNET_TIME_absolute_get_remaining (expiration);
* Resolve rest of query with new authority
*/
GNUNET_assert(rd[i].record_type == GNUNET_GNS_RECORD_PKEY);
- memcpy(&rh->authority, rd[i].data, sizeof(GNUNET_HashCode));
+ memcpy(&rh->authority, rd[i].data, sizeof(struct GNUNET_CRYPTO_ShortHashCode));
struct AuthorityChain *auth = GNUNET_malloc(sizeof(struct AuthorityChain));
auth->zone = rh->authority;
memset(auth->name, 0, strlen(rh->authority_name)+1);
* @param cls the closure to pass to proc
*/
void
-gns_resolver_lookup_record(GNUNET_HashCode zone,
+gns_resolver_lookup_record(struct GNUNET_CRYPTO_ShortHashCode zone,
uint32_t record_type,
const char* name,
struct GNUNET_CRYPTO_RsaPrivateKey *key,
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"ZKEY is %s!\n", string_hash);
- if (GNUNET_OK != GNUNET_CRYPTO_hash_from_string(string_hash,
+ if (GNUNET_OK != GNUNET_CRYPTO_short_hash_from_string(string_hash,
&rh->authority))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
GNUNET_free(nsh);
free_resolver_handle(rh);
}
- else if (GNUNET_CRYPTO_hash_cmp(&rh->authority_chain_head->zone,
- &rh->authority_chain_tail->zone))
+ else if (GNUNET_CRYPTO_short_hash_cmp(&rh->authority_chain_head->zone,
+ &rh->authority_chain_tail->zone))
{
/* our zone, just append .gnunet */
answer_len = strlen(rh->name) + strlen(GNUNET_GNS_TLD) + 2;
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"PKEY resolved as far as possible in ns up to %s!\n", rh->name);
- if (GNUNET_CRYPTO_hash_cmp(&rh->authority_chain_head->zone,
- &rh->authority_chain_tail->zone) == 0)
+ if (GNUNET_CRYPTO_short_hash_cmp(&rh->authority_chain_head->zone,
+ &rh->authority_chain_tail->zone) == 0)
{
/**
* This is our zone append .gnunet unless name is empty
* @param cls closure to pass to proc
*/
void
-gns_resolver_shorten_name(GNUNET_HashCode zone,
+gns_resolver_shorten_name(struct GNUNET_CRYPTO_ShortHashCode zone,
const char* name,
ShortenResultProcessor proc,
void* cls)
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"ZKEY is %s!\n", string_hash);
- if (GNUNET_OK != GNUNET_CRYPTO_hash_from_string(string_hash,
- &rh->authority))
+ if (GNUNET_OK != GNUNET_CRYPTO_short_hash_from_string(string_hash,
+ &rh->authority))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Cannot convert ZKEY %s to hash!\n", string_hash);
* @param cls the closure to pass to the processor
*/
void
-gns_resolver_get_authority(GNUNET_HashCode zone,
+gns_resolver_get_authority(struct GNUNET_CRYPTO_ShortHashCode zone,
const char* name,
GetAuthorityResultProcessor proc,
void* cls)
struct AuthorityChain *next;
/* the zone hash of the authority */
- GNUNET_HashCode zone;
+ struct GNUNET_CRYPTO_ShortHashCode zone;
/* (local) name of the authority */
char name[MAX_DNS_LABEL_LENGTH];
int answered;
/* the authoritative zone to query */
- GNUNET_HashCode authority;
+ struct GNUNET_CRYPTO_ShortHashCode authority;
/* the name of the authoritative zone to query */
char authority_name[MAX_DNS_LABEL_LENGTH];
char new_name[MAX_DNS_LABEL_LENGTH];
/* the zone of discovered authority */
- GNUNET_HashCode new_zone;
+ struct GNUNET_CRYPTO_ShortHashCode new_zone;
/* the zone of our authority */
- GNUNET_HashCode zone;
+ struct GNUNET_CRYPTO_ShortHashCode zone;
/* the private key of the zone to store the pseu in */
struct GNUNET_CRYPTO_RsaPrivateKey *key;
* @param cls the closure to pass to proc
*/
void
-gns_resolver_lookup_record(GNUNET_HashCode zone,
+gns_resolver_lookup_record(struct GNUNET_CRYPTO_ShortHashCode zone,
uint32_t record_type,
const char* name,
struct GNUNET_CRYPTO_RsaPrivateKey *key,
void* cls);
void
-gns_resolver_shorten_name(GNUNET_HashCode zone,
+gns_resolver_shorten_name(struct GNUNET_CRYPTO_ShortHashCode zone,
const char* name,
ShortenResultProcessor proc,
void* cls);
* @param cls the closure to pass to the processor
*/
void
-gns_resolver_get_authority(GNUNET_HashCode zone,
+gns_resolver_get_authority(struct GNUNET_CRYPTO_ShortHashCode zone,
const char* name,
GetAuthorityResultProcessor proc,
void* cls);
size_t reply_block_size)
{
char* name;
- GNUNET_HashCode pkey_hash;
+ GNUNET_HashCode pkey_hash_double;
GNUNET_HashCode query_key;
- GNUNET_HashCode name_hash;
+ GNUNET_HashCode name_hash_double;
GNUNET_HashCode mhash;
GNUNET_HashCode chash;
+ struct GNUNET_CRYPTO_ShortHashCode pkey_hash;
+ struct GNUNET_CRYPTO_ShortHashCode name_hash;
struct GNSNameRecordBlock *nrb;
uint32_t rd_count;
char* rd_data = NULL;
nrb = (struct GNSNameRecordBlock *)reply_block;
name = (char*)&nrb[1];
- GNUNET_CRYPTO_hash(&nrb->public_key,
+ GNUNET_CRYPTO_short_hash(&nrb->public_key,
sizeof(nrb->public_key),
&pkey_hash);
- GNUNET_CRYPTO_hash(name, strlen(name), &name_hash);
+ GNUNET_CRYPTO_short_hash(name, strlen(name), &name_hash);
+
+ GNUNET_CRYPTO_short_hash_double(&name_hash, &name_hash_double);
+ GNUNET_CRYPTO_short_hash_double(&pkey_hash, &pkey_hash_double);
- GNUNET_CRYPTO_hash_xor(&pkey_hash, &name_hash, &query_key);
+ GNUNET_CRYPTO_hash_xor(&pkey_hash_double, &name_hash_double, &query_key);
struct GNUNET_CRYPTO_HashAsciiEncoded xor_exp;
struct GNUNET_CRYPTO_HashAsciiEncoded xor_got;
put_dht(void *cls, int32_t success, const char *emsg)
{
struct GNSNameRecordBlock *nrb;
- GNUNET_HashCode name_hash;
+ struct GNUNET_CRYPTO_ShortHashCode name_hash;
+ struct GNUNET_CRYPTO_ShortHashCode zone_hash;
GNUNET_HashCode xor_hash;
- GNUNET_HashCode zone_hash;
+ GNUNET_HashCode name_hash_double;
+ GNUNET_HashCode zone_hash_double;
uint32_t rd_payload_length;
char* nrb_data = NULL;
struct GNUNET_CRYPTO_RsaSignature *sig;
GNUNET_free (nrb);
return;
}
- GNUNET_CRYPTO_hash(TEST_RECORD_NAME, strlen(TEST_RECORD_NAME), &name_hash);
- GNUNET_CRYPTO_hash(&bob_pkey,
+ GNUNET_CRYPTO_short_hash(TEST_RECORD_NAME, strlen(TEST_RECORD_NAME), &name_hash);
+ GNUNET_CRYPTO_short_hash(&bob_pkey,
sizeof(struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded),
&zone_hash);
- GNUNET_CRYPTO_hash_xor(&zone_hash, &name_hash, &xor_hash);
+ GNUNET_CRYPTO_short_hash_double(&zone_hash, &zone_hash_double);
+ GNUNET_CRYPTO_short_hash_double(&name_hash, &name_hash_double);
+ GNUNET_CRYPTO_hash_xor(&zone_hash_double, &name_hash_double, &xor_hash);
rd_payload_length += sizeof(struct GNSNameRecordBlock) +
strlen(TEST_RECORD_NAME) + 1;
char* alice_keyfile;
- GNUNET_HashCode bob_hash;
+ struct GNUNET_CRYPTO_ShortHashCode bob_hash;
GNUNET_SCHEDULER_cancel (die_task);
GNUNET_CRYPTO_rsa_key_get_public (alice_key, &alice_pkey);
GNUNET_CRYPTO_rsa_key_get_public (bob_key, &bob_pkey);
- GNUNET_CRYPTO_hash(&bob_pkey, sizeof(bob_pkey), &bob_hash);
+ GNUNET_CRYPTO_short_hash(&bob_pkey, sizeof(bob_pkey), &bob_hash);
struct GNUNET_NAMESTORE_RecordData rd;
rd.expiration = GNUNET_TIME_absolute_get_forever ();
- rd.data_size = sizeof(GNUNET_HashCode);
+ rd.data_size = sizeof(struct GNUNET_CRYPTO_ShortHashCode);
rd.data = &bob_hash;
rd.record_type = GNUNET_GNS_RECORD_PKEY;
struct GNUNET_CRYPTO_RsaPrivateKey *alice_key;
struct GNUNET_CRYPTO_RsaPrivateKey *bob_key;
struct GNUNET_CRYPTO_RsaPrivateKey *our_key;
-GNUNET_HashCode alice_hash;
-GNUNET_HashCode bob_hash;
+struct GNUNET_CRYPTO_ShortHashCode alice_hash;
+struct GNUNET_CRYPTO_ShortHashCode bob_hash;
/**
* Check whether peers successfully shut down.
put_pseu_dht(void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct GNSNameRecordBlock *nrb;
- GNUNET_HashCode name_hash;
+ struct GNUNET_CRYPTO_ShortHashCode name_hash;
+ struct GNUNET_CRYPTO_ShortHashCode zone_hash;
GNUNET_HashCode xor_hash;
- GNUNET_HashCode zone_hash;
+ GNUNET_HashCode name_hash_double;
+ GNUNET_HashCode zone_hash_double;
uint32_t rd_payload_length;
char* nrb_data = NULL;
struct GNUNET_CRYPTO_RsaSignature *sig;
GNUNET_free (nrb);
return;
}
- GNUNET_CRYPTO_hash("+", strlen("+"), &name_hash);
- GNUNET_CRYPTO_hash(&alice_pkey,
+ GNUNET_CRYPTO_short_hash("+", strlen("+"), &name_hash);
+ GNUNET_CRYPTO_short_hash(&alice_pkey,
sizeof(struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded),
&zone_hash);
- GNUNET_CRYPTO_hash_xor(&zone_hash, &name_hash, &xor_hash);
+
+ GNUNET_CRYPTO_short_hash_double(&name_hash, &name_hash_double);
+ GNUNET_CRYPTO_short_hash_double(&zone_hash, &zone_hash_double);
+ GNUNET_CRYPTO_hash_xor(&zone_hash_double, &name_hash_double, &xor_hash);
rd_payload_length += sizeof(struct GNSNameRecordBlock) +
strlen("+") + 1;
put_www_dht(void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct GNSNameRecordBlock *nrb;
- GNUNET_HashCode name_hash;
+ struct GNUNET_CRYPTO_ShortHashCode name_hash;
+ struct GNUNET_CRYPTO_ShortHashCode zone_hash;
GNUNET_HashCode xor_hash;
- GNUNET_HashCode zone_hash;
+ GNUNET_HashCode name_hash_double;
+ GNUNET_HashCode zone_hash_double;
uint32_t rd_payload_length;
char* nrb_data = NULL;
struct GNUNET_CRYPTO_RsaSignature *sig;
GNUNET_free (nrb);
return;
}
- GNUNET_CRYPTO_hash(TEST_RECORD_NAME, strlen(TEST_RECORD_NAME), &name_hash);
- GNUNET_CRYPTO_hash(&alice_pkey,
+ GNUNET_CRYPTO_short_hash(TEST_RECORD_NAME, strlen(TEST_RECORD_NAME), &name_hash);
+ GNUNET_CRYPTO_short_hash(&alice_pkey,
sizeof(struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded),
&zone_hash);
- GNUNET_CRYPTO_hash_xor(&zone_hash, &name_hash, &xor_hash);
+ GNUNET_CRYPTO_short_hash_double(&zone_hash, &zone_hash_double);
+ GNUNET_CRYPTO_short_hash_double(&name_hash, &name_hash_double);
+ GNUNET_CRYPTO_hash_xor(&zone_hash_double, &name_hash_double, &xor_hash);
rd_payload_length += sizeof(struct GNSNameRecordBlock) +
strlen(TEST_RECORD_NAME) + 1;
put_pkey_dht(void *cls, int32_t success, const char *emsg)
{
struct GNSNameRecordBlock *nrb;
- GNUNET_HashCode name_hash;
+ struct GNUNET_CRYPTO_ShortHashCode name_hash;
+ struct GNUNET_CRYPTO_ShortHashCode zone_hash;
GNUNET_HashCode xor_hash;
- GNUNET_HashCode zone_hash;
+ GNUNET_HashCode name_hash_double;
+ GNUNET_HashCode zone_hash_double;
uint32_t rd_payload_length;
char* nrb_data = NULL;
struct GNUNET_CRYPTO_RsaSignature *sig;
struct GNUNET_NAMESTORE_RecordData rd;
rd.expiration = GNUNET_TIME_absolute_get_forever ();
- rd.data_size = sizeof(GNUNET_HashCode);
+ rd.data_size = sizeof(struct GNUNET_CRYPTO_ShortHashCode);
rd.data = &alice_hash;
rd.record_type = GNUNET_GNS_RECORD_PKEY;
}
- GNUNET_CRYPTO_hash(TEST_AUTHORITY_ALICE,
+ GNUNET_CRYPTO_short_hash(TEST_AUTHORITY_ALICE,
strlen(TEST_AUTHORITY_ALICE), &name_hash);
- GNUNET_CRYPTO_hash(&bob_pkey,
+ GNUNET_CRYPTO_short_hash(&bob_pkey,
sizeof(struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded),
&zone_hash);
- GNUNET_CRYPTO_hash_xor(&zone_hash, &name_hash, &xor_hash);
+ GNUNET_CRYPTO_short_hash_double(&zone_hash, &zone_hash_double);
+ GNUNET_CRYPTO_short_hash_double(&name_hash, &name_hash_double);
+ GNUNET_CRYPTO_hash_xor(&zone_hash_double, &name_hash_double, &xor_hash);
rd_payload_length += sizeof(struct GNSNameRecordBlock) +
strlen(TEST_AUTHORITY_ALICE) + 1;
GNUNET_CRYPTO_rsa_key_get_public (our_key, &our_pkey);
GNUNET_CRYPTO_rsa_key_get_public (bob_key, &bob_pkey);
GNUNET_CRYPTO_rsa_key_get_public (alice_key, &alice_pkey);
- GNUNET_CRYPTO_hash(&bob_pkey, sizeof(bob_pkey), &bob_hash);
- GNUNET_CRYPTO_hash(&alice_pkey, sizeof(alice_pkey), &alice_hash);
+ GNUNET_CRYPTO_short_hash(&bob_pkey, sizeof(bob_pkey), &bob_hash);
+ GNUNET_CRYPTO_short_hash(&alice_pkey, sizeof(alice_pkey), &alice_hash);
struct GNUNET_NAMESTORE_RecordData rd;
rd.expiration = GNUNET_TIME_absolute_get_forever ();
- rd.data_size = sizeof(GNUNET_HashCode);
+ rd.data_size = sizeof(struct GNUNET_CRYPTO_ShortHashCode);
rd.data = &bob_hash;
rd.record_type = GNUNET_GNS_RECORD_PKEY;
struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded bob_pkey;
struct GNUNET_CRYPTO_RsaPrivateKey *alice_key;
struct GNUNET_CRYPTO_RsaPrivateKey *bob_key;
- GNUNET_HashCode bob_hash;
+ struct GNUNET_CRYPTO_ShortHashCode bob_hash;
struct GNUNET_CRYPTO_RsaSignature *sig;
char* alice_keyfile;
rd.expiration = GNUNET_TIME_absolute_get_forever ();
GNUNET_assert(1 == inet_pton (AF_INET, ip, web));
- GNUNET_CRYPTO_hash(&bob_pkey, sizeof(bob_pkey), &bob_hash);
+ GNUNET_CRYPTO_short_hash(&bob_pkey, sizeof(bob_pkey), &bob_hash);
- rd.data_size = sizeof(GNUNET_HashCode);
+ rd.data_size = sizeof(struct GNUNET_CRYPTO_ShortHashCode);
rd.data = &bob_hash;
rd.record_type = GNUNET_GNS_RECORD_PKEY;
struct GNUNET_CRYPTO_RsaPrivateKey *our_key;
struct GNUNET_CRYPTO_RsaPrivateKey *alice_key;
struct GNUNET_CRYPTO_RsaPrivateKey *bob_key;
- GNUNET_HashCode bob_hash;
- GNUNET_HashCode alice_hash;
+ struct GNUNET_CRYPTO_ShortHashCode bob_hash;
+ struct GNUNET_CRYPTO_ShortHashCode alice_hash;
struct GNUNET_CRYPTO_RsaSignature *sig;
char* our_keyfile;
rd.expiration = GNUNET_TIME_absolute_get_forever ();
GNUNET_assert(1 == inet_pton (AF_INET, ip, web));
- GNUNET_CRYPTO_hash(&bob_pkey, sizeof(bob_pkey), &bob_hash);
+ GNUNET_CRYPTO_short_hash(&bob_pkey, sizeof(bob_pkey), &bob_hash);
- rd.data_size = sizeof(GNUNET_HashCode);
+ rd.data_size = sizeof(struct GNUNET_CRYPTO_ShortHashCode);
rd.data = &bob_hash;
rd.record_type = GNUNET_GNS_RECORD_PKEY;
NULL);
/* put alice into bobs zone */
- GNUNET_CRYPTO_hash(&alice_pkey, sizeof(alice_pkey), &alice_hash);
+ GNUNET_CRYPTO_short_hash(&alice_pkey, sizeof(alice_pkey), &alice_hash);
rd.data = &alice_hash;
sig = GNUNET_NAMESTORE_create_signature(bob_key, GNUNET_TIME_absolute_get_forever(), TEST_AUTHORITY_ALICE,
&rd, 1);
struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded bob_pkey;
struct GNUNET_CRYPTO_RsaPrivateKey *alice_key;
struct GNUNET_CRYPTO_RsaPrivateKey *bob_key;
- GNUNET_HashCode bob_hash;
+ struct GNUNET_CRYPTO_ShortHashCode bob_hash;
struct GNUNET_CRYPTO_RsaSignature *sig;
char* alice_keyfile;
rd.expiration = GNUNET_TIME_absolute_get_forever ();
GNUNET_assert(1 == inet_pton (AF_INET, ip, mail));
- GNUNET_CRYPTO_hash(&bob_pkey, sizeof(bob_pkey), &bob_hash);
+ GNUNET_CRYPTO_short_hash(&bob_pkey, sizeof(bob_pkey), &bob_hash);
- rd.data_size = sizeof(GNUNET_HashCode);
+ rd.data_size = sizeof(struct GNUNET_CRYPTO_ShortHashCode);
rd.data = &bob_hash;
rd.record_type = GNUNET_GNS_RECORD_PKEY;
struct GNUNET_CRYPTO_RsaPrivateKey *our_key;
struct GNUNET_CRYPTO_RsaPrivateKey *alice_key;
struct GNUNET_CRYPTO_RsaPrivateKey *bob_key;
- GNUNET_HashCode bob_hash;
- GNUNET_HashCode alice_hash;
+ struct GNUNET_CRYPTO_ShortHashCode bob_hash;
+ struct GNUNET_CRYPTO_ShortHashCode alice_hash;
struct GNUNET_CRYPTO_RsaSignature *sig;
char* our_keyfile;
rd.expiration = GNUNET_TIME_absolute_get_forever ();
GNUNET_assert(1 == inet_pton (AF_INET, ip, web));
- GNUNET_CRYPTO_hash(&bob_pkey, sizeof(bob_pkey), &bob_hash);
+ GNUNET_CRYPTO_short_hash(&bob_pkey, sizeof(bob_pkey), &bob_hash);
- rd.data_size = sizeof(GNUNET_HashCode);
+ rd.data_size = sizeof(struct GNUNET_CRYPTO_ShortHashCode);
rd.data = &bob_hash;
rd.record_type = GNUNET_GNS_RECORD_PKEY;
NULL);
/* put alice into bobs zone */
- GNUNET_CRYPTO_hash(&alice_pkey, sizeof(alice_pkey), &alice_hash);
+ GNUNET_CRYPTO_short_hash(&alice_pkey, sizeof(alice_pkey), &alice_hash);
rd.data = &alice_hash;
sig = GNUNET_NAMESTORE_create_signature(bob_key,
GNUNET_TIME_absolute_get_forever(),
NULL,
NULL);
- rd.data_size = sizeof(GNUNET_HashCode);
+ rd.data_size = sizeof(struct GNUNET_CRYPTO_ShortHashCode);
rd.data = &alice_hash;
rd.record_type = GNUNET_GNS_RECORD_PKEY;
GNUNET_free(sig);
const struct GNUNET_CONFIGURATION_Handle *cfg;
-GNUNET_HashCode bob_hash;
+struct GNUNET_CRYPTO_ShortHashCode bob_hash;
/**
* Check whether peers successfully shut down.
{
char name[MAX_DNS_NAME_LENGTH];
char* pos;
- struct GNUNET_CRYPTO_HashAsciiEncoded hash_str;
+ struct GNUNET_CRYPTO_ShortHashAsciiEncoded hash_str;
GNUNET_NAMESTORE_disconnect(namestore_handle, GNUNET_YES);
pos += strlen(TEST_RECORD_NAME);
strcpy(pos, ".");
pos++;
- GNUNET_CRYPTO_hash_to_enc(&bob_hash, &hash_str);
+ GNUNET_CRYPTO_short_hash_to_enc(&bob_hash, &hash_str);
strcpy(pos, (char*)&hash_str);
pos += strlen((char*)&hash_str);
strcpy(pos, ".");
rd.expiration = GNUNET_TIME_absolute_get_forever ();
GNUNET_assert(1 == inet_pton (AF_INET, ip, web));
- GNUNET_CRYPTO_hash(&bob_pkey, sizeof(bob_pkey), &bob_hash);
+ GNUNET_CRYPTO_short_hash(&bob_pkey, sizeof(bob_pkey), &bob_hash);
- rd.data_size = sizeof(GNUNET_HashCode);
+ rd.data_size = sizeof(struct GNUNET_CRYPTO_ShortHashCode);
rd.data = &bob_hash;
rd.record_type = GNUNET_GNS_RECORD_PKEY;
GNUNET_CRYPTO_short_hash_from_string2 (enc, strlen(enc), result)
+/**
+ * Compare function for ShortHashCodes, producing a total ordering
+ * of all hashcodes.
+ *
+ * @param h1 some hash code
+ * @param h2 some hash code
+ * @return 1 if h1 > h2, -1 if h1 < h2 and 0 if h1 == h2.
+ */
+int
+GNUNET_CRYPTO_short_hash_cmp (const struct GNUNET_CRYPTO_ShortHashCode * h1,
+ const struct GNUNET_CRYPTO_ShortHashCode * h2);
+
/**
* Compute the distance between 2 hashcodes.
* The computation must be fast, not involve
*np = '\0';
}
+/**
+ * Compare function for ShortHashCodes, producing a total ordering
+ * of all hashcodes.
+ *
+ * @param h1 some hash code
+ * @param h2 some hash code
+ * @return 1 if h1 > h2, -1 if h1 < h2 and 0 if h1 == h2.
+ */
+int
+GNUNET_CRYPTO_short_hash_cmp (const struct GNUNET_CRYPTO_ShortHashCode * h1,
+ const struct GNUNET_CRYPTO_ShortHashCode * h2)
+{
+ unsigned int *i1;
+ unsigned int *i2;
+ int i;
+ i1 = (unsigned int *) h1;
+ i2 = (unsigned int *) h2;
+ for (i = (sizeof (struct GNUNET_CRYPTO_ShortHashCode) / sizeof (unsigned int)) - 1; i >= 0; i--)
+ {
+ if (i1[i] > i2[i])
+ return 1;
+ if (i1[i] < i2[i])
+ return -1;
+ }
+ return 0;
+}
/* end of crypto_hash.c */