summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/SASL/PLAINMessage.cpp')
-rw-r--r--Swiften/SASL/PLAINMessage.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/Swiften/SASL/PLAINMessage.cpp b/Swiften/SASL/PLAINMessage.cpp
new file mode 100644
index 0000000..66f8cd0
--- /dev/null
+++ b/Swiften/SASL/PLAINMessage.cpp
@@ -0,0 +1,38 @@
+#include "Swiften/SASL/PLAINMessage.h"
+
+namespace Swift {
+
+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;
+ return ByteArray(s.getUTF8Data(), s.getUTF8Size());
+}
+
+}