diff options
Diffstat (limited to 'plugin/dnssec/cache.go')
-rw-r--r-- | plugin/dnssec/cache.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/plugin/dnssec/cache.go b/plugin/dnssec/cache.go new file mode 100644 index 000000000..ea95b73b4 --- /dev/null +++ b/plugin/dnssec/cache.go @@ -0,0 +1,22 @@ +package dnssec + +import ( + "hash/fnv" + + "github.com/miekg/dns" +) + +// hash serializes the RRset and return a signature cache key. +func hash(rrs []dns.RR) uint32 { + h := fnv.New32() + buf := make([]byte, 256) + for _, r := range rrs { + off, err := dns.PackRR(r, buf, 0, nil, false) + if err == nil { + h.Write(buf[:off]) + } + } + + i := h.Sum32() + return i +} |