public Caller DigestValidateResponse(string company, string method, string response) { var digest = DigestHeader.Parse(response); var partialCaller = Find(new Caller { Company = company, Name = digest.Username, KeyType = "Password" }); if (partialCaller == null) { return(null); } if (partialCaller.KeyValue == null) { return(partialCaller); } digest.Password = partialCaller.KeyValue; digest.Nonce = "test"; if (digest.GetCalculatedResponse(method) != digest.Response) { return(null); } return(partialCaller); }
public DigestHeader(DigestHeader copy) { foreach (var kv in copy._values) { _values.Add(kv.Key, kv.Value); } }
public string DigestGenerateRequest(string realm) { var digest = new DigestHeader { Realm = realm, Nonce = "test" }; return(digest.ServerResponseHeader); }
public static DigestHeader Parse(string header) { if (!header.ToUpper().StartsWith("DIGEST")) { return(null); } var credentials = new DigestHeader(); string arguments = header.Substring(6); string[] keyValues = arguments.Split(','); foreach (string kv in keyValues) { string[] parts = kv.Split(new[] { '=' }, 2); string key = parts[0].Trim(' ', '\t', '\r', '\n', '\"'); string value = parts[1].Trim(' ', '\t', '\r', '\n', '\"'); credentials._values.Add(key, value); } return(credentials); }