diff options
Diffstat (limited to 'Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp')
| -rw-r--r-- | Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp | 16 | 
1 files changed, 14 insertions, 2 deletions
| diff --git a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp b/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp index 41e8f72..15c8ab6 100644 --- a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp +++ b/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp @@ -87,8 +87,20 @@ std::map<char, String> SCRAMSHA1ClientAuthenticator::parseMap(const String& s) {  }  ByteArray SCRAMSHA1ClientAuthenticator::getInitialBareClientMessage() const { -	// TODO: Replace , and = -	return ByteArray(String("n=" + getAuthenticationID() + ",r=" + clientnonce)); +	String authenticationID = getAuthenticationID(); +	String escapedAuthenticationID; +	for (size_t i = 0; i < authenticationID.getUTF8Size(); ++i) { +		if (authenticationID[i] == ',') { +			escapedAuthenticationID += "=2C"; +		} +		else if (authenticationID[i] == '=') { +			escapedAuthenticationID += "=3D"; +		} +		else { +			escapedAuthenticationID += authenticationID[i]; +		} +	} +	return ByteArray(String("n=" + escapedAuthenticationID + ",r=" + clientnonce));  }  } | 
 Swift
 Swift