From cabcb6ab6724e70f0071018d39b72a534e21a9d8 Mon Sep 17 00:00:00 2001 From: Federico Lucifredi Date: Thu, 17 Jan 2008 07:40:58 +0000 Subject: added DNSKEY resource record structure. git-svn-id: file:///home/lennart/svn/public/avahi/branches/federico2@1719 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe --- avahi-core/dns.c | 13 +++++++------ avahi-core/dns.h | 2 +- avahi-core/rr.h | 7 +++++++ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/avahi-core/dns.c b/avahi-core/dns.c index 29fe515..40c054f 100644 --- a/avahi-core/dns.c +++ b/avahi-core/dns.c @@ -860,8 +860,8 @@ size_t avahi_rdata_serialize(AvahiRecord *record, void *rdata, size_t max_size) } /* TODO: should this be located in this file? */ -/* r = avahi_get_local_zsk_pubkey() */ -AvahiRecord* avahi_get_local_zsk_pubkey(uint32_t ttl){ +/* r = avahi_get_local_zsk_pubkey("dynamic.endorfine.org", ) */ +AvahiRecord* avahi_get_local_zsk_pubkey(const unsigned char* keyname, uint32_t ttl){ AvahiRecord *r; @@ -874,18 +874,19 @@ AvahiRecord* avahi_get_local_zsk_pubkey(uint32_t ttl){ r->ttl = ttl; /* TTL of records associated with a signature MUST match the record's */ - r->flags = AVAHI_DNSSEC_DNSKEY_ZK_FLAG; /* bit 7 MUST be set to indicate DNSSEC key */ + r->data.dnskey.flags = AVAHI_DNSSEC_DNSKEY_ZK_FLAG; /* bit 7 MUST be set to indicate DNSSEC key */ - r->protocol = AVAHI_DNSSEC_PROTO; /* used for "compatibility" with KEY record */ + r->data.dnskey.protocol = AVAHI_DNSSEC_PROTO; /* used for "compatibility" with KEY record */ /* TODO: in merged version into upstream, key needs to be an external configurable pulled from /etc */ /* in the prototype, we just statically configure */ - r->algorithm = AVAHI_DNSSEC_KEY_SHA1; /* SHA1 is mandatory in the spec, but others do exist */ + r->data.dnskey.algorithm = AVAHI_DNSSEC_KEY_SHA1; /* SHA1 is mandatory in the spec, but others do exist */ /* statically using key 62051 which has 512b length */ /* 512b ZSK pubkey in base64 encoding */ - r->public_key = avahi_strndup("AQO/7WDOTMzPbRAEVbwYttMZztSn+exNoeNTsPqNXb6dtNqpRIdzwgfS3kBtaBtqiOGyJjts7qjXbQRX/QvvFuFF", strlen("AQO/7WDOTMzPbRAEVbwYttMZztSn+exNoeNTsPqNXb6dtNqpRIdzwgfS3kBtaBtqiOGyJjts7qjXbQRX/QvvFuFF")); + r->data.dnskey.public_key = avahi_strndup("AQO/7WDOTMzPbRAEVbwYttMZztSn+exNoeNTsPqNXb6dtNqpRIdzwgfS3kBtaBtqiOGyJjts7qjXbQRX/QvvFuFF", strlen("AQO/7WDOTMzPbRAEVbwYttMZztSn+exNoeNTsPqNXb6dtNqpRIdzwgfS3kBtaBtqiOGyJjts7qjXbQRX/QvvFuFF")); + /* TODO: explain unexpected gratuitous whitspace in dnssec-keygen output? */ return r; } diff --git a/avahi-core/dns.h b/avahi-core/dns.h index 3084720..3c22510 100644 --- a/avahi-core/dns.h +++ b/avahi-core/dns.h @@ -79,7 +79,7 @@ int avahi_dns_packet_skip(AvahiDnsPacket *p, size_t length); int avahi_dns_packet_is_empty(AvahiDnsPacket *p); size_t avahi_dns_packet_space(AvahiDnsPacket *p); -AvahiRecord* avahi_get_local_zsk_pubkey(uint32_t ttl); +AvahiRecord* avahi_get_local_zsk_pubkey(const unsigned char* keyname, uint32_t ttl); #define AVAHI_DNS_FIELD_ID 0 #define AVAHI_DNS_FIELD_FLAGS 1 diff --git a/avahi-core/rr.h b/avahi-core/rr.h index 5c4244f..146d4bf 100644 --- a/avahi-core/rr.h +++ b/avahi-core/rr.h @@ -117,6 +117,13 @@ typedef struct AvahiRecord { AvahiIPv6Address address; } aaaa; /**< Data for AAAA records */ + struct { + uint16_t flags; + uint8_t protocol; + uint8_t algorithm; + char *public_key; + } dnskey; /**data for DNSKEY records */ + } data; /**< Record data */ } AvahiRecord; -- cgit