aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/emersion/go-imap/utf7/utf7.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/emersion/go-imap/utf7/utf7.go')
-rw-r--r--vendor/github.com/emersion/go-imap/utf7/utf7.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/vendor/github.com/emersion/go-imap/utf7/utf7.go b/vendor/github.com/emersion/go-imap/utf7/utf7.go
new file mode 100644
index 0000000..b9dd962
--- /dev/null
+++ b/vendor/github.com/emersion/go-imap/utf7/utf7.go
@@ -0,0 +1,34 @@
+// Package utf7 implements modified UTF-7 encoding defined in RFC 3501 section 5.1.3
+package utf7
+
+import (
+ "encoding/base64"
+
+ "golang.org/x/text/encoding"
+)
+
+const (
+ min = 0x20 // Minimum self-representing UTF-7 value
+ max = 0x7E // Maximum self-representing UTF-7 value
+
+ repl = '\uFFFD' // Unicode replacement code point
+)
+
+var b64Enc = base64.NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+,")
+
+type enc struct{}
+
+func (e enc) NewDecoder() *encoding.Decoder {
+ return &encoding.Decoder{
+ Transformer: &decoder{true},
+ }
+}
+
+func (e enc) NewEncoder() *encoding.Encoder {
+ return &encoding.Encoder{
+ Transformer: &encoder{},
+ }
+}
+
+// Encoding is the modified UTF-7 encoding.
+var Encoding encoding.Encoding = enc{}