diff --git a/src/encoding/base32/base32.go b/src/encoding/base32/base32.go index e921887285..d26cb5c685 100644 --- a/src/encoding/base32/base32.go +++ b/src/encoding/base32/base32.go @@ -26,9 +26,12 @@ type Encoding struct { } const ( - StdPadding rune = '=' // Standard padding character - NoPadding rune = -1 // No padding - decodeMapInitialize = "" + + StdPadding rune = '=' // Standard padding character + NoPadding rune = -1 // No padding +) + +const ( + decodeMapInitialize = "" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + @@ -48,9 +51,6 @@ const ( invalidIndex = '\xff' ) -const encodeStd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" -const encodeHex = "0123456789ABCDEFGHIJKLMNOPQRSTUV" - // NewEncoding returns a new padded Encoding defined by the given alphabet, // which must be a 32-byte string that contains unique byte values and // does not contain the padding character or CR / LF ('\r', '\n'). @@ -83,13 +83,12 @@ func NewEncoding(encoder string) *Encoding { return e } -// StdEncoding is the standard base32 encoding, as defined in -// RFC 4648. -var StdEncoding = NewEncoding(encodeStd) +// StdEncoding is the standard base32 encoding, as defined in RFC 4648. +var StdEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567") // HexEncoding is the “Extended Hex Alphabet” defined in RFC 4648. // It is typically used in DNS. -var HexEncoding = NewEncoding(encodeHex) +var HexEncoding = NewEncoding("0123456789ABCDEFGHIJKLMNOPQRSTUV") // WithPadding creates a new encoding identical to enc except // with a specified padding character, or NoPadding to disable padding. diff --git a/src/encoding/base64/base64.go b/src/encoding/base64/base64.go index 9445cbd4ef..992f5c243f 100644 --- a/src/encoding/base64/base64.go +++ b/src/encoding/base64/base64.go @@ -29,9 +29,12 @@ type Encoding struct { } const ( - StdPadding rune = '=' // Standard padding character - NoPadding rune = -1 // No padding - decodeMapInitialize = "" + + StdPadding rune = '=' // Standard padding character + NoPadding rune = -1 // No padding +) + +const ( + decodeMapInitialize = "" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + @@ -51,9 +54,6 @@ const ( invalidIndex = '\xff' ) -const encodeStd = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" -const encodeURL = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" - // NewEncoding returns a new padded Encoding defined by the given alphabet, // which must be a 64-byte string that contains unique byte values and // does not contain the padding character or CR / LF ('\r', '\n'). @@ -115,13 +115,12 @@ func (enc Encoding) Strict() *Encoding { return &enc } -// StdEncoding is the standard base64 encoding, as defined in -// RFC 4648. -var StdEncoding = NewEncoding(encodeStd) +// StdEncoding is the standard base64 encoding, as defined in RFC 4648. +var StdEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/") // URLEncoding is the alternate base64 encoding defined in RFC 4648. // It is typically used in URLs and file names. -var URLEncoding = NewEncoding(encodeURL) +var URLEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_") // RawStdEncoding is the standard raw, unpadded base64 encoding, // as defined in RFC 4648 section 3.2. diff --git a/src/encoding/base64/base64_test.go b/src/encoding/base64/base64_test.go index 6dfdaef1f1..7f5ebd8085 100644 --- a/src/encoding/base64/base64_test.go +++ b/src/encoding/base64/base64_test.go @@ -70,6 +70,8 @@ func rawURLRef(ref string) string { return rawRef(urlRef(ref)) } +const encodeStd = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" + // A nonstandard encoding with a funny padding character, for testing var funnyEncoding = NewEncoding(encodeStd).WithPadding(rune('@'))