lib/DNSSec.pm
changeset 0 43730d291dd5
child 1 48ba621bc598
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/DNSSec.pm	Thu Apr 02 13:09:38 2015 +0200
@@ -0,0 +1,39 @@
+package DNSSec;
+use v5.14;
+use strict;
+use warnings;
+use Net::DNS::Keyset;
+use base 'Exporter';
+
+our @EXPORT_OK = qw(keyset ksk keyinfo);
+
+my $resolver = Net::DNS::Resolver->new;
+$resolver->dnssec(1);
+
+sub keyset {
+    my $domain = shift;
+    my $keys = $resolver->query($domain => (DNSKEY => 'IN'))
+      or die $resolver->errorstring;
+
+    my $ks = Net::DNS::Keyset->new($keys)
+      or die $Net::DNS::Keyset::keyset_err;
+    return $ks;
+}
+
+sub ksk {
+    return grep { $_->flags & 0x1 } @_;
+}
+
+sub keyinfo {
+    my $ks = keyset shift;
+    my @keyinfo;
+    foreach my $k (ksk $ks->keys) {
+	my %keyinfo;
+	$keyinfo{key} = $k;
+	$keyinfo{digest} = Net::DNS::RR::DS->create($k, digtype => 'SHA-256');
+	push @keyinfo, \%keyinfo;
+    }
+    return @keyinfo;
+}
+
+1;