1package ntlmssp
2
3import (
4	"encoding/base64"
5	"strings"
6)
7
8type authheader string
9
10func (h authheader) IsBasic() bool {
11	return strings.HasPrefix(string(h), "Basic ")
12}
13
14func (h authheader) IsNegotiate() bool {
15	return strings.HasPrefix(string(h), "Negotiate")
16}
17
18func (h authheader) IsNTLM() bool {
19	return strings.HasPrefix(string(h), "NTLM")
20}
21
22func (h authheader) GetData() ([]byte, error) {
23	p := strings.Split(string(h), " ")
24	if len(p) < 2 {
25		return nil, nil
26	}
27	return base64.StdEncoding.DecodeString(string(p[1]))
28}
29
30func (h authheader) GetBasicCreds() (username, password string, err error) {
31	d, err := h.GetData()
32	if err != nil {
33		return "", "", err
34	}
35	parts := strings.SplitN(string(d), ":", 2)
36	return parts[0], parts[1], nil
37}
38