aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/emersion/go-imap/utf7/utf7.go
diff options
context:
space:
mode:
authorJordan <me@jordan.im>2023-02-04 23:54:03 -0700
committerJordan <me@jordan.im>2023-02-04 23:54:03 -0700
commitc4159d895ac399ca55326f7b4ff8bfbf8402e654 (patch)
tree45340ca429c16f683b375695d01e03d65ebf22b0 /vendor/github.com/emersion/go-imap/utf7/utf7.go
downloadpigeon-c4159d895ac399ca55326f7b4ff8bfbf8402e654.tar.gz
pigeon-c4159d895ac399ca55326f7b4ff8bfbf8402e654.zip
initial commit
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{}