package sasl
import (
)
var plainSep = []byte{0}
var plain = Mechanism{
Name: "PLAIN",
Start: func( *Negotiator) ( bool, []byte, interface{}, error) {
, , := .credentials()
:= make([]byte, 0, len()+len()+len()+2)
= append(, ...)
= append(, '\x00')
= append(, ...)
= append(, '\x00')
= append(, ...)
return false, , nil, nil
},
Next: func( *Negotiator, []byte, interface{}) ( bool, []byte, interface{}, error) {
if .State()&Receiving != Receiving || .State()&StepMask != AuthTextSent {
= ErrTooManySteps
return
}
:= bytes.Split(, plainSep)
if len() != 3 {
= ErrInvalidChallenge
return
}
if .Permissions(Credentials(func() (, , []byte) {
return [1], [2], [0]
})) {
return
}
= ErrAuthn
return
},
}