From 74050fd11b280e83c32be2017eaccd8f513490d1 Mon Sep 17 00:00:00 2001 From: Bearki <59725082+bearki@users.noreply.github.com> Date: Wed, 27 Dec 2023 13:47:32 +0800 Subject: [PATCH] fix: Improve Digest WWW-Authenticate response header parsing compatibility (#735) Co-authored-by: Jeevanandam M --- digest.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/digest.go b/digest.go index a108800..9dd3a13 100644 --- a/digest.go +++ b/digest.go @@ -133,14 +133,17 @@ func parseChallenge(input string) (*challenge, error) { return nil, ErrDigestBadChallenge } s = strings.Trim(s[7:], ws) - sl := strings.Split(s, ", ") + sl := strings.Split(s, ",") c := &challenge{} var r []string for i := range sl { + sl[i] = strings.TrimSpace(sl[i]) r = strings.SplitN(sl[i], "=", 2) if len(r) != 2 { return nil, ErrDigestBadChallenge } + r[0] = strings.TrimSpace(r[0]) + r[1] = strings.TrimSpace(r[1]) switch r[0] { case "realm": c.realm = strings.Trim(r[1], qs) @@ -151,9 +154,9 @@ func parseChallenge(input string) (*challenge, error) { case "opaque": c.opaque = strings.Trim(r[1], qs) case "stale": - c.stale = r[1] + c.stale = strings.Trim(r[1], qs) case "algorithm": - c.algorithm = r[1] + c.algorithm = strings.Trim(r[1], qs) case "qop": c.qop = strings.Trim(r[1], qs) case "charset":