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