Add key.ToDS as example too
This commit is contained in:
parent
07c4f74d85
commit
c4d74c34e2
|
@ -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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue