summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2009-07-13 19:01:20 (GMT)
committerRemko Tronçon <git@el-tramo.be>2009-07-13 19:01:20 (GMT)
commit92614cf44bc98c3aae240a8089452fb950af5c7e (patch)
tree20b25f0bfcc96ddde992eaa8b0640ca68dfd0280 /Swiften/SASL/PLAINMessage.cpp
parent6ca206b0d0645e50a8a2c59ebd134f9c0f164b9b (diff)
downloadswift-92614cf44bc98c3aae240a8089452fb950af5c7e.zip
swift-92614cf44bc98c3aae240a8089452fb950af5c7e.tar.bz2
Added PLAIN SASL message parsing.
Diffstat (limited to 'Swiften/SASL/PLAINMessage.cpp')
-rw-r--r--Swiften/SASL/PLAINMessage.cpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/Swiften/SASL/PLAINMessage.cpp b/Swiften/SASL/PLAINMessage.cpp
index c88d6cf..66f8cd0 100644
--- a/Swiften/SASL/PLAINMessage.cpp
+++ b/Swiften/SASL/PLAINMessage.cpp
@@ -2,9 +2,37 @@
namespace Swift {
-PLAINMessage::PLAINMessage(const String& authcid, const String& password, const String& authzid) {
+PLAINMessage::PLAINMessage(const String& authcid, const String& password, const String& authzid) : authcid(authcid), authzid(authzid), password(password) {
+}
+
+PLAINMessage::PLAINMessage(const ByteArray& value) {
+ size_t i = 0;
+ while (i < value.getSize() && value[i] != '\0') {
+ authzid += value[i];
+ ++i;
+ }
+ if (i == value.getSize()) {
+ return;
+ }
+ ++i;
+ while (i < value.getSize() && value[i] != '\0') {
+ authcid += value[i];
+ ++i;
+ }
+ if (i == value.getSize()) {
+ authcid = "";
+ return;
+ }
+ ++i;
+ while (i < value.getSize()) {
+ password += value[i];
+ ++i;
+ }
+}
+
+ByteArray PLAINMessage::getValue() const {
String s = authzid + '\0' + authcid + '\0' + password;
- value_ = ByteArray(s.getUTF8Data(), s.getUTF8Size());
+ return ByteArray(s.getUTF8Data(), s.getUTF8Size());
}
}