Documentation and make ParseKey private (parseKey)
This commit is contained in:
parent
d7400fd503
commit
9f3a1c1f13
10
dns.go
10
dns.go
|
@ -67,11 +67,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
Year68 = 2 << (32 - 1) // For RFC1982 (Serial Arithmetic) calculations in 32 bits.
|
Year68 = 1 << 32 // For RFC1982 (Serial Arithmetic) calculations in 32 bits.
|
||||||
DefaultMsgSize = 4096 // Standard default for larger than 512 packets.
|
DefaultMsgSize = 4096 // Standard default for larger than 512 packets.
|
||||||
UDPReceiveMsgSize = 360 // Default buffer size for servers receiving UDP packets.
|
UDPReceiveMsgSize = 360 // Default buffer size for servers receiving UDP packets.
|
||||||
MaxMsgSize = 65536 // Largest possible DNS packet.
|
MaxMsgSize = 65536 // Largest possible DNS packet.
|
||||||
DefaultTtl = 3600 // Default TTL.
|
DefaultTtl = 3600 // Default TTL.
|
||||||
)
|
)
|
||||||
|
|
||||||
// Error represents a DNS error
|
// Error represents a DNS error
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
// Copyright 2012 Miek Gieben. All rights reserved.
|
||||||
|
|
||||||
|
// DNSSEC
|
||||||
|
//
|
||||||
|
// DNSSEC (DNS Security Extension) adds a layer of security to the DNS. It
|
||||||
|
// uses public key cryptography to securely sign resource records. The
|
||||||
|
// public keys are stored in DNSKEY records and the signatures in RRSIG records.
|
||||||
package dns
|
package dns
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
6
kscan.go
6
kscan.go
|
@ -11,7 +11,7 @@ import (
|
||||||
|
|
||||||
// ReadPrivateKey reads a private key from the io.Reader q.
|
// ReadPrivateKey reads a private key from the io.Reader q.
|
||||||
func ReadPrivateKey(q io.Reader) (PrivateKey, error) {
|
func ReadPrivateKey(q io.Reader) (PrivateKey, error) {
|
||||||
m, e := ParseKey(q)
|
m, e := parseKey(q)
|
||||||
if m == nil {
|
if m == nil {
|
||||||
return nil, e
|
return nil, e
|
||||||
}
|
}
|
||||||
|
@ -89,9 +89,9 @@ func readPrivateKeyECDSA(m map[string]string) (PrivateKey, error) {
|
||||||
return p, nil
|
return p, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParseKey reads a private key from r. It returns a map[string]string,
|
// parseKey reads a private key from r. It returns a map[string]string,
|
||||||
// with the key-value pairs, or an error when the file is not correct.
|
// with the key-value pairs, or an error when the file is not correct.
|
||||||
func ParseKey(r io.Reader) (map[string]string, error) {
|
func parseKey(r io.Reader) (map[string]string, error) {
|
||||||
var s scanner.Scanner
|
var s scanner.Scanner
|
||||||
m := make(map[string]string)
|
m := make(map[string]string)
|
||||||
c := make(chan lex)
|
c := make(chan lex)
|
||||||
|
|
5
msg.go
5
msg.go
|
@ -175,6 +175,9 @@ var Rcode_str = map[int]string{
|
||||||
// PackDomainName packs a domain name s into msg[off:].
|
// PackDomainName packs a domain name s into msg[off:].
|
||||||
// Domain names are a sequence of counted strings
|
// Domain names are a sequence of counted strings
|
||||||
// split at the dots. They end with a zero-length string.
|
// split at the dots. They end with a zero-length string.
|
||||||
|
// If compression is want compress must be true and the compression
|
||||||
|
// map, needs to hold a mapping between domain names and offsets
|
||||||
|
// pointing into msg[].
|
||||||
func PackDomainName(s string, msg []byte, off int, compression map[string]int, compress bool) (off1 int, ok bool) {
|
func PackDomainName(s string, msg []byte, off int, compression map[string]int, compress bool) (off1 int, ok bool) {
|
||||||
// Add trailing dot to canonicalize name.
|
// Add trailing dot to canonicalize name.
|
||||||
lenmsg := len(msg)
|
lenmsg := len(msg)
|
||||||
|
@ -975,7 +978,9 @@ func reverseInt(m map[int]string) map[string]int {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert a MsgHdr to a string, mimic the way Dig displays headers:
|
// Convert a MsgHdr to a string, mimic the way Dig displays headers:
|
||||||
|
//
|
||||||
//;; opcode: QUERY, status: NOERROR, id: 48404
|
//;; opcode: QUERY, status: NOERROR, id: 48404
|
||||||
|
//
|
||||||
//;; flags: qr aa rd ra;
|
//;; flags: qr aa rd ra;
|
||||||
func (h *MsgHdr) String() string {
|
func (h *MsgHdr) String() string {
|
||||||
if h == nil {
|
if h == nil {
|
||||||
|
|
4
tsig.go
4
tsig.go
|
@ -14,7 +14,7 @@
|
||||||
// secrets["axfr."] = "so6ZGir4GPAqINNh9U5c3A==" // don't forget the . here
|
// secrets["axfr."] = "so6ZGir4GPAqINNh9U5c3A==" // don't forget the . here
|
||||||
//
|
//
|
||||||
// The secrets' map index is set to 'axfr.'. This must match the ownername of the
|
// The secrets' map index is set to 'axfr.'. This must match the ownername of the
|
||||||
// TSIG records, which in the above example, is also set to 'axfr.'
|
// TSIG record, which in the above example, is also set to 'axfr.'
|
||||||
//
|
//
|
||||||
// The message requesting an AXFR (almost all TSIG usage is when requesting zone transfers)
|
// The message requesting an AXFR (almost all TSIG usage is when requesting zone transfers)
|
||||||
// for miek.nl with the TSIG record added is now ready to use.
|
// for miek.nl with the TSIG record added is now ready to use.
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
// c.TsigSecret = secrets
|
// c.TsigSecret = secrets
|
||||||
// err := c.XfrReceive(m, "85.223.71.124:53")
|
// err := c.XfrReceive(m, "85.223.71.124:53")
|
||||||
//
|
//
|
||||||
// You can now read the records from the AXFR as the come in. Each envelope is checked with TSIG.
|
// You can now read the records from the AXFR as they come in. Each envelope is checked with TSIG.
|
||||||
// If something is not correct an error is returned.
|
// If something is not correct an error is returned.
|
||||||
//
|
//
|
||||||
// Basic use pattern replying to a message that has TSIG set.
|
// Basic use pattern replying to a message that has TSIG set.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// DYNAMIC UPDATES
|
// DYNAMIC UPDATES
|
||||||
//
|
//
|
||||||
// Dynamic updates reuses the DNS message format, but renames the three of
|
// Dynamic updates reuses the DNS message format, but renames three of
|
||||||
// the sections. Question is Zone, Answer is Prerequisite, Authority is
|
// the sections. Question is Zone, Answer is Prerequisite, Authority is
|
||||||
// Update, only the Additional is not renamed. See RFC 2136 for the gory details.
|
// Update, only the Additional is not renamed. See RFC 2136 for the gory details.
|
||||||
//
|
//
|
||||||
|
@ -20,9 +20,10 @@
|
||||||
// zone rrset rr RRset exists (value dep) RRsetUsedRdata
|
// zone rrset rr RRset exists (value dep) RRsetUsedRdata
|
||||||
//
|
//
|
||||||
// The prerequisite section can also be left empty.
|
// The prerequisite section can also be left empty.
|
||||||
// If you have decided an the prerequisites you can tell what RRs should
|
// If you have decided on the prerequisites you can tell what RRs should
|
||||||
// be added or deleted. The next table shows the options you have and
|
// be added or deleted. The next table shows the options you have and
|
||||||
// what function to call.
|
// what functions to call.
|
||||||
|
//
|
||||||
// 3.4.2.6 - Table Of Metavalues Used In Update Section
|
// 3.4.2.6 - Table Of Metavalues Used In Update Section
|
||||||
//
|
//
|
||||||
// CLASS TYPE RDATA Meaning Function
|
// CLASS TYPE RDATA Meaning Function
|
||||||
|
|
Loading…
Reference in New Issue