aboutsummaryrefslogtreecommitdiff
path: root/middleware/dnssec/dnskey.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/dnssec/dnskey.go')
-rw-r--r--middleware/dnssec/dnskey.go72
1 files changed, 0 insertions, 72 deletions
diff --git a/middleware/dnssec/dnskey.go b/middleware/dnssec/dnskey.go
deleted file mode 100644
index ce787ab54..000000000
--- a/middleware/dnssec/dnskey.go
+++ /dev/null
@@ -1,72 +0,0 @@
-package dnssec
-
-import (
- "crypto"
- "crypto/ecdsa"
- "crypto/rsa"
- "errors"
- "os"
- "time"
-
- "github.com/coredns/coredns/request"
-
- "github.com/miekg/dns"
-)
-
-// DNSKEY holds a DNSSEC public and private key used for on-the-fly signing.
-type DNSKEY struct {
- K *dns.DNSKEY
- s crypto.Signer
- keytag uint16
-}
-
-// ParseKeyFile read a DNSSEC keyfile as generated by dnssec-keygen or other
-// utilities. It adds ".key" for the public key and ".private" for the private key.
-func ParseKeyFile(pubFile, privFile string) (*DNSKEY, error) {
- f, e := os.Open(pubFile)
- if e != nil {
- return nil, e
- }
- k, e := dns.ReadRR(f, pubFile)
- if e != nil {
- return nil, e
- }
-
- f, e = os.Open(privFile)
- if e != nil {
- return nil, e
- }
- p, e := k.(*dns.DNSKEY).ReadPrivateKey(f, privFile)
- if e != nil {
- return nil, e
- }
-
- if v, ok := p.(*rsa.PrivateKey); ok {
- return &DNSKEY{k.(*dns.DNSKEY), v, k.(*dns.DNSKEY).KeyTag()}, nil
- }
- if v, ok := p.(*ecdsa.PrivateKey); ok {
- return &DNSKEY{k.(*dns.DNSKEY), v, k.(*dns.DNSKEY).KeyTag()}, nil
- }
- return &DNSKEY{k.(*dns.DNSKEY), nil, 0}, errors.New("no known? private key found")
-}
-
-// getDNSKEY returns the correct DNSKEY to the client. Signatures are added when do is true.
-func (d Dnssec) getDNSKEY(state request.Request, zone string, do bool) *dns.Msg {
- keys := make([]dns.RR, len(d.keys))
- for i, k := range d.keys {
- keys[i] = dns.Copy(k.K)
- keys[i].Header().Name = zone
- }
- m := new(dns.Msg)
- m.SetReply(state.Req)
- m.Answer = keys
- if !do {
- return m
- }
-
- incep, expir := incepExpir(time.Now().UTC())
- if sigs, err := d.sign(keys, zone, 3600, incep, expir); err == nil {
- m.Answer = append(m.Answer, sigs...)
- }
- return m
-}