Skip to content
A very simple DNSCrypt client library written in Go
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
xsecretbox
.codecov.yml
.gitignore
.gometalinter.json
.travis.yml
LICENSE
README.md
dnscrypt.go
dnscrypt_test.go
doc.go
go.mod
go.sum

README.md

Build Status Code Coverage Go Report Card Go Doc

DNSCrypt Client

This is a very simple DNSCrypt client library written in Go.

The idea is to let others use DNSCrypt resolvers in the same manner as we can use regular and DoT resolvers with miekg's DNS library. Unfortunately, I have not found an easy way to use dnscrypt-proxy as a dependency so here's why this library was created.

Usage

    // AdGuard DNS stamp
    stampStr := "sdns://AQIAAAAAAAAAFDE3Ni4xMDMuMTMwLjEzMDo1NDQzINErR_JS3PLCu_iZEIbq95zkSV2LFsigxDIuUso_OQhzIjIuZG5zY3J5cHQuZGVmYXVsdC5uczEuYWRndWFyZC5jb20"
    
    // Initializing the DNSCrypt client
    c := dnscrypt.Client{Proto: "udp", Timeout: 10 * time.Second}
    
    // Fetching and validating the server certificate
    serverInfo, rtt, err := client.Dial(stampStr)
    
    // Create a DNS request
    req := dns.Msg{}
    req.Id = dns.Id()
    req.RecursionDesired = true
    req.Question = []dns.Question{
        {Name: "google-public-dns-a.google.com.", Qtype: dns.TypeA, Qclass: dns.ClassINET},
    }
    
    // Get the DNS response
    reply, rtt, err := c.Exchange(&req, serverInfo)
You can’t perform that action at this time.