From e663c16574b365eacf1dcade60e9d0ffbd3d5976 Mon Sep 17 00:00:00 2001 From: Federico Lucifredi Date: Mon, 28 Jan 2008 01:18:41 +0000 Subject: appending rdata for ZSK::pubkey. git-svn-id: file:///home/lennart/svn/public/avahi/branches/federico2@1743 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe --- avahi-core/query-sched.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/avahi-core/query-sched.c b/avahi-core/query-sched.c index 0125862..2cb24af 100644 --- a/avahi-core/query-sched.c +++ b/avahi-core/query-sched.c @@ -232,9 +232,11 @@ static int packet_add_query_job(AvahiQueryScheduler *s, AvahiDnsPacket *p, Avahi static void append_known_answers_and_send(AvahiQueryScheduler *s, AvahiDnsPacket *p) { AvahiKnownAnswer *ka; unsigned n; + char result; FILE fp; /* used to load the private keys */ EVP_PKEY *private_key; /* key used in signing */ + AvahiRecord *r; /* used to handle records */ assert(s); assert(p); @@ -262,6 +264,20 @@ static void append_known_answers_and_send(AvahiQueryScheduler *s, AvahiDnsPacket /* append signature */ /* append trust record */ + + /* generate an AvahiRecord with the Public Key of the ZSK that the host uses to sign records */ + r = avahi_get_local_zsk_pubkey(ka->record->ttl); + + /*append the public key record */ + result = avahi_dns_packet_append_record(p, r, 0, 0); + + if (!result) { + avahi_log_error("appending of rdata failed."); + assert(result); + } + + avahi_dns_packet_set_field(p, AVAHI_DNS_FIELD_ARCOUNT, 1); /*increment record count for ARCOUNT */ + /* TODO: the trust record should be generated by an external admin tool and imported, we currently generate it on the fly here */ if(!(fp = fopen("/etc/avahi/46890.pem","r"))) { avahi_log_error("private key file open failed."); @@ -393,7 +409,7 @@ int avahi_query_scheduler_post(AvahiQueryScheduler *s, AvahiKey *key, int immedi if (avahi_timeval_compare(&tv, &qj->delivery) < 0) { /* If the new entry should be scheduled earlier, - * update the old entry */ + * update the old entry */ qj->delivery = tv; avahi_time_event_update(qj->time_event, &qj->delivery); } @@ -445,7 +461,7 @@ int avahi_query_scheduler_withdraw_by_id(AvahiQueryScheduler *s, unsigned id) { assert(s); - /* Very short lived queries can withdraw an already scheduled item + /* Very short lived queries can withdraw an already scheduled item * from the queue using this function, simply by passing the id * returned by avahi_query_scheduler_post(). */ -- cgit