1// Modified UTF-7 encoding defined in RFC 3501 section 5.1.3 2package utf7 3 4import ( 5 "encoding/base64" 6 7 "golang.org/x/text/encoding" 8) 9 10const ( 11 min = 0x20 // Minimum self-representing UTF-7 value 12 max = 0x7E // Maximum self-representing UTF-7 value 13 14 repl = '\uFFFD' // Unicode replacement code point 15) 16 17var b64Enc = base64.NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+,") 18 19type enc struct{} 20 21func (e enc) NewDecoder() *encoding.Decoder { 22 return &encoding.Decoder{ 23 Transformer: &decoder{true}, 24 } 25} 26 27func (e enc) NewEncoder() *encoding.Encoder { 28 return &encoding.Encoder{ 29 Transformer: &encoder{}, 30 } 31} 32 33// Encoding is the modified UTF-7 encoding. 34var Encoding encoding.Encoding = enc{} 35