summaryrefslogtreecommitdiffstats
path: root/avahi-core/wide-area.c
diff options
context:
space:
mode:
authorFederico Lucifredi <flucifredi@acm.org>2007-12-27 09:12:42 +0000
committerFederico Lucifredi <flucifredi@acm.org>2007-12-27 09:12:42 +0000
commit04a12e4c8b75b68ff137eafdbe50f5354f17b4e9 (patch)
tree81cfeed8c37eb5465b50dd8f37dfd81d7f4a6bc9 /avahi-core/wide-area.c
parent0c05ad822bb8fe4cd640c64819b16a2b82ae79a2 (diff)
added uint16_to_canonical_string()
git-svn-id: file:///home/lennart/svn/public/avahi/branches/federico@1657 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-core/wide-area.c')
-rw-r--r--avahi-core/wide-area.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/avahi-core/wide-area.c b/avahi-core/wide-area.c
index 6195a03..b134018 100644
--- a/avahi-core/wide-area.c
+++ b/avahi-core/wide-area.c
@@ -731,10 +731,12 @@ int avahi_wide_area_has_servers(AvahiWideAreaLookupEngine *e) {
AvahiRecord* tsig_sign_packet(const char* keyname, const char* key, unsigned keylength, AvahiDnsPacket *p, unsigned algorithm) {
AvahiRecord *r;
- unsigned char keyed_hash[EVP_MAX_MD_SIZE];
+ unsigned char keyed_hash[EVP_MAX_MD_SIZE]; /*used for signing */
HMAC_CTX ctx;
unsigned hash_length;
+ char canonic[AVAHI_DOMAIN_NAME_MAX]; /*used in conversions */
+
r = avahi_record_new_full(keyname, AVAHI_DNS_CLASS_ANY, AVAHI_DNS_TYPE_TSIG, 0);
if (!r) {
@@ -802,8 +804,14 @@ AvahiRecord* tsig_sign_packet(const char* keyname, const char* key, unsigned key
/*feed all the data to be hashed in */
/*HMAC_Update(&ctx, <data/>, <length/>);*/
- HMAC_Update(&ctx, p->data, p->size);
- /* HMAC_Update(&ctx, CONTINUE */
+ HMAC_Update(&ctx, p->data, p->size); /*packet in wire format*/
+
+ canonic = c_to_canonical_string(keyname);
+ HMAC_Update(&ctx, canonic, strlen(canonic) +1); /* key name in canonical wire format */
+
+ HMAC_Update(&ctx, uint16_to_canonical_string(AVAHI_DNS_CLASS_ANY), 2); /* class */
+/* HMAC_Update(&ctx,
+ HMAC_Update(&ctx, */
HMAC_Final(&ctx, keyed_hash, &hash_length);
HMAC_cleanup(&ctx);