From b0efd52f0322605c198c403e8e98af0a4323c787 Mon Sep 17 00:00:00 2001 From: Federico Lucifredi Date: Sun, 13 Jan 2008 00:25:45 +0000 Subject: correcting byte order in keyed hash generation. git-svn-id: file:///home/lennart/svn/public/avahi/branches/federico@1695 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe --- avahi-core/dns.c | 1 + avahi-core/domain-util.c | 12 ++++++------ avahi-core/domain-util.h | 8 ++++---- avahi-core/wide-area.c | 16 ++++++++-------- 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/avahi-core/dns.c b/avahi-core/dns.c index 7be1800..e4c40ad 100644 --- a/avahi-core/dns.c +++ b/avahi-core/dns.c @@ -776,6 +776,7 @@ static int append_rdata(AvahiDnsPacket *p, AvahiRecord *r) { printf("---mark--- (6)\n"); + /* map time to uint48 - needs checking on 64bit archs */ if (!avahi_dns_packet_append_uint16(p,0)||(!avahi_dns_packet_append_uint32(p, r->data.tsig.time_signed))) return -1; diff --git a/avahi-core/domain-util.c b/avahi-core/domain-util.c index 60dc9ee..5aa4e20 100644 --- a/avahi-core/domain-util.c +++ b/avahi-core/domain-util.c @@ -189,7 +189,7 @@ int avahi_domain_ends_with(const char *domain, const char *suffix) { } /*todo: revise location of this function in this file vs domain.c (and.h) */ -unsigned char * c_to_canonical_string(const char* input) +unsigned char * avahi_c_to_canonical_string(const char* input) { char *label = avahi_malloc(AVAHI_LABEL_MAX); char *retval = avahi_malloc(AVAHI_DOMAIN_NAME_MAX); @@ -224,7 +224,7 @@ unsigned char * c_to_canonical_string(const char* input) return retval; } -unsigned char * uint16_to_canonical_string(uint16_t v) { +unsigned char * avahi_uint16_to_canonical_string(uint16_t v) { uint8_t *c = avahi_malloc(2); c[0] = (uint8_t) (v >> 8); @@ -232,7 +232,7 @@ unsigned char * uint16_to_canonical_string(uint16_t v) { return c; } -unsigned char * uint32_to_canonical_string(uint32_t v) { +unsigned char * avahi_uint32_to_canonical_string(uint32_t v) { uint8_t *c = avahi_malloc(4); c[0] = (uint8_t) (v >> 24); @@ -243,11 +243,11 @@ unsigned char * uint32_to_canonical_string(uint32_t v) { return c; } -unsigned char * time_t_to_canonical_string(time_t v) { +unsigned char * avahi_time_t_to_canonical_string(time_t v) { uint8_t *c = avahi_malloc(6); - c[0] = (uint8_t) (v >> 40); - c[1] = (uint8_t) (v >> 32); + c[0] = (uint8_t) 0; + c[1] = (uint8_t) 0; c[2] = (uint8_t) (v >> 24); c[3] = (uint8_t) (v >> 16); c[4] = (uint8_t) (v >> 8); diff --git a/avahi-core/domain-util.h b/avahi-core/domain-util.h index 75a5321..e4c1f72 100644 --- a/avahi-core/domain-util.h +++ b/avahi-core/domain-util.h @@ -43,16 +43,16 @@ int avahi_binary_domain_cmp(const char *a, const char *b); int avahi_domain_ends_with(const char *domain, const char *suffix); /** returns canonical DNS representation of C string representing a domain */ -unsigned char * c_to_canonical_string(const char* input); +unsigned char * avahi_c_to_canonical_string(const char* input); /** returns canonical wire representation of uint16 */ -unsigned char * uint16_to_canonical_string(uint16_t v); +unsigned char * avahi_uint16_to_canonical_string(uint16_t v); /** returns canonical wire representation of uint32 */ -unsigned char * uint32_to_canonical_string(uint32_t v); +unsigned char * avahi_uint32_to_canonical_string(uint32_t v); /** returns canonical wire representation of time_t as an uint48 */ -unsigned char * time_t_to_canonical_string(time_t v); +unsigned char * avahi_time_t_to_canonical_string(time_t v); AVAHI_C_DECL_END diff --git a/avahi-core/wide-area.c b/avahi-core/wide-area.c index 996da94..1a4fa38 100644 --- a/avahi-core/wide-area.c +++ b/avahi-core/wide-area.c @@ -773,27 +773,27 @@ AvahiRecord* avahi_tsig_sign_packet(const unsigned char* keyname, const unsigned printf("---mark--- (3b)\n"); - canonic = c_to_canonical_string(keyname); /* key name in canonical wire format (DNS labels) */ + canonic = avahi_c_to_canonical_string(keyname); /* key name in canonical wire format (DNS labels) */ HMAC_Update(&ctx, canonic, strlen(canonic) +1); printf("---mark--- (3c)\n"); - HMAC_Update(&ctx, uint16_to_canonical_string(AVAHI_DNS_CLASS_ANY), 2); /* class - always ANY for TSIG*/ + HMAC_Update(&ctx, avahi_uint16_to_canonical_string(AVAHI_DNS_CLASS_ANY), 2); /* class - always ANY for TSIG*/ - HMAC_Update(&ctx, uint32_to_canonical_string(0), 4); /* TTL - always 0 for TSIG */ + HMAC_Update(&ctx, avahi_uint32_to_canonical_string(0), 4); /* TTL - always 0 for TSIG */ - canonic = c_to_canonical_string(r->data.tsig.algorithm_name); /* IANA algorithm name in canonical wire format (DNS labels)*/ + canonic = avahi_c_to_canonical_string(r->data.tsig.algorithm_name); /* IANA algorithm name in canonical wire format (DNS labels)*/ HMAC_Update(&ctx, canonic, strlen(canonic) +1); printf("---mark--- (3d)\n"); - HMAC_Update(&ctx, time_t_to_canonical_string(r->data.tsig.time_signed), 6); /*uint48 representation of unix time */ + HMAC_Update(&ctx, avahi_time_t_to_canonical_string(r->data.tsig.time_signed), 6); /*uint48 representation of unix time */ - HMAC_Update(&ctx, uint16_to_canonical_string(r->data.tsig.fudge), 2); + HMAC_Update(&ctx, avahi_uint16_to_canonical_string(r->data.tsig.fudge), 2); - HMAC_Update(&ctx, uint16_to_canonical_string(r->data.tsig.error), 2); + HMAC_Update(&ctx, avahi_uint16_to_canonical_string(r->data.tsig.error), 2); - HMAC_Update(&ctx, uint16_to_canonical_string(r->data.tsig.other_len), 2); + HMAC_Update(&ctx, avahi_uint16_to_canonical_string(r->data.tsig.other_len), 2); HMAC_Update(&ctx, r->data.tsig.other_data, r->data.tsig.other_len); /* should still work if other_len =0 can be passed to the HMAC */ /* but no standard cypher uses this to date */ -- cgit