From a393a4ac64abb24b0fc2cb0e3e154706013d7803 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Sun, 22 Nov 2009 11:26:01 +0100
Subject: Stringprep SCRAM-SHA-1 authcid.


diff --git a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp b/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp
index 15c8ab6..b0a9f96 100644
--- a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp
+++ b/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp
@@ -8,6 +8,7 @@
 #include "Swiften/StringCodecs/Base64.h"
 #include "Swiften/StringCodecs/HMACSHA1.h"
 #include "Swiften/StringCodecs/PBKDF2.h"
+#include "Swiften/StringPrep/StringPrep.h"
 
 namespace Swift {
 
@@ -87,7 +88,7 @@ std::map<char, String> SCRAMSHA1ClientAuthenticator::parseMap(const String& s) {
 }
 
 ByteArray SCRAMSHA1ClientAuthenticator::getInitialBareClientMessage() const {
-	String authenticationID = getAuthenticationID();
+	String authenticationID = StringPrep::getPrepared(getAuthenticationID(), StringPrep::SASLPrep);
 	String escapedAuthenticationID;
 	for (size_t i = 0; i < authenticationID.getUTF8Size(); ++i) {
 		if (authenticationID[i] == ',') {
diff --git a/Swiften/SASL/SConscript b/Swiften/SASL/SConscript
new file mode 100644
index 0000000..22b242e
--- /dev/null
+++ b/Swiften/SASL/SConscript
@@ -0,0 +1,12 @@
+Import("swiften_env")
+
+myenv = swiften_env.Clone()
+myenv.MergeFlags(swiften_env["LIBIDN_FLAGS"])
+
+objects = myenv.StaticObject([
+		"ClientAuthenticator.cpp",
+		"PLAINClientAuthenticator.cpp",
+		"PLAINMessage.cpp",
+		"SCRAMSHA1ClientAuthenticator.cpp",
+	])
+swiften_env.Append(SWIFTEN_OBJECTS = [objects])
diff --git a/Swiften/SConscript b/Swiften/SConscript
index af3ac97..6189b2e 100644
--- a/Swiften/SConscript
+++ b/Swiften/SConscript
@@ -42,10 +42,6 @@ sources = [
 		"Roster/ContactRosterItem.cpp",
 		"Roster/Roster.cpp",
 		"Roster/XMPPRoster.cpp",
-		"SASL/ClientAuthenticator.cpp",
-		"SASL/PLAINClientAuthenticator.cpp",
-		"SASL/PLAINMessage.cpp",
-		"SASL/SCRAMSHA1ClientAuthenticator.cpp",
 		"Serializer/AuthRequestSerializer.cpp",
 		"Serializer/AuthChallengeSerializer.cpp",
 		"Serializer/AuthResponseSerializer.cpp",
@@ -95,6 +91,7 @@ if myenv.get("HAVE_OPENSSL", 0) :
 SConscript(dirs = [
 		"Base",
 		"StringPrep",
+		"SASL",
 		"Application",
 		"EventLoop",
 		"Parser",
-- 
cgit v0.10.2-6-g49f6