diff --git a/README.markdown b/README.markdown index c46f1d0c..a981ffb1 100644 --- a/README.markdown +++ b/README.markdown @@ -29,6 +29,7 @@ A not-so-up-to-date-list-that-may-be-actually-current: * https://github.com/chuangbo/jianbing-dictionary-dns/tree/master/golang * http://www.dns-lg.com/ * https://github.com/fcambus/rrda +* https://github.com/kenshinx/godns * more? # Features diff --git a/nsecx.go b/nsecx.go index c12545c1..8afe133f 100644 --- a/nsecx.go +++ b/nsecx.go @@ -11,12 +11,6 @@ import ( "strings" ) -const ( - _ = iota - _NSEC3_NXDOMAIN - _NSEC3_NODATA -) - type saltWireFmt struct { Salt string `dns:"size-hex"` } @@ -58,68 +52,3 @@ func HashName(label string, ha uint8, iter uint16, salt string) string { } return unpackBase32(nsec3) } - -// Implement the HashNames method of Denialer -func (rr *NSEC3) HashNames(domain string) { - rr.Header().Name = strings.ToLower(HashName(rr.Header().Name, rr.Hash, rr.Iterations, rr.Salt)) + "." + domain - rr.NextDomain = HashName(rr.NextDomain, rr.Hash, rr.Iterations, rr.Salt) -} - -// Implement the Match method of Denialer -func (rr *NSEC3) Match(domain string) bool { - return strings.ToUpper(SplitDomainName(rr.Header().Name)[0]) == strings.ToUpper(HashName(domain, rr.Hash, rr.Iterations, rr.Salt)) -} - -// Implement the Match method of Denialer -func (rr *NSEC) Match(domain string) bool { - return strings.ToUpper(rr.Header().Name) == strings.ToUpper(domain) -} - -func (rr *NSEC3) MatchType(rrtype uint16) bool { - for _, t := range rr.TypeBitMap { - if t == rrtype { - return true - } - if t > rrtype { - return false - } - } - return false -} - -func (rr *NSEC) MatchType(rrtype uint16) bool { - for _, t := range rr.TypeBitMap { - if t == rrtype { - return true - } - if t > rrtype { - return false - } - } - return false -} - -// Cover checks if domain is covered by the NSEC3 record. Domain must be given in plain text (i.e. not hashed) -// TODO(mg): this doesn't loop around -// TODO(mg): make a CoverHashed variant? -func (rr *NSEC3) Cover(domain string) bool { - hashdom := strings.ToUpper(HashName(domain, rr.Hash, rr.Iterations, rr.Salt)) - nextdom := strings.ToUpper(rr.NextDomain) - owner := strings.ToUpper(SplitDomainName(rr.Header().Name)[0]) // The hashed part - apex := strings.ToUpper(HashName(strings.Join(SplitDomainName(rr.Header().Name)[1:], "."), rr.Hash, rr.Iterations, rr.Salt)) + "." // The name of the zone - // if nextdomain equals the apex, it is considered The End. So in that case hashdom is always less then nextdomain - if hashdom > owner && nextdom == apex { - return true - } - - if hashdom > owner && hashdom <= nextdom { - return true - } - - return false -} - -// Cover checks if domain is covered by the NSEC record. Domain must be given in plain text. -func (rr *NSEC) Cover(domain string) bool { - return false -}