diff options
Diffstat (limited to 'vendor/github.com/jackc/pgproto3/v2/authentication_sasl.go')
-rw-r--r-- | vendor/github.com/jackc/pgproto3/v2/authentication_sasl.go | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/vendor/github.com/jackc/pgproto3/v2/authentication_sasl.go b/vendor/github.com/jackc/pgproto3/v2/authentication_sasl.go deleted file mode 100644 index bdcb2c367..000000000 --- a/vendor/github.com/jackc/pgproto3/v2/authentication_sasl.go +++ /dev/null @@ -1,75 +0,0 @@ -package pgproto3 - -import ( - "bytes" - "encoding/binary" - "encoding/json" - "errors" - - "github.com/jackc/pgio" -) - -// AuthenticationSASL is a message sent from the backend indicating that SASL authentication is required. -type AuthenticationSASL struct { - AuthMechanisms []string -} - -// Backend identifies this message as sendable by the PostgreSQL backend. -func (*AuthenticationSASL) Backend() {} - -// Backend identifies this message as an authentication response. -func (*AuthenticationSASL) AuthenticationResponse() {} - -// Decode decodes src into dst. src must contain the complete message with the exception of the initial 1 byte message -// type identifier and 4 byte message length. -func (dst *AuthenticationSASL) Decode(src []byte) error { - if len(src) < 4 { - return errors.New("authentication message too short") - } - - authType := binary.BigEndian.Uint32(src) - - if authType != AuthTypeSASL { - return errors.New("bad auth type") - } - - authMechanisms := src[4:] - for len(authMechanisms) > 1 { - idx := bytes.IndexByte(authMechanisms, 0) - if idx > 0 { - dst.AuthMechanisms = append(dst.AuthMechanisms, string(authMechanisms[:idx])) - authMechanisms = authMechanisms[idx+1:] - } - } - - return nil -} - -// Encode encodes src into dst. dst will include the 1 byte message type identifier and the 4 byte message length. -func (src *AuthenticationSASL) Encode(dst []byte) []byte { - dst = append(dst, 'R') - sp := len(dst) - dst = pgio.AppendInt32(dst, -1) - dst = pgio.AppendUint32(dst, AuthTypeSASL) - - for _, s := range src.AuthMechanisms { - dst = append(dst, []byte(s)...) - dst = append(dst, 0) - } - dst = append(dst, 0) - - pgio.SetInt32(dst[sp:], int32(len(dst[sp:]))) - - return dst -} - -// MarshalJSON implements encoding/json.Marshaler. -func (src AuthenticationSASL) MarshalJSON() ([]byte, error) { - return json.Marshal(struct { - Type string - AuthMechanisms []string - }{ - Type: "AuthenticationSASL", - AuthMechanisms: src.AuthMechanisms, - }) -} |