mirror of
https://github.com/DNSCrypt/dnscrypt-proxy.git
synced 2025-04-04 13:47:39 +03:00
Update miekg/dns to v1.1.37
This commit is contained in:
parent
6517bae0c3
commit
472ab609e4
18 changed files with 559 additions and 146 deletions
4
go.mod
4
go.mod
|
@ -17,11 +17,11 @@ require (
|
||||||
github.com/jedisct1/xsecretbox v0.0.0-20210102102453-4ecb2081017a
|
github.com/jedisct1/xsecretbox v0.0.0-20210102102453-4ecb2081017a
|
||||||
github.com/k-sone/critbitgo v1.4.0
|
github.com/k-sone/critbitgo v1.4.0
|
||||||
github.com/kardianos/service v1.2.0
|
github.com/kardianos/service v1.2.0
|
||||||
github.com/miekg/dns v1.1.35
|
github.com/miekg/dns v1.1.37
|
||||||
github.com/powerman/check v1.3.0
|
github.com/powerman/check v1.3.0
|
||||||
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad
|
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad
|
||||||
golang.org/x/net v0.0.0-20210119194325-5f4716e94777
|
golang.org/x/net v0.0.0-20210119194325-5f4716e94777
|
||||||
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4
|
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c
|
||||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0
|
gopkg.in/natefinch/lumberjack.v2 v2.0.0
|
||||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||||
)
|
)
|
||||||
|
|
10
go.sum
10
go.sum
|
@ -17,6 +17,7 @@ github.com/dchest/safefile v0.0.0-20151022103144-855e8d98f185 h1:3T8ZyTDp5QxTx3N
|
||||||
github.com/dchest/safefile v0.0.0-20151022103144-855e8d98f185/go.mod h1:cFRxtTwTOJkz2x3rQUNCYKWC93yP1VKjR8NUhqFxZNU=
|
github.com/dchest/safefile v0.0.0-20151022103144-855e8d98f185/go.mod h1:cFRxtTwTOJkz2x3rQUNCYKWC93yP1VKjR8NUhqFxZNU=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
@ -64,8 +65,8 @@ github.com/k-sone/critbitgo v1.4.0 h1:l71cTyBGeh6X5ATh6Fibgw3+rtNT80BA0uNNWgkPrb
|
||||||
github.com/k-sone/critbitgo v1.4.0/go.mod h1:7E6pyoyADnFxlUBEKcnfS49b7SUAQGMK+OAp/UQvo0s=
|
github.com/k-sone/critbitgo v1.4.0/go.mod h1:7E6pyoyADnFxlUBEKcnfS49b7SUAQGMK+OAp/UQvo0s=
|
||||||
github.com/kardianos/service v1.2.0 h1:bGuZ/epo3vrt8IPC7mnKQolqFeYJb7Cs8Rk4PSOBB/g=
|
github.com/kardianos/service v1.2.0 h1:bGuZ/epo3vrt8IPC7mnKQolqFeYJb7Cs8Rk4PSOBB/g=
|
||||||
github.com/kardianos/service v1.2.0/go.mod h1:CIMRFEJVL+0DS1a3Nx06NaMn4Dz63Ng6O7dl0qH0zVM=
|
github.com/kardianos/service v1.2.0/go.mod h1:CIMRFEJVL+0DS1a3Nx06NaMn4Dz63Ng6O7dl0qH0zVM=
|
||||||
github.com/miekg/dns v1.1.35 h1:oTfOaDH+mZkdcgdIjH6yBajRGtIwcwcaR+rt23ZSrJs=
|
github.com/miekg/dns v1.1.37 h1:+kky2ArpBqk0S/74RkwFjmKM9jja7AB1RN7VUuVq0iM=
|
||||||
github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
|
github.com/miekg/dns v1.1.37/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
@ -111,8 +112,8 @@ golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||||
golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201231184435-2d18734c6014/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201231184435-2d18734c6014/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k=
|
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk=
|
||||||
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
@ -147,6 +148,7 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
|
||||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
|
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
|
||||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
|
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
|
||||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
|
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
|
||||||
|
|
17
vendor/github.com/miekg/dns/.travis.yml
generated
vendored
17
vendor/github.com/miekg/dns/.travis.yml
generated
vendored
|
@ -1,17 +0,0 @@
|
||||||
language: go
|
|
||||||
sudo: false
|
|
||||||
|
|
||||||
go:
|
|
||||||
- 1.14.x
|
|
||||||
- 1.15.x
|
|
||||||
- tip
|
|
||||||
|
|
||||||
env:
|
|
||||||
- GO111MODULE=on
|
|
||||||
|
|
||||||
script:
|
|
||||||
- go generate ./... && test `git ls-files --modified | wc -l` = 0
|
|
||||||
- go test -race -v -bench=. -coverprofile=coverage.txt -covermode=atomic ./...
|
|
||||||
|
|
||||||
after_success:
|
|
||||||
- bash <(curl -s https://codecov.io/bash)
|
|
2
vendor/github.com/miekg/dns/README.md
generated
vendored
2
vendor/github.com/miekg/dns/README.md
generated
vendored
|
@ -69,6 +69,8 @@ A not-so-up-to-date-list-that-may-be-actually-current:
|
||||||
* https://zonedb.org/
|
* https://zonedb.org/
|
||||||
* https://router7.org/
|
* https://router7.org/
|
||||||
* https://github.com/fortio/dnsping
|
* https://github.com/fortio/dnsping
|
||||||
|
* https://github.com/Luzilla/dnsbl_exporter
|
||||||
|
* https://github.com/bodgit/tsig
|
||||||
|
|
||||||
Send pull request if you want to be listed here.
|
Send pull request if you want to be listed here.
|
||||||
|
|
||||||
|
|
27
vendor/github.com/miekg/dns/client.go
generated
vendored
27
vendor/github.com/miekg/dns/client.go
generated
vendored
|
@ -23,6 +23,7 @@ type Conn struct {
|
||||||
net.Conn // a net.Conn holding the connection
|
net.Conn // a net.Conn holding the connection
|
||||||
UDPSize uint16 // minimum receive buffer for UDP messages
|
UDPSize uint16 // minimum receive buffer for UDP messages
|
||||||
TsigSecret map[string]string // secret(s) for Tsig map[<zonename>]<base64 secret>, zonename must be in canonical form (lowercase, fqdn, see RFC 4034 Section 6.2)
|
TsigSecret map[string]string // secret(s) for Tsig map[<zonename>]<base64 secret>, zonename must be in canonical form (lowercase, fqdn, see RFC 4034 Section 6.2)
|
||||||
|
TsigProvider TsigProvider // An implementation of the TsigProvider interface. If defined it replaces TsigSecret and is used for all TSIG operations.
|
||||||
tsigRequestMAC string
|
tsigRequestMAC string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,6 +41,7 @@ type Client struct {
|
||||||
ReadTimeout time.Duration // net.Conn.SetReadTimeout value for connections, defaults to 2 seconds - overridden by Timeout when that value is non-zero
|
ReadTimeout time.Duration // net.Conn.SetReadTimeout value for connections, defaults to 2 seconds - overridden by Timeout when that value is non-zero
|
||||||
WriteTimeout time.Duration // net.Conn.SetWriteTimeout value for connections, defaults to 2 seconds - overridden by Timeout when that value is non-zero
|
WriteTimeout time.Duration // net.Conn.SetWriteTimeout value for connections, defaults to 2 seconds - overridden by Timeout when that value is non-zero
|
||||||
TsigSecret map[string]string // secret(s) for Tsig map[<zonename>]<base64 secret>, zonename must be in canonical form (lowercase, fqdn, see RFC 4034 Section 6.2)
|
TsigSecret map[string]string // secret(s) for Tsig map[<zonename>]<base64 secret>, zonename must be in canonical form (lowercase, fqdn, see RFC 4034 Section 6.2)
|
||||||
|
TsigProvider TsigProvider // An implementation of the TsigProvider interface. If defined it replaces TsigSecret and is used for all TSIG operations.
|
||||||
SingleInflight bool // if true suppress multiple outstanding queries for the same Qname, Qtype and Qclass
|
SingleInflight bool // if true suppress multiple outstanding queries for the same Qname, Qtype and Qclass
|
||||||
group singleflight
|
group singleflight
|
||||||
}
|
}
|
||||||
|
@ -124,7 +126,6 @@ func (c *Client) Dial(address string) (conn *Conn, err error) {
|
||||||
// of 512 bytes
|
// of 512 bytes
|
||||||
// To specify a local address or a timeout, the caller has to set the `Client.Dialer`
|
// To specify a local address or a timeout, the caller has to set the `Client.Dialer`
|
||||||
// attribute appropriately
|
// attribute appropriately
|
||||||
|
|
||||||
func (c *Client) Exchange(m *Msg, address string) (r *Msg, rtt time.Duration, err error) {
|
func (c *Client) Exchange(m *Msg, address string) (r *Msg, rtt time.Duration, err error) {
|
||||||
co, err := c.Dial(address)
|
co, err := c.Dial(address)
|
||||||
|
|
||||||
|
@ -176,7 +177,7 @@ func (c *Client) exchange(m *Msg, co *Conn) (r *Msg, rtt time.Duration, err erro
|
||||||
co.UDPSize = c.UDPSize
|
co.UDPSize = c.UDPSize
|
||||||
}
|
}
|
||||||
|
|
||||||
co.TsigSecret = c.TsigSecret
|
co.TsigSecret, co.TsigProvider = c.TsigSecret, c.TsigProvider
|
||||||
t := time.Now()
|
t := time.Now()
|
||||||
// write with the appropriate write timeout
|
// write with the appropriate write timeout
|
||||||
co.SetWriteDeadline(t.Add(c.getTimeoutForRequest(c.writeTimeout())))
|
co.SetWriteDeadline(t.Add(c.getTimeoutForRequest(c.writeTimeout())))
|
||||||
|
@ -223,11 +224,15 @@ func (co *Conn) ReadMsg() (*Msg, error) {
|
||||||
return m, err
|
return m, err
|
||||||
}
|
}
|
||||||
if t := m.IsTsig(); t != nil {
|
if t := m.IsTsig(); t != nil {
|
||||||
if _, ok := co.TsigSecret[t.Hdr.Name]; !ok {
|
if co.TsigProvider != nil {
|
||||||
return m, ErrSecret
|
err = tsigVerifyProvider(p, co.TsigProvider, co.tsigRequestMAC, false)
|
||||||
|
} else {
|
||||||
|
if _, ok := co.TsigSecret[t.Hdr.Name]; !ok {
|
||||||
|
return m, ErrSecret
|
||||||
|
}
|
||||||
|
// Need to work on the original message p, as that was used to calculate the tsig.
|
||||||
|
err = TsigVerify(p, co.TsigSecret[t.Hdr.Name], co.tsigRequestMAC, false)
|
||||||
}
|
}
|
||||||
// Need to work on the original message p, as that was used to calculate the tsig.
|
|
||||||
err = TsigVerify(p, co.TsigSecret[t.Hdr.Name], co.tsigRequestMAC, false)
|
|
||||||
}
|
}
|
||||||
return m, err
|
return m, err
|
||||||
}
|
}
|
||||||
|
@ -305,10 +310,14 @@ func (co *Conn) WriteMsg(m *Msg) (err error) {
|
||||||
var out []byte
|
var out []byte
|
||||||
if t := m.IsTsig(); t != nil {
|
if t := m.IsTsig(); t != nil {
|
||||||
mac := ""
|
mac := ""
|
||||||
if _, ok := co.TsigSecret[t.Hdr.Name]; !ok {
|
if co.TsigProvider != nil {
|
||||||
return ErrSecret
|
out, mac, err = tsigGenerateProvider(m, co.TsigProvider, co.tsigRequestMAC, false)
|
||||||
|
} else {
|
||||||
|
if _, ok := co.TsigSecret[t.Hdr.Name]; !ok {
|
||||||
|
return ErrSecret
|
||||||
|
}
|
||||||
|
out, mac, err = TsigGenerate(m, co.TsigSecret[t.Hdr.Name], co.tsigRequestMAC, false)
|
||||||
}
|
}
|
||||||
out, mac, err = TsigGenerate(m, co.TsigSecret[t.Hdr.Name], co.tsigRequestMAC, false)
|
|
||||||
// Set for the next read, although only used in zone transfers
|
// Set for the next read, although only used in zone transfers
|
||||||
co.tsigRequestMAC = mac
|
co.tsigRequestMAC = mac
|
||||||
} else {
|
} else {
|
||||||
|
|
25
vendor/github.com/miekg/dns/dns.go
generated
vendored
25
vendor/github.com/miekg/dns/dns.go
generated
vendored
|
@ -1,6 +1,9 @@
|
||||||
package dns
|
package dns
|
||||||
|
|
||||||
import "strconv"
|
import (
|
||||||
|
"encoding/hex"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
year68 = 1 << 31 // For RFC1982 (Serial Arithmetic) calculations in 32 bits.
|
year68 = 1 << 31 // For RFC1982 (Serial Arithmetic) calculations in 32 bits.
|
||||||
|
@ -111,7 +114,7 @@ func (h *RR_Header) parse(c *zlexer, origin string) *ParseError {
|
||||||
|
|
||||||
// ToRFC3597 converts a known RR to the unknown RR representation from RFC 3597.
|
// ToRFC3597 converts a known RR to the unknown RR representation from RFC 3597.
|
||||||
func (rr *RFC3597) ToRFC3597(r RR) error {
|
func (rr *RFC3597) ToRFC3597(r RR) error {
|
||||||
buf := make([]byte, Len(r)*2)
|
buf := make([]byte, Len(r))
|
||||||
headerEnd, off, err := packRR(r, buf, 0, compressionMap{}, false)
|
headerEnd, off, err := packRR(r, buf, 0, compressionMap{}, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -126,9 +129,25 @@ func (rr *RFC3597) ToRFC3597(r RR) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = rr.unpack(buf, headerEnd)
|
_, err = rr.unpack(buf, headerEnd)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// fromRFC3597 converts an unknown RR representation from RFC 3597 to the known RR type.
|
||||||
|
func (rr *RFC3597) fromRFC3597(r RR) error {
|
||||||
|
*r.Header() = rr.Hdr
|
||||||
|
|
||||||
|
if len(rr.Rdata) == 0 {
|
||||||
|
// Dynamic update.
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// rr.pack requires an extra allocation and a copy so we just decode Rdata
|
||||||
|
// manually, it's simpler anyway.
|
||||||
|
msg, err := hex.DecodeString(rr.Rdata)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
_, err = r.unpack(msg, 0)
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
24
vendor/github.com/miekg/dns/doc.go
generated
vendored
24
vendor/github.com/miekg/dns/doc.go
generated
vendored
|
@ -194,6 +194,30 @@ request an AXFR for miek.nl. with TSIG key named "axfr." and secret
|
||||||
You can now read the records from the transfer as they come in. Each envelope
|
You can now read the records from the transfer as they come in. Each envelope
|
||||||
is checked with TSIG. If something is not correct an error is returned.
|
is checked with TSIG. If something is not correct an error is returned.
|
||||||
|
|
||||||
|
A custom TSIG implementation can be used. This requires additional code to
|
||||||
|
perform any session establishment and signature generation/verification. The
|
||||||
|
client must be configured with an implementation of the TsigProvider interface:
|
||||||
|
|
||||||
|
type Provider struct{}
|
||||||
|
|
||||||
|
func (*Provider) Generate(msg []byte, tsig *dns.TSIG) ([]byte, error) {
|
||||||
|
// Use tsig.Hdr.Name and tsig.Algorithm in your code to
|
||||||
|
// generate the MAC using msg as the payload.
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Provider) Verify(msg []byte, tsig *dns.TSIG) error {
|
||||||
|
// Use tsig.Hdr.Name and tsig.Algorithm in your code to verify
|
||||||
|
// that msg matches the value in tsig.MAC.
|
||||||
|
}
|
||||||
|
|
||||||
|
c := new(dns.Client)
|
||||||
|
c.TsigProvider = new(Provider)
|
||||||
|
m := new(dns.Msg)
|
||||||
|
m.SetQuestion("miek.nl.", dns.TypeMX)
|
||||||
|
m.SetTsig(keyname, dns.HmacSHA1, 300, time.Now().Unix())
|
||||||
|
...
|
||||||
|
// TSIG RR is calculated by calling your Generate method
|
||||||
|
|
||||||
Basic use pattern validating and replying to a message that has TSIG set.
|
Basic use pattern validating and replying to a message that has TSIG set.
|
||||||
|
|
||||||
server := &dns.Server{Addr: ":53", Net: "udp"}
|
server := &dns.Server{Addr: ":53", Net: "udp"}
|
||||||
|
|
4
vendor/github.com/miekg/dns/edns.go
generated
vendored
4
vendor/github.com/miekg/dns/edns.go
generated
vendored
|
@ -88,8 +88,8 @@ func (rr *OPT) len(off int, compression map[string]struct{}) int {
|
||||||
return l
|
return l
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rr *OPT) parse(c *zlexer, origin string) *ParseError {
|
func (*OPT) parse(c *zlexer, origin string) *ParseError {
|
||||||
panic("dns: internal error: parse should never be called on OPT")
|
return &ParseError{err: "OPT records do not have a presentation format"}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r1 *OPT) isDuplicate(r2 RR) bool { return false }
|
func (r1 *OPT) isDuplicate(r2 RR) bool { return false }
|
||||||
|
|
26
vendor/github.com/miekg/dns/generate.go
generated
vendored
26
vendor/github.com/miekg/dns/generate.go
generated
vendored
|
@ -75,10 +75,10 @@ func (zp *ZoneParser) generate(l lex) (RR, bool) {
|
||||||
r := &generateReader{
|
r := &generateReader{
|
||||||
s: s,
|
s: s,
|
||||||
|
|
||||||
cur: int(start),
|
cur: start,
|
||||||
start: int(start),
|
start: start,
|
||||||
end: int(end),
|
end: end,
|
||||||
step: int(step),
|
step: step,
|
||||||
|
|
||||||
file: zp.file,
|
file: zp.file,
|
||||||
lex: &l,
|
lex: &l,
|
||||||
|
@ -94,10 +94,10 @@ type generateReader struct {
|
||||||
s string
|
s string
|
||||||
si int
|
si int
|
||||||
|
|
||||||
cur int
|
cur int64
|
||||||
start int
|
start int64
|
||||||
end int
|
end int64
|
||||||
step int
|
step int64
|
||||||
|
|
||||||
mod bytes.Buffer
|
mod bytes.Buffer
|
||||||
|
|
||||||
|
@ -173,7 +173,7 @@ func (r *generateReader) ReadByte() (byte, error) {
|
||||||
return '$', nil
|
return '$', nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var offset int
|
var offset int64
|
||||||
|
|
||||||
// Search for { and }
|
// Search for { and }
|
||||||
if r.s[si+1] == '{' {
|
if r.s[si+1] == '{' {
|
||||||
|
@ -188,7 +188,7 @@ func (r *generateReader) ReadByte() (byte, error) {
|
||||||
if errMsg != "" {
|
if errMsg != "" {
|
||||||
return 0, r.parseError(errMsg, si+3+sep)
|
return 0, r.parseError(errMsg, si+3+sep)
|
||||||
}
|
}
|
||||||
if r.start+offset < 0 || int64(r.end) + int64(offset) > 1<<31-1 {
|
if r.start+offset < 0 || r.end+offset > 1<<31-1 {
|
||||||
return 0, r.parseError("bad offset in $GENERATE", si+3+sep)
|
return 0, r.parseError("bad offset in $GENERATE", si+3+sep)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,7 +208,7 @@ func (r *generateReader) ReadByte() (byte, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert a $GENERATE modifier 0,0,d to something Printf can deal with.
|
// Convert a $GENERATE modifier 0,0,d to something Printf can deal with.
|
||||||
func modToPrintf(s string) (string, int, string) {
|
func modToPrintf(s string) (string, int64, string) {
|
||||||
// Modifier is { offset [ ,width [ ,base ] ] } - provide default
|
// Modifier is { offset [ ,width [ ,base ] ] } - provide default
|
||||||
// values for optional width and type, if necessary.
|
// values for optional width and type, if necessary.
|
||||||
var offStr, widthStr, base string
|
var offStr, widthStr, base string
|
||||||
|
@ -240,8 +240,8 @@ func modToPrintf(s string) (string, int, string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if width == 0 {
|
if width == 0 {
|
||||||
return "%" + base, int(offset), ""
|
return "%" + base, offset, ""
|
||||||
}
|
}
|
||||||
|
|
||||||
return "%0" + widthStr + base, int(offset), ""
|
return "%0" + widthStr + base, offset, ""
|
||||||
}
|
}
|
||||||
|
|
51
vendor/github.com/miekg/dns/scan.go
generated
vendored
51
vendor/github.com/miekg/dns/scan.go
generated
vendored
|
@ -577,10 +577,23 @@ func (zp *ZoneParser) Next() (RR, bool) {
|
||||||
|
|
||||||
st = zExpectRdata
|
st = zExpectRdata
|
||||||
case zExpectRdata:
|
case zExpectRdata:
|
||||||
var rr RR
|
var (
|
||||||
if newFn, ok := TypeToRR[h.Rrtype]; ok && canParseAsRR(h.Rrtype) {
|
rr RR
|
||||||
|
parseAsRFC3597 bool
|
||||||
|
)
|
||||||
|
if newFn, ok := TypeToRR[h.Rrtype]; ok {
|
||||||
rr = newFn()
|
rr = newFn()
|
||||||
*rr.Header() = *h
|
*rr.Header() = *h
|
||||||
|
|
||||||
|
// We may be parsing a known RR type using the RFC3597 format.
|
||||||
|
// If so, we handle that here in a generic way.
|
||||||
|
//
|
||||||
|
// This is also true for PrivateRR types which will have the
|
||||||
|
// RFC3597 parsing done for them and the Unpack method called
|
||||||
|
// to populate the RR instead of simply deferring to Parse.
|
||||||
|
if zp.c.Peek().token == "\\#" {
|
||||||
|
parseAsRFC3597 = true
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
rr = &RFC3597{Hdr: *h}
|
rr = &RFC3597{Hdr: *h}
|
||||||
}
|
}
|
||||||
|
@ -600,13 +613,18 @@ func (zp *ZoneParser) Next() (RR, bool) {
|
||||||
return zp.setParseError("unexpected newline", l)
|
return zp.setParseError("unexpected newline", l)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := rr.parse(zp.c, zp.origin); err != nil {
|
parseAsRR := rr
|
||||||
|
if parseAsRFC3597 {
|
||||||
|
parseAsRR = &RFC3597{Hdr: *h}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := parseAsRR.parse(zp.c, zp.origin); err != nil {
|
||||||
// err is a concrete *ParseError without the file field set.
|
// err is a concrete *ParseError without the file field set.
|
||||||
// The setParseError call below will construct a new
|
// The setParseError call below will construct a new
|
||||||
// *ParseError with file set to zp.file.
|
// *ParseError with file set to zp.file.
|
||||||
|
|
||||||
// If err.lex is nil than we have encounter an unknown RR type
|
// err.lex may be nil in which case we substitute our current
|
||||||
// in that case we substitute our current lex token.
|
// lex token.
|
||||||
if err.lex == (lex{}) {
|
if err.lex == (lex{}) {
|
||||||
return zp.setParseError(err.err, l)
|
return zp.setParseError(err.err, l)
|
||||||
}
|
}
|
||||||
|
@ -614,6 +632,13 @@ func (zp *ZoneParser) Next() (RR, bool) {
|
||||||
return zp.setParseError(err.err, err.lex)
|
return zp.setParseError(err.err, err.lex)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if parseAsRFC3597 {
|
||||||
|
err := parseAsRR.(*RFC3597).fromRFC3597(rr)
|
||||||
|
if err != nil {
|
||||||
|
return zp.setParseError(err.Error(), l)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return rr, true
|
return rr, true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -623,18 +648,6 @@ func (zp *ZoneParser) Next() (RR, bool) {
|
||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
|
|
||||||
// canParseAsRR returns true if the record type can be parsed as a
|
|
||||||
// concrete RR. It blacklists certain record types that must be parsed
|
|
||||||
// according to RFC 3597 because they lack a presentation format.
|
|
||||||
func canParseAsRR(rrtype uint16) bool {
|
|
||||||
switch rrtype {
|
|
||||||
case TypeANY, TypeNULL, TypeOPT, TypeTSIG:
|
|
||||||
return false
|
|
||||||
default:
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type zlexer struct {
|
type zlexer struct {
|
||||||
br io.ByteReader
|
br io.ByteReader
|
||||||
|
|
||||||
|
@ -1290,7 +1303,7 @@ func appendOrigin(name, origin string) string {
|
||||||
|
|
||||||
// LOC record helper function
|
// LOC record helper function
|
||||||
func locCheckNorth(token string, latitude uint32) (uint32, bool) {
|
func locCheckNorth(token string, latitude uint32) (uint32, bool) {
|
||||||
if latitude > 90 * 1000 * 60 * 60 {
|
if latitude > 90*1000*60*60 {
|
||||||
return latitude, false
|
return latitude, false
|
||||||
}
|
}
|
||||||
switch token {
|
switch token {
|
||||||
|
@ -1304,7 +1317,7 @@ func locCheckNorth(token string, latitude uint32) (uint32, bool) {
|
||||||
|
|
||||||
// LOC record helper function
|
// LOC record helper function
|
||||||
func locCheckEast(token string, longitude uint32) (uint32, bool) {
|
func locCheckEast(token string, longitude uint32) (uint32, bool) {
|
||||||
if longitude > 180 * 1000 * 60 * 60 {
|
if longitude > 180*1000*60*60 {
|
||||||
return longitude, false
|
return longitude, false
|
||||||
}
|
}
|
||||||
switch token {
|
switch token {
|
||||||
|
|
2
vendor/github.com/miekg/dns/svcb.go
generated
vendored
2
vendor/github.com/miekg/dns/svcb.go
generated
vendored
|
@ -204,7 +204,7 @@ type SVCB struct {
|
||||||
Hdr RR_Header
|
Hdr RR_Header
|
||||||
Priority uint16
|
Priority uint16
|
||||||
Target string `dns:"domain-name"`
|
Target string `dns:"domain-name"`
|
||||||
Value []SVCBKeyValue `dns:"pairs"` // Value must be empty if Priority is non-zero.
|
Value []SVCBKeyValue `dns:"pairs"` // Value must be empty if Priority is zero.
|
||||||
}
|
}
|
||||||
|
|
||||||
// HTTPS RR. Everything valid for SVCB applies to HTTPS as well.
|
// HTTPS RR. Everything valid for SVCB applies to HTTPS as well.
|
||||||
|
|
122
vendor/github.com/miekg/dns/tsig.go
generated
vendored
122
vendor/github.com/miekg/dns/tsig.go
generated
vendored
|
@ -24,6 +24,56 @@ const (
|
||||||
HmacMD5 = "hmac-md5.sig-alg.reg.int." // Deprecated: HmacMD5 is no longer supported.
|
HmacMD5 = "hmac-md5.sig-alg.reg.int." // Deprecated: HmacMD5 is no longer supported.
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// TsigProvider provides the API to plug-in a custom TSIG implementation.
|
||||||
|
type TsigProvider interface {
|
||||||
|
// Generate is passed the DNS message to be signed and the partial TSIG RR. It returns the signature and nil, otherwise an error.
|
||||||
|
Generate(msg []byte, t *TSIG) ([]byte, error)
|
||||||
|
// Verify is passed the DNS message to be verified and the TSIG RR. If the signature is valid it will return nil, otherwise an error.
|
||||||
|
Verify(msg []byte, t *TSIG) error
|
||||||
|
}
|
||||||
|
|
||||||
|
type tsigHMACProvider string
|
||||||
|
|
||||||
|
func (key tsigHMACProvider) Generate(msg []byte, t *TSIG) ([]byte, error) {
|
||||||
|
// If we barf here, the caller is to blame
|
||||||
|
rawsecret, err := fromBase64([]byte(key))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var h hash.Hash
|
||||||
|
switch CanonicalName(t.Algorithm) {
|
||||||
|
case HmacSHA1:
|
||||||
|
h = hmac.New(sha1.New, rawsecret)
|
||||||
|
case HmacSHA224:
|
||||||
|
h = hmac.New(sha256.New224, rawsecret)
|
||||||
|
case HmacSHA256:
|
||||||
|
h = hmac.New(sha256.New, rawsecret)
|
||||||
|
case HmacSHA384:
|
||||||
|
h = hmac.New(sha512.New384, rawsecret)
|
||||||
|
case HmacSHA512:
|
||||||
|
h = hmac.New(sha512.New, rawsecret)
|
||||||
|
default:
|
||||||
|
return nil, ErrKeyAlg
|
||||||
|
}
|
||||||
|
h.Write(msg)
|
||||||
|
return h.Sum(nil), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (key tsigHMACProvider) Verify(msg []byte, t *TSIG) error {
|
||||||
|
b, err := key.Generate(msg, t)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
mac, err := hex.DecodeString(t.MAC)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if !hmac.Equal(b, mac) {
|
||||||
|
return ErrSig
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// TSIG is the RR the holds the transaction signature of a message.
|
// TSIG is the RR the holds the transaction signature of a message.
|
||||||
// See RFC 2845 and RFC 4635.
|
// See RFC 2845 and RFC 4635.
|
||||||
type TSIG struct {
|
type TSIG struct {
|
||||||
|
@ -56,8 +106,8 @@ func (rr *TSIG) String() string {
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rr *TSIG) parse(c *zlexer, origin string) *ParseError {
|
func (*TSIG) parse(c *zlexer, origin string) *ParseError {
|
||||||
panic("dns: internal error: parse should never be called on TSIG")
|
return &ParseError{err: "TSIG records do not have a presentation format"}
|
||||||
}
|
}
|
||||||
|
|
||||||
// The following values must be put in wireformat, so that the MAC can be calculated.
|
// The following values must be put in wireformat, so that the MAC can be calculated.
|
||||||
|
@ -98,14 +148,13 @@ type timerWireFmt struct {
|
||||||
// timersOnly is false.
|
// timersOnly is false.
|
||||||
// If something goes wrong an error is returned, otherwise it is nil.
|
// If something goes wrong an error is returned, otherwise it is nil.
|
||||||
func TsigGenerate(m *Msg, secret, requestMAC string, timersOnly bool) ([]byte, string, error) {
|
func TsigGenerate(m *Msg, secret, requestMAC string, timersOnly bool) ([]byte, string, error) {
|
||||||
|
return tsigGenerateProvider(m, tsigHMACProvider(secret), requestMAC, timersOnly)
|
||||||
|
}
|
||||||
|
|
||||||
|
func tsigGenerateProvider(m *Msg, provider TsigProvider, requestMAC string, timersOnly bool) ([]byte, string, error) {
|
||||||
if m.IsTsig() == nil {
|
if m.IsTsig() == nil {
|
||||||
panic("dns: TSIG not last RR in additional")
|
panic("dns: TSIG not last RR in additional")
|
||||||
}
|
}
|
||||||
// If we barf here, the caller is to blame
|
|
||||||
rawsecret, err := fromBase64([]byte(secret))
|
|
||||||
if err != nil {
|
|
||||||
return nil, "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
rr := m.Extra[len(m.Extra)-1].(*TSIG)
|
rr := m.Extra[len(m.Extra)-1].(*TSIG)
|
||||||
m.Extra = m.Extra[0 : len(m.Extra)-1] // kill the TSIG from the msg
|
m.Extra = m.Extra[0 : len(m.Extra)-1] // kill the TSIG from the msg
|
||||||
|
@ -119,25 +168,13 @@ func TsigGenerate(m *Msg, secret, requestMAC string, timersOnly bool) ([]byte, s
|
||||||
}
|
}
|
||||||
|
|
||||||
t := new(TSIG)
|
t := new(TSIG)
|
||||||
var h hash.Hash
|
|
||||||
switch CanonicalName(rr.Algorithm) {
|
|
||||||
case HmacSHA1:
|
|
||||||
h = hmac.New(sha1.New, rawsecret)
|
|
||||||
case HmacSHA224:
|
|
||||||
h = hmac.New(sha256.New224, rawsecret)
|
|
||||||
case HmacSHA256:
|
|
||||||
h = hmac.New(sha256.New, rawsecret)
|
|
||||||
case HmacSHA384:
|
|
||||||
h = hmac.New(sha512.New384, rawsecret)
|
|
||||||
case HmacSHA512:
|
|
||||||
h = hmac.New(sha512.New, rawsecret)
|
|
||||||
default:
|
|
||||||
return nil, "", ErrKeyAlg
|
|
||||||
}
|
|
||||||
h.Write(buf)
|
|
||||||
// Copy all TSIG fields except MAC and its size, which are filled using the computed digest.
|
// Copy all TSIG fields except MAC and its size, which are filled using the computed digest.
|
||||||
*t = *rr
|
*t = *rr
|
||||||
t.MAC = hex.EncodeToString(h.Sum(nil))
|
mac, err := provider.Generate(buf, rr)
|
||||||
|
if err != nil {
|
||||||
|
return nil, "", err
|
||||||
|
}
|
||||||
|
t.MAC = hex.EncodeToString(mac)
|
||||||
t.MACSize = uint16(len(t.MAC) / 2) // Size is half!
|
t.MACSize = uint16(len(t.MAC) / 2) // Size is half!
|
||||||
|
|
||||||
tbuf := make([]byte, Len(t))
|
tbuf := make([]byte, Len(t))
|
||||||
|
@ -156,49 +193,28 @@ func TsigGenerate(m *Msg, secret, requestMAC string, timersOnly bool) ([]byte, s
|
||||||
// If the signature does not validate err contains the
|
// If the signature does not validate err contains the
|
||||||
// error, otherwise it is nil.
|
// error, otherwise it is nil.
|
||||||
func TsigVerify(msg []byte, secret, requestMAC string, timersOnly bool) error {
|
func TsigVerify(msg []byte, secret, requestMAC string, timersOnly bool) error {
|
||||||
return tsigVerify(msg, secret, requestMAC, timersOnly, uint64(time.Now().Unix()))
|
return tsigVerify(msg, tsigHMACProvider(secret), requestMAC, timersOnly, uint64(time.Now().Unix()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func tsigVerifyProvider(msg []byte, provider TsigProvider, requestMAC string, timersOnly bool) error {
|
||||||
|
return tsigVerify(msg, provider, requestMAC, timersOnly, uint64(time.Now().Unix()))
|
||||||
}
|
}
|
||||||
|
|
||||||
// actual implementation of TsigVerify, taking the current time ('now') as a parameter for the convenience of tests.
|
// actual implementation of TsigVerify, taking the current time ('now') as a parameter for the convenience of tests.
|
||||||
func tsigVerify(msg []byte, secret, requestMAC string, timersOnly bool, now uint64) error {
|
func tsigVerify(msg []byte, provider TsigProvider, requestMAC string, timersOnly bool, now uint64) error {
|
||||||
rawsecret, err := fromBase64([]byte(secret))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
// Strip the TSIG from the incoming msg
|
// Strip the TSIG from the incoming msg
|
||||||
stripped, tsig, err := stripTsig(msg)
|
stripped, tsig, err := stripTsig(msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
msgMAC, err := hex.DecodeString(tsig.MAC)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
buf, err := tsigBuffer(stripped, tsig, requestMAC, timersOnly)
|
buf, err := tsigBuffer(stripped, tsig, requestMAC, timersOnly)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var h hash.Hash
|
if err := provider.Verify(buf, tsig); err != nil {
|
||||||
switch CanonicalName(tsig.Algorithm) {
|
return err
|
||||||
case HmacSHA1:
|
|
||||||
h = hmac.New(sha1.New, rawsecret)
|
|
||||||
case HmacSHA224:
|
|
||||||
h = hmac.New(sha256.New224, rawsecret)
|
|
||||||
case HmacSHA256:
|
|
||||||
h = hmac.New(sha256.New, rawsecret)
|
|
||||||
case HmacSHA384:
|
|
||||||
h = hmac.New(sha512.New384, rawsecret)
|
|
||||||
case HmacSHA512:
|
|
||||||
h = hmac.New(sha512.New, rawsecret)
|
|
||||||
default:
|
|
||||||
return ErrKeyAlg
|
|
||||||
}
|
|
||||||
h.Write(buf)
|
|
||||||
if !hmac.Equal(h.Sum(nil), msgMAC) {
|
|
||||||
return ErrSig
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fudge factor works both ways. A message can arrive before it was signed because
|
// Fudge factor works both ways. A message can arrive before it was signed because
|
||||||
|
|
8
vendor/github.com/miekg/dns/types.go
generated
vendored
8
vendor/github.com/miekg/dns/types.go
generated
vendored
|
@ -245,8 +245,8 @@ type ANY struct {
|
||||||
|
|
||||||
func (rr *ANY) String() string { return rr.Hdr.String() }
|
func (rr *ANY) String() string { return rr.Hdr.String() }
|
||||||
|
|
||||||
func (rr *ANY) parse(c *zlexer, origin string) *ParseError {
|
func (*ANY) parse(c *zlexer, origin string) *ParseError {
|
||||||
panic("dns: internal error: parse should never be called on ANY")
|
return &ParseError{err: "ANY records do not have a presentation format"}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NULL RR. See RFC 1035.
|
// NULL RR. See RFC 1035.
|
||||||
|
@ -260,8 +260,8 @@ func (rr *NULL) String() string {
|
||||||
return ";" + rr.Hdr.String() + rr.Data
|
return ";" + rr.Hdr.String() + rr.Data
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rr *NULL) parse(c *zlexer, origin string) *ParseError {
|
func (*NULL) parse(c *zlexer, origin string) *ParseError {
|
||||||
panic("dns: internal error: parse should never be called on NULL")
|
return &ParseError{err: "NULL records do not have a presentation format"}
|
||||||
}
|
}
|
||||||
|
|
||||||
// CNAME RR. See RFC 1034.
|
// CNAME RR. See RFC 1034.
|
||||||
|
|
2
vendor/github.com/miekg/dns/version.go
generated
vendored
2
vendor/github.com/miekg/dns/version.go
generated
vendored
|
@ -3,7 +3,7 @@ package dns
|
||||||
import "fmt"
|
import "fmt"
|
||||||
|
|
||||||
// Version is current version of this library.
|
// Version is current version of this library.
|
||||||
var Version = v{1, 1, 35}
|
var Version = v{1, 1, 37}
|
||||||
|
|
||||||
// v holds the version of this library.
|
// v holds the version of this library.
|
||||||
type v struct {
|
type v struct {
|
||||||
|
|
29
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
29
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
|
@ -22,6 +22,7 @@ type HWND uintptr
|
||||||
|
|
||||||
const (
|
const (
|
||||||
InvalidHandle = ^Handle(0)
|
InvalidHandle = ^Handle(0)
|
||||||
|
InvalidHWND = ^HWND(0)
|
||||||
|
|
||||||
// Flags for DefineDosDevice.
|
// Flags for DefineDosDevice.
|
||||||
DDD_EXACT_MATCH_ON_REMOVE = 0x00000004
|
DDD_EXACT_MATCH_ON_REMOVE = 0x00000004
|
||||||
|
@ -215,7 +216,7 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
||||||
//sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW
|
//sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW
|
||||||
//sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error)
|
//sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error)
|
||||||
//sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW
|
//sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW
|
||||||
//sys GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32) = user32.GetWindowThreadProcessId
|
//sys GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) = user32.GetWindowThreadProcessId
|
||||||
//sys GetShellWindow() (shellWindow HWND) = user32.GetShellWindow
|
//sys GetShellWindow() (shellWindow HWND) = user32.GetShellWindow
|
||||||
//sys MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW
|
//sys MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW
|
||||||
//sys ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx
|
//sys ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx
|
||||||
|
@ -264,19 +265,29 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
||||||
//sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect
|
//sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect
|
||||||
//sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile
|
//sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile
|
||||||
//sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW
|
//sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW
|
||||||
|
//sys FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW
|
||||||
|
//sys FindNextChangeNotification(handle Handle) (err error)
|
||||||
|
//sys FindCloseChangeNotification(handle Handle) (err error)
|
||||||
//sys CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW
|
//sys CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW
|
||||||
//sys CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) = crypt32.CertOpenStore
|
//sys CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) = crypt32.CertOpenStore
|
||||||
//sys CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore
|
//sys CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore
|
||||||
//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore
|
//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore
|
||||||
//sys CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore
|
//sys CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore
|
||||||
//sys CertDeleteCertificateFromStore(certContext *CertContext) (err error) = crypt32.CertDeleteCertificateFromStore
|
//sys CertDeleteCertificateFromStore(certContext *CertContext) (err error) = crypt32.CertDeleteCertificateFromStore
|
||||||
//sys CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) = crypt32.CertDuplicateCertificateContext
|
//sys CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) = crypt32.CertDuplicateCertificateContext
|
||||||
//sys PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) = crypt32.PFXImportCertStore
|
//sys PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) = crypt32.PFXImportCertStore
|
||||||
//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain
|
//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain
|
||||||
//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain
|
//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain
|
||||||
//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext
|
//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext
|
||||||
//sys CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext
|
//sys CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext
|
||||||
//sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy
|
//sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy
|
||||||
|
//sys CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) = crypt32.CertGetNameStringW
|
||||||
|
//sys CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) = crypt32.CertFindExtension
|
||||||
|
//sys CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) = crypt32.CryptQueryObject
|
||||||
|
//sys CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) = crypt32.CryptDecodeObject
|
||||||
|
//sys CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptProtectData
|
||||||
|
//sys CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptUnprotectData
|
||||||
|
//sys WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) = wintrust.WinVerifyTrustEx
|
||||||
//sys RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW
|
//sys RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW
|
||||||
//sys RegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey
|
//sys RegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey
|
||||||
//sys RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW
|
//sys RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW
|
||||||
|
|
240
vendor/golang.org/x/sys/windows/types_windows.go
generated
vendored
240
vendor/golang.org/x/sys/windows/types_windows.go
generated
vendored
|
@ -227,7 +227,7 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// filters for ReadDirectoryChangesW
|
// filters for ReadDirectoryChangesW and FindFirstChangeNotificationW
|
||||||
FILE_NOTIFY_CHANGE_FILE_NAME = 0x001
|
FILE_NOTIFY_CHANGE_FILE_NAME = 0x001
|
||||||
FILE_NOTIFY_CHANGE_DIR_NAME = 0x002
|
FILE_NOTIFY_CHANGE_DIR_NAME = 0x002
|
||||||
FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004
|
FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004
|
||||||
|
@ -427,6 +427,67 @@ const (
|
||||||
CERT_CLOSE_STORE_FORCE_FLAG = 0x00000001
|
CERT_CLOSE_STORE_FORCE_FLAG = 0x00000001
|
||||||
CERT_CLOSE_STORE_CHECK_FLAG = 0x00000002
|
CERT_CLOSE_STORE_CHECK_FLAG = 0x00000002
|
||||||
|
|
||||||
|
/* CryptQueryObject object type */
|
||||||
|
CERT_QUERY_OBJECT_FILE = 1
|
||||||
|
CERT_QUERY_OBJECT_BLOB = 2
|
||||||
|
|
||||||
|
/* CryptQueryObject content type flags */
|
||||||
|
CERT_QUERY_CONTENT_CERT = 1
|
||||||
|
CERT_QUERY_CONTENT_CTL = 2
|
||||||
|
CERT_QUERY_CONTENT_CRL = 3
|
||||||
|
CERT_QUERY_CONTENT_SERIALIZED_STORE = 4
|
||||||
|
CERT_QUERY_CONTENT_SERIALIZED_CERT = 5
|
||||||
|
CERT_QUERY_CONTENT_SERIALIZED_CTL = 6
|
||||||
|
CERT_QUERY_CONTENT_SERIALIZED_CRL = 7
|
||||||
|
CERT_QUERY_CONTENT_PKCS7_SIGNED = 8
|
||||||
|
CERT_QUERY_CONTENT_PKCS7_UNSIGNED = 9
|
||||||
|
CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED = 10
|
||||||
|
CERT_QUERY_CONTENT_PKCS10 = 11
|
||||||
|
CERT_QUERY_CONTENT_PFX = 12
|
||||||
|
CERT_QUERY_CONTENT_CERT_PAIR = 13
|
||||||
|
CERT_QUERY_CONTENT_PFX_AND_LOAD = 14
|
||||||
|
CERT_QUERY_CONTENT_FLAG_CERT = (1 << CERT_QUERY_CONTENT_CERT)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_CTL = (1 << CERT_QUERY_CONTENT_CTL)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_CRL = (1 << CERT_QUERY_CONTENT_CRL)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE = (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT = (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL = (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL = (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED = (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_PKCS10 = (1 << CERT_QUERY_CONTENT_PKCS10)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_PFX = (1 << CERT_QUERY_CONTENT_PFX)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_CERT_PAIR = (1 << CERT_QUERY_CONTENT_CERT_PAIR)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD = (1 << CERT_QUERY_CONTENT_PFX_AND_LOAD)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_ALL = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_CTL | CERT_QUERY_CONTENT_FLAG_CRL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED | CERT_QUERY_CONTENT_FLAG_PKCS10 | CERT_QUERY_CONTENT_FLAG_PFX | CERT_QUERY_CONTENT_FLAG_CERT_PAIR)
|
||||||
|
CERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED)
|
||||||
|
|
||||||
|
/* CryptQueryObject format type flags */
|
||||||
|
CERT_QUERY_FORMAT_BINARY = 1
|
||||||
|
CERT_QUERY_FORMAT_BASE64_ENCODED = 2
|
||||||
|
CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED = 3
|
||||||
|
CERT_QUERY_FORMAT_FLAG_BINARY = (1 << CERT_QUERY_FORMAT_BINARY)
|
||||||
|
CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED = (1 << CERT_QUERY_FORMAT_BASE64_ENCODED)
|
||||||
|
CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED = (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED)
|
||||||
|
CERT_QUERY_FORMAT_FLAG_ALL = (CERT_QUERY_FORMAT_FLAG_BINARY | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED)
|
||||||
|
|
||||||
|
/* CertGetNameString name types */
|
||||||
|
CERT_NAME_EMAIL_TYPE = 1
|
||||||
|
CERT_NAME_RDN_TYPE = 2
|
||||||
|
CERT_NAME_ATTR_TYPE = 3
|
||||||
|
CERT_NAME_SIMPLE_DISPLAY_TYPE = 4
|
||||||
|
CERT_NAME_FRIENDLY_DISPLAY_TYPE = 5
|
||||||
|
CERT_NAME_DNS_TYPE = 6
|
||||||
|
CERT_NAME_URL_TYPE = 7
|
||||||
|
CERT_NAME_UPN_TYPE = 8
|
||||||
|
|
||||||
|
/* CertGetNameString flags */
|
||||||
|
CERT_NAME_ISSUER_FLAG = 0x1
|
||||||
|
CERT_NAME_DISABLE_IE4_UTF8_FLAG = 0x10000
|
||||||
|
CERT_NAME_SEARCH_ALL_NAMES_FLAG = 0x2
|
||||||
|
CERT_NAME_STR_ENABLE_PUNYCODE_FLAG = 0x00200000
|
||||||
|
|
||||||
/* AuthType values for SSLExtraCertChainPolicyPara struct */
|
/* AuthType values for SSLExtraCertChainPolicyPara struct */
|
||||||
AUTHTYPE_CLIENT = 1
|
AUTHTYPE_CLIENT = 1
|
||||||
AUTHTYPE_SERVER = 2
|
AUTHTYPE_SERVER = 2
|
||||||
|
@ -437,6 +498,22 @@ const (
|
||||||
SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200
|
SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200
|
||||||
SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000
|
SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000
|
||||||
SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000
|
SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000
|
||||||
|
|
||||||
|
/* Flags for Crypt[Un]ProtectData */
|
||||||
|
CRYPTPROTECT_UI_FORBIDDEN = 0x1
|
||||||
|
CRYPTPROTECT_LOCAL_MACHINE = 0x4
|
||||||
|
CRYPTPROTECT_CRED_SYNC = 0x8
|
||||||
|
CRYPTPROTECT_AUDIT = 0x10
|
||||||
|
CRYPTPROTECT_NO_RECOVERY = 0x20
|
||||||
|
CRYPTPROTECT_VERIFY_PROTECTION = 0x40
|
||||||
|
CRYPTPROTECT_CRED_REGENERATE = 0x80
|
||||||
|
|
||||||
|
/* Flags for CryptProtectPromptStruct */
|
||||||
|
CRYPTPROTECT_PROMPT_ON_UNPROTECT = 1
|
||||||
|
CRYPTPROTECT_PROMPT_ON_PROTECT = 2
|
||||||
|
CRYPTPROTECT_PROMPT_RESERVED = 4
|
||||||
|
CRYPTPROTECT_PROMPT_STRONG = 8
|
||||||
|
CRYPTPROTECT_PROMPT_REQUIRE_STRONG = 16
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -459,10 +536,58 @@ const (
|
||||||
REALTIME_PRIORITY_CLASS = 0x00000100
|
REALTIME_PRIORITY_CLASS = 0x00000100
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/* wintrust.h constants for WinVerifyTrustEx */
|
||||||
|
const (
|
||||||
|
WTD_UI_ALL = 1
|
||||||
|
WTD_UI_NONE = 2
|
||||||
|
WTD_UI_NOBAD = 3
|
||||||
|
WTD_UI_NOGOOD = 4
|
||||||
|
|
||||||
|
WTD_REVOKE_NONE = 0
|
||||||
|
WTD_REVOKE_WHOLECHAIN = 1
|
||||||
|
|
||||||
|
WTD_CHOICE_FILE = 1
|
||||||
|
WTD_CHOICE_CATALOG = 2
|
||||||
|
WTD_CHOICE_BLOB = 3
|
||||||
|
WTD_CHOICE_SIGNER = 4
|
||||||
|
WTD_CHOICE_CERT = 5
|
||||||
|
|
||||||
|
WTD_STATEACTION_IGNORE = 0x00000000
|
||||||
|
WTD_STATEACTION_VERIFY = 0x00000010
|
||||||
|
WTD_STATEACTION_CLOSE = 0x00000002
|
||||||
|
WTD_STATEACTION_AUTO_CACHE = 0x00000003
|
||||||
|
WTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004
|
||||||
|
|
||||||
|
WTD_USE_IE4_TRUST_FLAG = 0x1
|
||||||
|
WTD_NO_IE4_CHAIN_FLAG = 0x2
|
||||||
|
WTD_NO_POLICY_USAGE_FLAG = 0x4
|
||||||
|
WTD_REVOCATION_CHECK_NONE = 0x10
|
||||||
|
WTD_REVOCATION_CHECK_END_CERT = 0x20
|
||||||
|
WTD_REVOCATION_CHECK_CHAIN = 0x40
|
||||||
|
WTD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x80
|
||||||
|
WTD_SAFER_FLAG = 0x100
|
||||||
|
WTD_HASH_ONLY_FLAG = 0x200
|
||||||
|
WTD_USE_DEFAULT_OSVER_CHECK = 0x400
|
||||||
|
WTD_LIFETIME_SIGNING_FLAG = 0x800
|
||||||
|
WTD_CACHE_ONLY_URL_RETRIEVAL = 0x1000
|
||||||
|
WTD_DISABLE_MD2_MD4 = 0x2000
|
||||||
|
WTD_MOTW = 0x4000
|
||||||
|
|
||||||
|
WTD_UICONTEXT_EXECUTE = 0
|
||||||
|
WTD_UICONTEXT_INSTALL = 1
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00")
|
OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00")
|
||||||
OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00")
|
OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00")
|
||||||
OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00")
|
OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00")
|
||||||
|
|
||||||
|
WINTRUST_ACTION_GENERIC_VERIFY_V2 = GUID{
|
||||||
|
Data1: 0xaac56b,
|
||||||
|
Data2: 0xcd44,
|
||||||
|
Data3: 0x11d0,
|
||||||
|
Data4: [8]byte{0x8c, 0xc2, 0x0, 0xc0, 0x4f, 0xc2, 0x95, 0xee},
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
// Pointer represents a pointer to an arbitrary Windows type.
|
// Pointer represents a pointer to an arbitrary Windows type.
|
||||||
|
@ -1051,7 +1176,57 @@ type MibIfRow struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type CertInfo struct {
|
type CertInfo struct {
|
||||||
// Not implemented
|
Version uint32
|
||||||
|
SerialNumber CryptIntegerBlob
|
||||||
|
SignatureAlgorithm CryptAlgorithmIdentifier
|
||||||
|
Issuer CertNameBlob
|
||||||
|
NotBefore Filetime
|
||||||
|
NotAfter Filetime
|
||||||
|
Subject CertNameBlob
|
||||||
|
SubjectPublicKeyInfo CertPublicKeyInfo
|
||||||
|
IssuerUniqueId CryptBitBlob
|
||||||
|
SubjectUniqueId CryptBitBlob
|
||||||
|
CountExtensions uint32
|
||||||
|
Extensions *CertExtension
|
||||||
|
}
|
||||||
|
|
||||||
|
type CertExtension struct {
|
||||||
|
ObjId *byte
|
||||||
|
Critical int32
|
||||||
|
Value CryptObjidBlob
|
||||||
|
}
|
||||||
|
|
||||||
|
type CryptAlgorithmIdentifier struct {
|
||||||
|
ObjId *byte
|
||||||
|
Parameters CryptObjidBlob
|
||||||
|
}
|
||||||
|
|
||||||
|
type CertPublicKeyInfo struct {
|
||||||
|
Algorithm CryptAlgorithmIdentifier
|
||||||
|
PublicKey CryptBitBlob
|
||||||
|
}
|
||||||
|
|
||||||
|
type DataBlob struct {
|
||||||
|
Size uint32
|
||||||
|
Data *byte
|
||||||
|
}
|
||||||
|
type CryptIntegerBlob DataBlob
|
||||||
|
type CryptUintBlob DataBlob
|
||||||
|
type CryptObjidBlob DataBlob
|
||||||
|
type CertNameBlob DataBlob
|
||||||
|
type CertRdnValueBlob DataBlob
|
||||||
|
type CertBlob DataBlob
|
||||||
|
type CrlBlob DataBlob
|
||||||
|
type CryptDataBlob DataBlob
|
||||||
|
type CryptHashBlob DataBlob
|
||||||
|
type CryptDigestBlob DataBlob
|
||||||
|
type CryptDerBlob DataBlob
|
||||||
|
type CryptAttrBlob DataBlob
|
||||||
|
|
||||||
|
type CryptBitBlob struct {
|
||||||
|
Size uint32
|
||||||
|
Data *byte
|
||||||
|
UnusedBits uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
type CertContext struct {
|
type CertContext struct {
|
||||||
|
@ -1157,9 +1332,64 @@ type CertChainPolicyStatus struct {
|
||||||
ExtraPolicyStatus Pointer
|
ExtraPolicyStatus Pointer
|
||||||
}
|
}
|
||||||
|
|
||||||
type CryptDataBlob struct {
|
type CertPolicyInfo struct {
|
||||||
Size uint32
|
Identifier *byte
|
||||||
Data *byte
|
CountQualifiers uint32
|
||||||
|
Qualifiers *CertPolicyQualifierInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
type CertPoliciesInfo struct {
|
||||||
|
Count uint32
|
||||||
|
PolicyInfos *CertPolicyInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
type CertPolicyQualifierInfo struct {
|
||||||
|
// Not implemented
|
||||||
|
}
|
||||||
|
|
||||||
|
type CertStrongSignPara struct {
|
||||||
|
Size uint32
|
||||||
|
InfoChoice uint32
|
||||||
|
InfoOrSerializedInfoOrOID unsafe.Pointer
|
||||||
|
}
|
||||||
|
|
||||||
|
type CryptProtectPromptStruct struct {
|
||||||
|
Size uint32
|
||||||
|
PromptFlags uint32
|
||||||
|
App HWND
|
||||||
|
Prompt *uint16
|
||||||
|
}
|
||||||
|
|
||||||
|
type WinTrustData struct {
|
||||||
|
Size uint32
|
||||||
|
PolicyCallbackData uintptr
|
||||||
|
SIPClientData uintptr
|
||||||
|
UIChoice uint32
|
||||||
|
RevocationChecks uint32
|
||||||
|
UnionChoice uint32
|
||||||
|
FileOrCatalogOrBlobOrSgnrOrCert unsafe.Pointer
|
||||||
|
StateAction uint32
|
||||||
|
StateData Handle
|
||||||
|
URLReference *uint16
|
||||||
|
ProvFlags uint32
|
||||||
|
UIContext uint32
|
||||||
|
SignatureSettings *WinTrustSignatureSettings
|
||||||
|
}
|
||||||
|
|
||||||
|
type WinTrustFileInfo struct {
|
||||||
|
Size uint32
|
||||||
|
FilePath *uint16
|
||||||
|
File Handle
|
||||||
|
KnownSubject *GUID
|
||||||
|
}
|
||||||
|
|
||||||
|
type WinTrustSignatureSettings struct {
|
||||||
|
Size uint32
|
||||||
|
Index uint32
|
||||||
|
Flags uint32
|
||||||
|
SecondarySigs uint32
|
||||||
|
VerifiedSigIndex uint32
|
||||||
|
CryptoPolicy *CertStrongSignPara
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
108
vendor/golang.org/x/sys/windows/zsyscall_windows.go
generated
vendored
108
vendor/golang.org/x/sys/windows/zsyscall_windows.go
generated
vendored
|
@ -51,6 +51,7 @@ var (
|
||||||
modshell32 = NewLazySystemDLL("shell32.dll")
|
modshell32 = NewLazySystemDLL("shell32.dll")
|
||||||
moduser32 = NewLazySystemDLL("user32.dll")
|
moduser32 = NewLazySystemDLL("user32.dll")
|
||||||
moduserenv = NewLazySystemDLL("userenv.dll")
|
moduserenv = NewLazySystemDLL("userenv.dll")
|
||||||
|
modwintrust = NewLazySystemDLL("wintrust.dll")
|
||||||
modws2_32 = NewLazySystemDLL("ws2_32.dll")
|
modws2_32 = NewLazySystemDLL("ws2_32.dll")
|
||||||
modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
|
modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
|
||||||
|
|
||||||
|
@ -145,12 +146,18 @@ var (
|
||||||
procCertDeleteCertificateFromStore = modcrypt32.NewProc("CertDeleteCertificateFromStore")
|
procCertDeleteCertificateFromStore = modcrypt32.NewProc("CertDeleteCertificateFromStore")
|
||||||
procCertDuplicateCertificateContext = modcrypt32.NewProc("CertDuplicateCertificateContext")
|
procCertDuplicateCertificateContext = modcrypt32.NewProc("CertDuplicateCertificateContext")
|
||||||
procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore")
|
procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore")
|
||||||
|
procCertFindExtension = modcrypt32.NewProc("CertFindExtension")
|
||||||
procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain")
|
procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain")
|
||||||
procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext")
|
procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext")
|
||||||
procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain")
|
procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain")
|
||||||
|
procCertGetNameStringW = modcrypt32.NewProc("CertGetNameStringW")
|
||||||
procCertOpenStore = modcrypt32.NewProc("CertOpenStore")
|
procCertOpenStore = modcrypt32.NewProc("CertOpenStore")
|
||||||
procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW")
|
procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW")
|
||||||
procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
|
procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
|
||||||
|
procCryptDecodeObject = modcrypt32.NewProc("CryptDecodeObject")
|
||||||
|
procCryptProtectData = modcrypt32.NewProc("CryptProtectData")
|
||||||
|
procCryptQueryObject = modcrypt32.NewProc("CryptQueryObject")
|
||||||
|
procCryptUnprotectData = modcrypt32.NewProc("CryptUnprotectData")
|
||||||
procPFXImportCertStore = modcrypt32.NewProc("PFXImportCertStore")
|
procPFXImportCertStore = modcrypt32.NewProc("PFXImportCertStore")
|
||||||
procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W")
|
procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W")
|
||||||
procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W")
|
procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W")
|
||||||
|
@ -183,9 +190,12 @@ var (
|
||||||
procDuplicateHandle = modkernel32.NewProc("DuplicateHandle")
|
procDuplicateHandle = modkernel32.NewProc("DuplicateHandle")
|
||||||
procExitProcess = modkernel32.NewProc("ExitProcess")
|
procExitProcess = modkernel32.NewProc("ExitProcess")
|
||||||
procFindClose = modkernel32.NewProc("FindClose")
|
procFindClose = modkernel32.NewProc("FindClose")
|
||||||
|
procFindCloseChangeNotification = modkernel32.NewProc("FindCloseChangeNotification")
|
||||||
|
procFindFirstChangeNotificationW = modkernel32.NewProc("FindFirstChangeNotificationW")
|
||||||
procFindFirstFileW = modkernel32.NewProc("FindFirstFileW")
|
procFindFirstFileW = modkernel32.NewProc("FindFirstFileW")
|
||||||
procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW")
|
procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW")
|
||||||
procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW")
|
procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW")
|
||||||
|
procFindNextChangeNotification = modkernel32.NewProc("FindNextChangeNotification")
|
||||||
procFindNextFileW = modkernel32.NewProc("FindNextFileW")
|
procFindNextFileW = modkernel32.NewProc("FindNextFileW")
|
||||||
procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW")
|
procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW")
|
||||||
procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW")
|
procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW")
|
||||||
|
@ -347,6 +357,7 @@ var (
|
||||||
procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock")
|
procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock")
|
||||||
procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock")
|
procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock")
|
||||||
procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW")
|
procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW")
|
||||||
|
procWinVerifyTrustEx = modwintrust.NewProc("WinVerifyTrustEx")
|
||||||
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
||||||
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
||||||
procWSACleanup = modws2_32.NewProc("WSACleanup")
|
procWSACleanup = modws2_32.NewProc("WSACleanup")
|
||||||
|
@ -1199,6 +1210,12 @@ func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (contex
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) {
|
||||||
|
r0, _, _ := syscall.Syscall(procCertFindExtension.Addr(), 3, uintptr(unsafe.Pointer(objId)), uintptr(countExtensions), uintptr(unsafe.Pointer(extensions)))
|
||||||
|
ret = (*CertExtension)(unsafe.Pointer(r0))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func CertFreeCertificateChain(ctx *CertChainContext) {
|
func CertFreeCertificateChain(ctx *CertChainContext) {
|
||||||
syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
|
syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
|
||||||
return
|
return
|
||||||
|
@ -1220,6 +1237,12 @@ func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, a
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) {
|
||||||
|
r0, _, _ := syscall.Syscall6(procCertGetNameStringW.Addr(), 6, uintptr(unsafe.Pointer(certContext)), uintptr(nameType), uintptr(flags), uintptr(typePara), uintptr(unsafe.Pointer(name)), uintptr(size))
|
||||||
|
chars = uint32(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
|
func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
|
||||||
r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
|
r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
|
||||||
handle = Handle(r0)
|
handle = Handle(r0)
|
||||||
|
@ -1246,6 +1269,38 @@ func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall9(procCryptDecodeObject.Addr(), 7, uintptr(encodingType), uintptr(unsafe.Pointer(structType)), uintptr(unsafe.Pointer(encodedBytes)), uintptr(lenEncodedBytes), uintptr(flags), uintptr(decoded), uintptr(unsafe.Pointer(decodedLen)), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall9(procCryptProtectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall12(procCryptQueryObject.Addr(), 11, uintptr(objectType), uintptr(object), uintptr(expectedContentTypeFlags), uintptr(expectedFormatTypeFlags), uintptr(flags), uintptr(unsafe.Pointer(msgAndCertEncodingType)), uintptr(unsafe.Pointer(contentType)), uintptr(unsafe.Pointer(formatType)), uintptr(unsafe.Pointer(certStore)), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(context)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall9(procCryptUnprotectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) {
|
func PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) {
|
||||||
r0, _, e1 := syscall.Syscall(procPFXImportCertStore.Addr(), 3, uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags))
|
r0, _, e1 := syscall.Syscall(procPFXImportCertStore.Addr(), 3, uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags))
|
||||||
store = Handle(r0)
|
store = Handle(r0)
|
||||||
|
@ -1525,6 +1580,36 @@ func FindClose(handle Handle) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func FindCloseChangeNotification(handle Handle) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procFindCloseChangeNotification.Addr(), 1, uintptr(handle), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {
|
||||||
|
var _p0 *uint16
|
||||||
|
_p0, err = syscall.UTF16PtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return _FindFirstChangeNotification(_p0, watchSubtree, notifyFilter)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _FindFirstChangeNotification(path *uint16, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {
|
||||||
|
var _p1 uint32
|
||||||
|
if watchSubtree {
|
||||||
|
_p1 = 1
|
||||||
|
}
|
||||||
|
r0, _, e1 := syscall.Syscall(procFindFirstChangeNotificationW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(_p1), uintptr(notifyFilter))
|
||||||
|
handle = Handle(r0)
|
||||||
|
if handle == InvalidHandle {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
|
func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
|
||||||
r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
|
r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
|
||||||
handle = Handle(r0)
|
handle = Handle(r0)
|
||||||
|
@ -1552,6 +1637,14 @@ func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, er
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func FindNextChangeNotification(handle Handle) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procFindNextChangeNotification.Addr(), 1, uintptr(handle), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func findNextFile1(handle Handle, data *win32finddata1) (err error) {
|
func findNextFile1(handle Handle, data *win32finddata1) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
|
r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
|
@ -2904,9 +2997,12 @@ func GetShellWindow() (shellWindow HWND) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32) {
|
func GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) {
|
||||||
r0, _, _ := syscall.Syscall(procGetWindowThreadProcessId.Addr(), 2, uintptr(hwnd), uintptr(unsafe.Pointer(pid)), 0)
|
r0, _, e1 := syscall.Syscall(procGetWindowThreadProcessId.Addr(), 2, uintptr(hwnd), uintptr(unsafe.Pointer(pid)), 0)
|
||||||
tid = uint32(r0)
|
tid = uint32(r0)
|
||||||
|
if tid == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2947,6 +3043,14 @@ func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) {
|
||||||
|
r0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data)))
|
||||||
|
if r0 != 0 {
|
||||||
|
ret = syscall.Errno(r0)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func FreeAddrInfoW(addrinfo *AddrinfoW) {
|
func FreeAddrInfoW(addrinfo *AddrinfoW) {
|
||||||
syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
|
syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
|
||||||
return
|
return
|
||||||
|
|
4
vendor/modules.txt
vendored
4
vendor/modules.txt
vendored
|
@ -57,7 +57,7 @@ github.com/k-sone/critbitgo
|
||||||
# github.com/kardianos/service v1.2.0
|
# github.com/kardianos/service v1.2.0
|
||||||
## explicit
|
## explicit
|
||||||
github.com/kardianos/service
|
github.com/kardianos/service
|
||||||
# github.com/miekg/dns v1.1.35
|
# github.com/miekg/dns v1.1.37
|
||||||
## explicit
|
## explicit
|
||||||
github.com/miekg/dns
|
github.com/miekg/dns
|
||||||
# github.com/pkg/errors v0.9.1
|
# github.com/pkg/errors v0.9.1
|
||||||
|
@ -94,7 +94,7 @@ golang.org/x/net/internal/socks
|
||||||
golang.org/x/net/ipv4
|
golang.org/x/net/ipv4
|
||||||
golang.org/x/net/ipv6
|
golang.org/x/net/ipv6
|
||||||
golang.org/x/net/proxy
|
golang.org/x/net/proxy
|
||||||
# golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4
|
# golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c
|
||||||
## explicit
|
## explicit
|
||||||
golang.org/x/sys/cpu
|
golang.org/x/sys/cpu
|
||||||
golang.org/x/sys/internal/unsafeheader
|
golang.org/x/sys/internal/unsafeheader
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue