Merge pull request #270 from FiloSottile/filippo/hinfo
Fix (*HINFO).len() and HINFO canonicalization in rawSignatureData
This commit is contained in:
commit
dea25f3332
|
@ -638,6 +638,9 @@ func rawSignatureData(rrset []RR, s *RRSIG) (buf []byte, err error) {
|
||||||
x.Target = strings.ToLower(x.Target)
|
x.Target = strings.ToLower(x.Target)
|
||||||
case *DNAME:
|
case *DNAME:
|
||||||
x.Target = strings.ToLower(x.Target)
|
x.Target = strings.ToLower(x.Target)
|
||||||
|
case *HINFO:
|
||||||
|
x.Os = strings.ToLower(x.Os)
|
||||||
|
x.Cpu = strings.ToLower(x.Cpu)
|
||||||
}
|
}
|
||||||
// 6.2. Canonical RR Form. (5) - origTTL
|
// 6.2. Canonical RR Form. (5) - origTTL
|
||||||
wire := make([]byte, r1.len()+1) // +1 to be safe(r)
|
wire := make([]byte, r1.len()+1) // +1 to be safe(r)
|
||||||
|
|
|
@ -171,6 +171,17 @@ func TestSignVerify(t *testing.T) {
|
||||||
srv.Weight = 800
|
srv.Weight = 800
|
||||||
srv.Target = "web1.miek.nl."
|
srv.Target = "web1.miek.nl."
|
||||||
|
|
||||||
|
hinfo := &HINFO{
|
||||||
|
Hdr: RR_Header{
|
||||||
|
Name: "miek.nl.",
|
||||||
|
Rrtype: TypeHINFO,
|
||||||
|
Class: ClassINET,
|
||||||
|
Ttl: 3789,
|
||||||
|
},
|
||||||
|
Cpu: "X",
|
||||||
|
Os: "Y",
|
||||||
|
}
|
||||||
|
|
||||||
// With this key
|
// With this key
|
||||||
key := new(DNSKEY)
|
key := new(DNSKEY)
|
||||||
key.Hdr.Rrtype = TypeDNSKEY
|
key.Hdr.Rrtype = TypeDNSKEY
|
||||||
|
@ -194,12 +205,12 @@ func TestSignVerify(t *testing.T) {
|
||||||
sig.SignerName = key.Hdr.Name
|
sig.SignerName = key.Hdr.Name
|
||||||
sig.Algorithm = RSASHA256
|
sig.Algorithm = RSASHA256
|
||||||
|
|
||||||
for _, r := range []RR{soa, soa1, srv} {
|
for _, r := range []RR{soa, soa1, srv, hinfo} {
|
||||||
if sig.Sign(privkey.(*rsa.PrivateKey), []RR{r}) != nil {
|
if err := sig.Sign(privkey.(*rsa.PrivateKey), []RR{r}); err != nil {
|
||||||
t.Error("failure to sign the record")
|
t.Error("failure to sign the record:", err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if sig.Verify(key, []RR{r}) != nil {
|
if err := sig.Verify(key, []RR{r}); err != nil {
|
||||||
t.Error("failure to validate")
|
t.Error("failure to validate")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
2
types.go
2
types.go
|
@ -260,7 +260,7 @@ func (rr *HINFO) copy() RR { return &HINFO{*rr.Hdr.copyHeader(), rr.Cp
|
||||||
func (rr *HINFO) String() string {
|
func (rr *HINFO) String() string {
|
||||||
return rr.Hdr.String() + sprintTxt([]string{rr.Cpu, rr.Os})
|
return rr.Hdr.String() + sprintTxt([]string{rr.Cpu, rr.Os})
|
||||||
}
|
}
|
||||||
func (rr *HINFO) len() int { return rr.Hdr.len() + len(rr.Cpu) + len(rr.Os) }
|
func (rr *HINFO) len() int { return rr.Hdr.len() + len(rr.Cpu) + 1 + len(rr.Os) + 1 }
|
||||||
|
|
||||||
type MB struct {
|
type MB struct {
|
||||||
Hdr RR_Header
|
Hdr RR_Header
|
||||||
|
|
Loading…
Reference in New Issue