Skip to content

Commit ff90a55

Browse files
committed
-resolve: report incomplete DNSSEC support
1 parent e54a9e4 commit ff90a55

1 file changed

Lines changed: 13 additions & 2 deletions

File tree

dnscrypt-proxy/resolve.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
const (
1818
myResolverHost string = "resolver.dnscrypt.info."
1919
nonexistentName string = "nonexistent-zone.dnscrypt-test."
20+
bogusDNSSECName string = "dnssec-failed.org."
2021
)
2122

2223
func resolveQuery(server string, qName string, qType uint16, sendClientSubnet bool) (*dns.Msg, error) {
@@ -155,9 +156,19 @@ func Resolve(server string, name string, singleResolver bool) {
155156

156157
if response.Rcode == dns.RcodeNameError {
157158
fmt.Printf("DNSSEC : ")
158-
if response.AuthenticatedData {
159+
validatesDenial := response.AuthenticatedData
160+
rejectsBogus := false
161+
if bogus, err := resolveQuery(server, bogusDNSSECName, dns.TypeA, false); err == nil {
162+
rejectsBogus = bogus.Rcode == dns.RcodeServerFailure
163+
}
164+
switch {
165+
case validatesDenial && rejectsBogus:
159166
fmt.Println("yes, the resolver supports DNSSEC")
160-
} else {
167+
case rejectsBogus:
168+
fmt.Println("incomplete, the resolver rejects bogus signatures but doesn't validate authenticated denial of existence")
169+
case validatesDenial:
170+
fmt.Println("incomplete, the resolver validates authenticated denial of existence but accepts bogus signatures")
171+
default:
161172
fmt.Println("no, the resolver doesn't support DNSSEC")
162173
}
163174
}

0 commit comments

Comments
 (0)