From 350cd086d10de5abf283271115c7a33a94d778cd Mon Sep 17 00:00:00 2001 From: andrewtj Date: Tue, 22 May 2018 05:47:51 +1000 Subject: [PATCH] Don't use padding in base32 helpers (#683) The base32 variant NSEC3 uses doesn't have padding. This hasn't been a problem in practice because SHA1 is the only current NSEC3 hash algorithm and its output doesn't require padding. No-pad support was introduced in Go 1.9 which is the oldest release this package supports. --- msg_helpers.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/msg_helpers.go b/msg_helpers.go index 946d5acb..4a6e878d 100644 --- a/msg_helpers.go +++ b/msg_helpers.go @@ -141,20 +141,24 @@ func truncateMsgFromRdlength(msg []byte, off int, rdlength uint16) (truncmsg []b return msg[:lenrd], nil } +var base32HexNoPadEncoding = base32.HexEncoding.WithPadding(base32.NoPadding) + func fromBase32(s []byte) (buf []byte, err error) { for i, b := range s { if b >= 'a' && b <= 'z' { s[i] = b - 32 } } - buflen := base32.HexEncoding.DecodedLen(len(s)) + buflen := base32HexNoPadEncoding.DecodedLen(len(s)) buf = make([]byte, buflen) - n, err := base32.HexEncoding.Decode(buf, s) + n, err := base32HexNoPadEncoding.Decode(buf, s) buf = buf[:n] return } -func toBase32(b []byte) string { return base32.HexEncoding.EncodeToString(b) } +func toBase32(b []byte) string { + return base32HexNoPadEncoding.EncodeToString(b) +} func fromBase64(s []byte) (buf []byte, err error) { buflen := base64.StdEncoding.DecodedLen(len(s))