aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/emersion/go-sasl/external.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/emersion/go-sasl/external.go')
-rw-r--r--vendor/github.com/emersion/go-sasl/external.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/vendor/github.com/emersion/go-sasl/external.go b/vendor/github.com/emersion/go-sasl/external.go
new file mode 100644
index 0000000..da070c8
--- /dev/null
+++ b/vendor/github.com/emersion/go-sasl/external.go
@@ -0,0 +1,26 @@
+package sasl
+
+// The EXTERNAL mechanism name.
+const External = "EXTERNAL"
+
+type externalClient struct {
+ Identity string
+}
+
+func (a *externalClient) Start() (mech string, ir []byte, err error) {
+ mech = External
+ ir = []byte(a.Identity)
+ return
+}
+
+func (a *externalClient) Next(challenge []byte) (response []byte, err error) {
+ return nil, ErrUnexpectedServerChallenge
+}
+
+// An implementation of the EXTERNAL authentication mechanism, as described in
+// RFC 4422. Authorization identity may be left blank to indicate that the
+// client is requesting to act as the identity associated with the
+// authentication credentials.
+func NewExternalClient(identity string) Client {
+ return &externalClient{identity}
+}