summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFederico Lucifredi <flucifredi@acm.org>2008-01-17 07:40:58 +0000
committerFederico Lucifredi <flucifredi@acm.org>2008-01-17 07:40:58 +0000
commitcabcb6ab6724e70f0071018d39b72a534e21a9d8 (patch)
treec52e31b47f3649bb079d28f3ea295305b880fb24
parent44f5496be8c0a584bdba371135bc9a7d4bd2ef52 (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.c13
-rw-r--r--avahi-core/dns.h2
-rw-r--r--avahi-core/rr.h7
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;