summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2009-11-19 19:25:56 (GMT)
committerRemko Tronçon <git@el-tramo.be>2009-11-19 19:25:56 (GMT)
commite9bdc38536488b76e5e3a715961a94085302cc15 (patch)
tree57dd253c436a3419152e568be902dab5ad99fc51
parentb2a55163964c835a4b0b61af0f0d959ec58a5a0e (diff)
downloadswift-e9bdc38536488b76e5e3a715961a94085302cc15.zip
swift-e9bdc38536488b76e5e3a715961a94085302cc15.tar.bz2
Added HMAC-SHA1 and SCRAM-SHA1 implementations.
We don't authenticate with SCRAM-SHA1 yet.
-rw-r--r--Swiften/Base/ByteArray.h7
-rw-r--r--Swiften/SConscript3
2 files changed, 10 insertions, 0 deletions
diff --git a/Swiften/Base/ByteArray.h b/Swiften/Base/ByteArray.h
index ea96d09..ab256a4 100644
--- a/Swiften/Base/ByteArray.h
+++ b/Swiften/Base/ByteArray.h
@@ -11,86 +11,93 @@ namespace Swift {
{
public:
typedef std::vector<char>::const_iterator const_iterator;
ByteArray() : data_() {}
ByteArray(const String& s) : data_(s.getUTF8String().begin(), s.getUTF8String().end()) {}
ByteArray(const char* c) {
while (*c) {
data_.push_back(*c);
++c;
}
}
ByteArray(const char* c, size_t n) {
if (n > 0) {
data_.resize(n);
memcpy(&data_[0], c, n);
}
}
const char* getData() const {
return data_.empty() ? NULL : &data_[0];
}
char* getData() {
return data_.empty() ? NULL : &data_[0];
}
size_t getSize() const {
return data_.size();
}
bool isEmpty() const {
return data_.empty();
}
void resize(size_t size) {
return data_.resize(size);
}
friend ByteArray operator+(const ByteArray& a, const ByteArray&b) {
ByteArray result(a);
result.data_.insert(result.data_.end(), b.data_.begin(), b.data_.end());
return result;
}
+ friend ByteArray operator+(const ByteArray& a, char b) {
+ ByteArray x;
+ x.resize(1);
+ x[0] = b;
+ return a + x;
+ }
+
ByteArray& operator+=(const ByteArray& b) {
data_.insert(data_.end(), b.data_.begin(), b.data_.end());
return *this;
}
friend bool operator==(const ByteArray& a, const ByteArray& b) {
return a.data_ == b.data_;
}
const char& operator[](size_t i) const {
return data_[i];
}
char& operator[](size_t i) {
return data_[i];
}
const_iterator begin() const {
return data_.begin();
}
const_iterator end() const {
return data_.end();
}
String toString() const {
return String(getData(), getSize());
}
void readFromFile(const String& file);
private:
std::vector<char> data_;
};
}
std::ostream& operator<<(std::ostream& os, const Swift::ByteArray& s);
diff --git a/Swiften/SConscript b/Swiften/SConscript
index 6ebc865..039856e 100644
--- a/Swiften/SConscript
+++ b/Swiften/SConscript
@@ -1,129 +1,131 @@
Import("env")
env["SWIFTEN_FLAGS"] = {
"LIBPATH": [Dir(".")],
"LIBS": ["Swiften"]
}
swiften_env = env.Clone()
swiften_env.MergeFlags(swiften_env["BOOST_FLAGS"])
Export("swiften_env")
# TODO: Move all this to a submodule SConscript
myenv = swiften_env.Clone()
myenv.MergeFlags(myenv["ZLIB_FLAGS"])
myenv.MergeFlags(myenv["OPENSSL_FLAGS"])
sources = [
"Avatars/AvatarFileStorage.cpp",
"Avatars/AvatarManager.cpp",
"Avatars/AvatarStorage.cpp",
"Client/Client.cpp",
"Client/ClientSession.cpp",
"Compress/ZLibCodecompressor.cpp",
"Disco/CapsInfoGenerator.cpp",
"Elements/DiscoInfo.cpp",
"Elements/Element.cpp",
"Elements/IQ.cpp",
"Elements/MUCPayload.cpp",
"Elements/Payload.cpp",
"Elements/RosterPayload.cpp",
"Elements/Stanza.cpp",
"MUC/MUC.cpp",
"MUC/MUCOccupant.cpp",
"MUC/MUCRegistry.cpp",
"Notifier/Notifier.cpp",
"Presence/PresenceOracle.cpp",
"Queries/IQChannel.cpp",
"Queries/IQHandler.cpp",
"Queries/IQRouter.cpp",
"Queries/Request.cpp",
"Queries/Responders/DiscoInfoResponder.cpp",
"Queries/Responders/SoftwareVersionResponder.cpp",
"Roster/ContactRosterItem.cpp",
"Roster/Roster.cpp",
"Roster/XMPPRoster.cpp",
"SASL/PLAINMessage.cpp",
+ "SASL/SCRAMSHA1ClientAuthenticator.cpp",
"Serializer/AuthRequestSerializer.cpp",
"Serializer/CompressRequestSerializer.cpp",
"Serializer/ElementSerializer.cpp",
"Serializer/MessageSerializer.cpp",
"Serializer/PayloadSerializer.cpp",
"Serializer/PayloadSerializerCollection.cpp",
"Serializer/PayloadSerializers/CapsInfoSerializer.cpp",
"Serializer/PayloadSerializers/DiscoInfoSerializer.cpp",
"Serializer/PayloadSerializers/ErrorSerializer.cpp",
"Serializer/PayloadSerializers/FullPayloadSerializerCollection.cpp",
"Serializer/PayloadSerializers/MUCPayloadSerializer.cpp",
"Serializer/PayloadSerializers/ResourceBindSerializer.cpp",
"Serializer/PayloadSerializers/RosterSerializer.cpp",
"Serializer/PayloadSerializers/SecurityLabelSerializer.cpp",
"Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.cpp",
"Serializer/PayloadSerializers/SoftwareVersionSerializer.cpp",
"Serializer/PayloadSerializers/VCardSerializer.cpp",
"Serializer/PayloadSerializers/VCardUpdateSerializer.cpp",
"Serializer/PayloadSerializers/StorageSerializer.cpp",
"Serializer/PayloadSerializers/PrivateStorageSerializer.cpp",
"Serializer/PresenceSerializer.cpp",
"Serializer/StanzaSerializer.cpp",
"Serializer/StreamFeaturesSerializer.cpp",
"Serializer/XML/XMLElement.cpp",
"Serializer/XML/XMLNode.cpp",
"Serializer/XMPPSerializer.cpp",
"Server/ServerFromClientSession.cpp",
"Server/ServerSession.cpp",
"Server/ServerStanzaRouter.cpp",
"Server/SimpleUserRegistry.cpp",
"Server/UserRegistry.cpp",
"Session/Session.cpp",
"Session/SessionStream.cpp",
"Session/BasicSessionStream.cpp",
"StringCodecs/Base64.cpp",
"StringCodecs/SHA1.cpp",
+ "StringCodecs/HMACSHA1.cpp",
]
# "Notifier/GrowlNotifier.cpp",
if myenv.get("HAVE_OPENSSL", 0) :
sources += ["TLS/OpenSSL/OpenSSLContext.cpp"]
SConscript(dirs = [
"Base",
"Application",
"EventLoop",
"Parser",
"JID",
"Network",
"History",
"StreamStack",
"LinkLocal",
"QA",
])
myenv.StaticLibrary("Swiften", sources + swiften_env["SWIFTEN_OBJECTS"])
env.Append(UNITTEST_SOURCES = [
File("Application/UnitTest/ApplicationTest.cpp"),
File("Base/UnitTest/IDGeneratorTest.cpp"),
File("Base/UnitTest/StringTest.cpp"),
File("Base/UnitTest/ByteArrayTest.cpp"),
#File("Client/UnitTest/ClientSessionTest.cpp"),
File("Compress/UnitTest/ZLibCompressorTest.cpp"),
File("Compress/UnitTest/ZLibDecompressorTest.cpp"),
File("Disco/UnitTest/CapsInfoGeneratorTest.cpp"),
File("Elements/UnitTest/IQTest.cpp"),
File("Elements/UnitTest/StanzaTest.cpp"),
File("Elements/UnitTest/StanzasTest.cpp"),
File("EventLoop/UnitTest/EventLoopTest.cpp"),
File("EventLoop/UnitTest/SimpleEventLoopTest.cpp"),
File("History/UnitTest/SQLiteHistoryManagerTest.cpp"),
File("JID/UnitTest/JIDTest.cpp"),
File("LinkLocal/UnitTest/LinkLocalConnectorTest.cpp"),
File("LinkLocal/UnitTest/LinkLocalServiceBrowserTest.cpp"),
File("LinkLocal/UnitTest/LinkLocalServiceInfoTest.cpp"),
File("LinkLocal/UnitTest/LinkLocalServiceTest.cpp"),
File("Network/UnitTest/HostAddressTest.cpp"),
File("Network/UnitTest/ConnectorTest.cpp"),
File("Parser/PayloadParsers/UnitTest/BodyParserTest.cpp"),
File("Parser/PayloadParsers/UnitTest/DiscoInfoParserTest.cpp"),
File("Parser/PayloadParsers/UnitTest/ErrorParserTest.cpp"),
File("Parser/PayloadParsers/UnitTest/PriorityParserTest.cpp"),
File("Parser/PayloadParsers/UnitTest/RawXMLPayloadParserTest.cpp"),
@@ -134,49 +136,50 @@ env.Append(UNITTEST_SOURCES = [
File("Parser/PayloadParsers/UnitTest/SoftwareVersionParserTest.cpp"),
File("Parser/PayloadParsers/UnitTest/StatusParserTest.cpp"),
File("Parser/PayloadParsers/UnitTest/StatusShowParserTest.cpp"),
File("Parser/PayloadParsers/UnitTest/VCardParserTest.cpp"),
File("Parser/PayloadParsers/UnitTest/StorageParserTest.cpp"),
File("Parser/PayloadParsers/UnitTest/PrivateStorageParserTest.cpp"),
File("Parser/PayloadParsers/UnitTest/VCardUpdateParserTest.cpp"),
File("Parser/UnitTest/AttributeMapTest.cpp"),
File("Parser/UnitTest/IQParserTest.cpp"),
File("Parser/UnitTest/MessageParserTest.cpp"),
File("Parser/UnitTest/PayloadParserFactoryCollectionTest.cpp"),
File("Parser/UnitTest/PresenceParserTest.cpp"),
File("Parser/UnitTest/SerializingParserTest.cpp"),
File("Parser/UnitTest/StanzaParserTest.cpp"),
File("Parser/UnitTest/StreamFeaturesParserTest.cpp"),
File("Parser/UnitTest/XMLParserTest.cpp"),
File("Parser/UnitTest/XMPPParserTest.cpp"),
File("Presence/UnitTest/PresenceOracleTest.cpp"),
File("Queries/Requests/UnitTest/GetPrivateStorageRequestTest.cpp"),
File("Queries/Responders/UnitTest/DiscoInfoResponderTest.cpp"),
File("Queries/UnitTest/IQRouterTest.cpp"),
File("Queries/UnitTest/RequestTest.cpp"),
File("Queries/UnitTest/ResponderTest.cpp"),
File("Roster/UnitTest/OfflineRosterFilterTest.cpp"),
File("Roster/UnitTest/RosterTest.cpp"),
File("SASL/UnitTest/PLAINMessageTest.cpp"),
File("Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.cpp"),
File("Serializer/PayloadSerializers/UnitTest/CapsInfoSerializerTest.cpp"),
File("Serializer/PayloadSerializers/UnitTest/DiscoInfoSerializerTest.cpp"),
File("Serializer/PayloadSerializers/UnitTest/ErrorSerializerTest.cpp"),
File("Serializer/PayloadSerializers/UnitTest/PrioritySerializerTest.cpp"),
File("Serializer/PayloadSerializers/UnitTest/ResourceBindSerializerTest.cpp"),
File("Serializer/PayloadSerializers/UnitTest/RosterSerializerTest.cpp"),
File("Serializer/PayloadSerializers/UnitTest/SecurityLabelSerializerTest.cpp"),
File("Serializer/PayloadSerializers/UnitTest/SecurityLabelsCatalogSerializerTest.cpp"),
File("Serializer/PayloadSerializers/UnitTest/SoftwareVersionSerializerTest.cpp"),
File("Serializer/PayloadSerializers/UnitTest/StatusSerializerTest.cpp"),
File("Serializer/PayloadSerializers/UnitTest/StatusShowSerializerTest.cpp"),
File("Serializer/PayloadSerializers/UnitTest/VCardUpdateSerializerTest.cpp"),
File("Serializer/PayloadSerializers/UnitTest/StorageSerializerTest.cpp"),
File("Serializer/PayloadSerializers/UnitTest/PrivateStorageSerializerTest.cpp"),
File("Serializer/UnitTest/StreamFeaturesSerializerTest.cpp"),
File("Serializer/XML/UnitTest/XMLElementTest.cpp"),
File("Server/UnitTest/ServerStanzaRouterTest.cpp"),
File("StreamStack/UnitTest/StreamStackTest.cpp"),
File("StreamStack/UnitTest/XMPPLayerTest.cpp"),
File("StringCodecs/UnitTest/Base64Test.cpp"),
File("StringCodecs/UnitTest/SHA1Test.cpp"),
+ File("StringCodecs/UnitTest/HMACSHA1Test.cpp"),
])