diff options
author | Federico Lucifredi <flucifredi@acm.org> | 2008-01-17 07:40:58 +0000 |
---|---|---|
committer | Federico Lucifredi <flucifredi@acm.org> | 2008-01-17 07:40:58 +0000 |
commit | cabcb6ab6724e70f0071018d39b72a534e21a9d8 (patch) | |
tree | c52e31b47f3649bb079d28f3ea295305b880fb24 | |
parent | 44f5496be8c0a584bdba371135bc9a7d4bd2ef52 (diff) |
added DNSKEY resource record structure.
git-svn-id: file:///home/lennart/svn/public/avahi/branches/federico2@1719 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
-rw-r--r-- | avahi-core/dns.c | 13 | ||||
-rw-r--r-- | avahi-core/dns.h | 2 | ||||
-rw-r--r-- | 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(<ttl>) */ -AvahiRecord* avahi_get_local_zsk_pubkey(uint32_t ttl){ +/* r = avahi_get_local_zsk_pubkey("dynamic.endorfine.org", <ttl>) */ +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; |