diff options
Diffstat (limited to 'src/com/isode/stroke/sasl/PLAINMessage.java')
-rw-r--r-- | src/com/isode/stroke/sasl/PLAINMessage.java | 75 |
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 |