diff --git a/ex/key2ds/key2ds.go b/ex/key2ds/key2ds.go deleted file mode 100644 index b58d990b..00000000 --- a/ex/key2ds/key2ds.go +++ /dev/null @@ -1,43 +0,0 @@ -package main - -// Print the DNSKEY records of a domain as DS records -// Twist with all the other tools that can do this. Do -// this directly from the internet. -// (c) Miek Gieben - 2011 -import ( - "fmt" - "github.com/miekg/dns" - "os" -) - -func main() { - conf, err := dns.ClientConfigFromFile("/etc/resolv.conf") - if len(os.Args) != 2 || err != nil { - fmt.Printf("%s DOMAIN\n", os.Args[0]) - os.Exit(1) - } - m := new(dns.Msg) - m.SetQuestion(dns.Fqdn(os.Args[1]), dns.TypeDNSKEY) - m.SetEdns0(2048, true) - - c := new(dns.Client) - r, _ := c.Exchange(m, conf.Servers[0]+":"+conf.Port) - if r == nil { - fmt.Printf("*** no answer received for %s\n", os.Args[1]) - os.Exit(1) - } - - if r.Rcode != dns.RcodeSuccess { - fmt.Printf(" *** invalid answer name %s after DNSKEY query for %s\n", os.Args[1], os.Args[1]) - os.Exit(1) - } - for _, k := range r.Answer { - if key, ok := k.(*dns.RR_DNSKEY); ok { - key.Hdr.Ttl = 0 - for _, alg := range []int{dns.SHA1, dns.SHA256, dns.SHA384} { - ds := key.ToDS(alg) - fmt.Printf("%v; %d\n", ds, key.Flags) - } - } - } -} diff --git a/example_test.go b/example_test.go index ab6bd00b..507fff67 100644 --- a/example_test.go +++ b/example_test.go @@ -24,3 +24,30 @@ func ExampleRR_MX() { } } } + +// Retrieve the DNSKEY records of a zone and convert them +// to DS records for SHA1, SHA256 and SHA384. +func ExampleToDs(zone string) { + config, _ := ClientConfigFromFile("/etc/resolv.conf") + c := new(Client) + m := new(Msg) + if zone == "" { + zone = "miek.nl" + } + m.SetQuestion(Fqdn(zone), TypeDNSKEY) + m.SetEdns0(4096, true) + r, err := c.Exchange(m, config.Servers[0]+":"+config.Port) + if err != nil { + return + } + if r.Rcode != RcodeSuccess { + return + } + for _, k := range r.Answer { + if key, ok := k.(*RR_DNSKEY); ok { + for _, alg := range []int{SHA1, SHA256, SHA384} { + fmt.Printf("%s; %d\n", key.ToDS(alg).String(), key.Flags) + } + } + } +}