summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFederico Lucifredi <flucifredi@acm.org>2008-01-28 01:53:45 +0000
committerFederico Lucifredi <flucifredi@acm.org>2008-01-28 01:53:45 +0000
commit6fcd179ecd7cd04a6170458e964d1ffd8e41a86d (patch)
treec011deb953b8909b35923876ad558f3f32525a1e
parent731c6749bfa3b0766a8646bc24777e117e4bee26 (diff)
importing code to append SEC signatures to records, part II.
git-svn-id: file:///home/lennart/svn/public/avahi/branches/federico2@1745 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
-rw-r--r--avahi-core/query-sched.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/avahi-core/query-sched.c b/avahi-core/query-sched.c
index 3a363f2..e6b2613 100644
--- a/avahi-core/query-sched.c
+++ b/avahi-core/query-sched.c
@@ -237,6 +237,7 @@ static void append_known_answers_and_send(AvahiQueryScheduler *s, AvahiDnsPacket
FILE *fp; /* used to load the private keys */
EVP_PKEY *private_key; /* key used in signing */
AvahiRecord *r; /* used to handle records */
+ AvahiRecord *s; /* used to handle signatures */
assert(s);
assert(p);
@@ -269,7 +270,7 @@ static void append_known_answers_and_send(AvahiQueryScheduler *s, AvahiDnsPacket
r = avahi_get_local_zsk_pubkey(ka->record->ttl);
printf("appended to record type %d named %s at entrypoint\n", ka->record->key->type, ka->record->key->name);
- /*append the public key record */
+ /*append the public key record DNSKEY RR */
result = avahi_dns_packet_append_record(p, r, 0, 0);
if (!result) {
@@ -292,6 +293,19 @@ static void append_known_answers_and_send(AvahiQueryScheduler *s, AvahiDnsPacket
fclose(fp);
+ /* generate RRSIG record for transitive trust */
+ s = avahi_dnssec_sign_record(r, ka->record->ttl, private_key)
+
+ /*append the transitive trust record RRSIG RR */
+ result = avahi_dns_packet_append_record(p, s, 0, 0);
+
+ if (!result) {
+ avahi_log_error("appending of rdata failed.");
+ assert(result);
+ }
+
+ avahi_dns_packet_set_field(p, AVAHI_DNS_FIELD_ARCOUNT, 2); /*increment record count for ARCOUNT */
+
avahi_interface_send_packet(s->interface, p);
avahi_dns_packet_free(p);