Skip to content

Commit

Permalink
Merge pull request #270 from FiloSottile/filippo/hinfo
Browse files Browse the repository at this point in the history
Fix (*HINFO).len() and HINFO canonicalization in rawSignatureData
  • Loading branch information
miekg committed Oct 5, 2015
2 parents 9a6a644 + e9635cc commit dea25f3
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 5 deletions.
3 changes: 3 additions & 0 deletions dnssec.go
Expand Up @@ -638,6 +638,9 @@ func rawSignatureData(rrset []RR, s *RRSIG) (buf []byte, err error) {
x.Target = strings.ToLower(x.Target)
case *DNAME:
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
wire := make([]byte, r1.len()+1) // +1 to be safe(r)
Expand Down
19 changes: 15 additions & 4 deletions dnssec_test.go
Expand Up @@ -171,6 +171,17 @@ func TestSignVerify(t *testing.T) {
srv.Weight = 800
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
key := new(DNSKEY)
key.Hdr.Rrtype = TypeDNSKEY
Expand All @@ -194,12 +205,12 @@ func TestSignVerify(t *testing.T) {
sig.SignerName = key.Hdr.Name
sig.Algorithm = RSASHA256

for _, r := range []RR{soa, soa1, srv} {
if sig.Sign(privkey.(*rsa.PrivateKey), []RR{r}) != nil {
t.Error("failure to sign the record")
for _, r := range []RR{soa, soa1, srv, hinfo} {
if err := sig.Sign(privkey.(*rsa.PrivateKey), []RR{r}); err != nil {
t.Error("failure to sign the record:", err)
continue
}
if sig.Verify(key, []RR{r}) != nil {
if err := sig.Verify(key, []RR{r}); err != nil {
t.Error("failure to validate")
continue
}
Expand Down
2 changes: 1 addition & 1 deletion types.go
Expand Up @@ -260,7 +260,7 @@ func (rr *HINFO) copy() RR { return &HINFO{*rr.Hdr.copyHeader(), rr.Cp
func (rr *HINFO) String() string {
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 {
Hdr RR_Header
Expand Down

0 comments on commit dea25f3

Please sign in to comment.