From 5597b1ffc0271ec0d78bed1b0199b04bcfbab726 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Tue, 31 Mar 2015 10:04:53 +0200 Subject: [PATCH] Handle preceding whitespace in DIGEST-MD5 implementation from smack-sasl-provided. Fixes SMACK-649. --- .../smack/sasl/provided/SASLDigestMD5Mechanism.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/smack-sasl-provided/src/main/java/org/jivesoftware/smack/sasl/provided/SASLDigestMD5Mechanism.java b/smack-sasl-provided/src/main/java/org/jivesoftware/smack/sasl/provided/SASLDigestMD5Mechanism.java index 309c25527..1c0a8370a 100644 --- a/smack-sasl-provided/src/main/java/org/jivesoftware/smack/sasl/provided/SASLDigestMD5Mechanism.java +++ b/smack-sasl-provided/src/main/java/org/jivesoftware/smack/sasl/provided/SASLDigestMD5Mechanism.java @@ -104,6 +104,13 @@ public class SASLDigestMD5Mechanism extends SASLMechanism { String[] keyValue = part.split("="); assert (keyValue.length == 2); String key = keyValue[0]; + // RFC 2831 ยง 7.1 about the formating of the digest-challenge: + // "The full form is "#element" indicating at least and + // at most elements, each separated by one or more commas + // (",") and OPTIONAL linear white space (LWS)." + // Which means the key value may be preceded by whitespace, + // which is what we remove: *Only the preceding whitespace*. + key = key.replaceFirst("^\\s+", ""); String value = keyValue[1]; if ("nonce".equals(key)) { if (nonce != null) {