aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/emersion/go-sasl/sasl.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/emersion/go-sasl/sasl.go')
-rw-r--r--vendor/github.com/emersion/go-sasl/sasl.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/vendor/github.com/emersion/go-sasl/sasl.go b/vendor/github.com/emersion/go-sasl/sasl.go
new file mode 100644
index 0000000..c209144
--- /dev/null
+++ b/vendor/github.com/emersion/go-sasl/sasl.go
@@ -0,0 +1,45 @@
+// Library for Simple Authentication and Security Layer (SASL) defined in RFC 4422.
+package sasl
+
+// Note:
+// Most of this code was copied, with some modifications, from net/smtp. It
+// would be better if Go provided a standard package (e.g. crypto/sasl) that
+// could be shared by SMTP, IMAP, and other packages.
+
+import (
+ "errors"
+)
+
+// Common SASL errors.
+var (
+ ErrUnexpectedClientResponse = errors.New("sasl: unexpected client response")
+ ErrUnexpectedServerChallenge = errors.New("sasl: unexpected server challenge")
+)
+
+// Client interface to perform challenge-response authentication.
+type Client interface {
+ // Begins SASL authentication with the server. It returns the
+ // authentication mechanism name and "initial response" data (if required by
+ // the selected mechanism). A non-nil error causes the client to abort the
+ // authentication attempt.
+ //
+ // A nil ir value is different from a zero-length value. The nil value
+ // indicates that the selected mechanism does not use an initial response,
+ // while a zero-length value indicates an empty initial response, which must
+ // be sent to the server.
+ Start() (mech string, ir []byte, err error)
+
+ // Continues challenge-response authentication. A non-nil error causes
+ // the client to abort the authentication attempt.
+ Next(challenge []byte) (response []byte, err error)
+}
+
+// Server interface to perform challenge-response authentication.
+type Server interface {
+ // Begins or continues challenge-response authentication. If the client
+ // supplies an initial response, response is non-nil.
+ //
+ // If the authentication is finished, done is set to true. If the
+ // authentication has failed, an error is returned.
+ Next(response []byte) (challenge []byte, done bool, err error)
+}