summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/isode/stroke/sasl/PLAINMessage.java')
-rw-r--r--src/com/isode/stroke/sasl/PLAINMessage.java75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/com/isode/stroke/sasl/PLAINMessage.java b/src/com/isode/stroke/sasl/PLAINMessage.java
new file mode 100644
index 0000000..5c1fe8b
--- /dev/null
+++ b/src/com/isode/stroke/sasl/PLAINMessage.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2010-2013 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+/*
+ * Copyright (c) 2015 Tarun Gupta.
+ * Licensed under the simplified BSD license.
+ * See Documentation/Licenses/BSD-simplified.txt for more information.
+ */
+
+package com.isode.stroke.sasl;
+
+import com.isode.stroke.sasl.ClientAuthenticator;
+import com.isode.stroke.base.SafeByteArray;
+import com.isode.stroke.base.ByteArray;
+
+public class PLAINMessage {
+
+ private String authcid = "";
+ private String authzid = "";
+ private SafeByteArray password = new SafeByteArray();
+
+ public PLAINMessage(final String authcid, final SafeByteArray password) {
+ this(authcid, password, "");
+ }
+
+ public PLAINMessage(final String authcid, final SafeByteArray password, final String authzid) {
+ this.authcid = authcid;
+ this.password = password;
+ this.authzid = authzid;
+ }
+
+ public PLAINMessage(final SafeByteArray value) {
+ int i = 0;
+ byte[] byteArrayValue = value.getData();
+ while (i < value.getSize() && byteArrayValue[i] != ((byte)0)) {
+ authzid += (char)(byteArrayValue[i]);
+ ++i;
+ }
+ if (i == value.getSize()) {
+ return;
+ }
+ ++i;
+ while (i < value.getSize() && byteArrayValue[i] != ((byte)0)) {
+ authcid += (char)(byteArrayValue[i]);
+ ++i;
+ }
+ if (i == value.getSize()) {
+ authcid = "";
+ return;
+ }
+ ++i;
+ while (i < value.getSize()) {
+ password.append(byteArrayValue[i]);
+ ++i;
+ }
+ }
+
+ public SafeByteArray getValue() {
+ return new SafeByteArray().append(authzid).append((byte)0).append(authcid).append((byte)0).append(password);
+ }
+
+ public String getAuthenticationID() {
+ return authcid;
+ }
+
+ public SafeByteArray getPassword() {
+ return password;
+ }
+
+ public String getAuthorizationID() {
+ return authzid;
+ }
+} \ No newline at end of file