From 22094368c2865dcfb6daf8366425212b721a4657 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Thu, 05 Feb 2009 17:42:14 +0000
Subject: [PATCH] Merge ASN1 branch to trunk

---
 opends/src/server/org/opends/server/tools/LDAPAuthenticationHandler.java |  209 ++++++++++++++++++++++++++-------------------------
 1 files changed, 106 insertions(+), 103 deletions(-)

diff --git a/opends/src/server/org/opends/server/tools/LDAPAuthenticationHandler.java b/opends/src/server/org/opends/server/tools/LDAPAuthenticationHandler.java
index a24bec3..1dabcd2 100644
--- a/opends/src/server/org/opends/server/tools/LDAPAuthenticationHandler.java
+++ b/opends/src/server/org/opends/server/tools/LDAPAuthenticationHandler.java
@@ -37,7 +37,6 @@
 import java.security.MessageDigest;
 import java.security.PrivilegedExceptionAction;
 import java.security.SecureRandom;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -58,15 +57,16 @@
 import javax.security.sasl.SaslClient;
 
 import org.opends.server.protocols.asn1.ASN1Exception;
-import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.ldap.BindRequestProtocolOp;
 import org.opends.server.protocols.ldap.BindResponseProtocolOp;
 import org.opends.server.protocols.ldap.ExtendedRequestProtocolOp;
 import org.opends.server.protocols.ldap.ExtendedResponseProtocolOp;
-import org.opends.server.protocols.ldap.LDAPControl;
 import org.opends.server.protocols.ldap.LDAPMessage;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.LDAPException;
+import org.opends.server.types.Control;
+import org.opends.server.types.ByteString;
+import org.opends.server.types.ByteSequence;
 import org.opends.server.util.Base64;
 import org.opends.server.util.PasswordReader;
 
@@ -100,7 +100,7 @@
        implements PrivilegedExceptionAction<Object>, CallbackHandler
 {
   // The bind DN for GSSAPI authentication.
-  private ASN1OctetString gssapiBindDN;
+  private ByteSequence gssapiBindDN;
 
   // The LDAP reader that will be used to read data from the server.
   private LDAPReader reader;
@@ -276,10 +276,10 @@
    * @throws  LDAPException  If the bind fails or some other server-side problem
    *                         occurs during processing.
    */
-  public String doSimpleBind(int ldapVersion, ASN1OctetString bindDN,
-                             ASN1OctetString bindPassword,
-                             ArrayList<LDAPControl> requestControls,
-                             ArrayList<LDAPControl> responseControls)
+  public String doSimpleBind(int ldapVersion, ByteSequence bindDN,
+                             ByteSequence bindPassword,
+                             List<Control> requestControls,
+                             List<Control> responseControls)
          throws ClientException, LDAPException
   {
     // See if we need to prompt the user for the password.
@@ -287,21 +287,21 @@
     {
       if (bindDN == null)
       {
-        bindPassword = new ASN1OctetString();
+        bindPassword = ByteString.empty();
       }
       else
       {
         System.out.print(INFO_LDAPAUTH_PASSWORD_PROMPT.get(
-                bindDN.stringValue()));
+                bindDN.toString()));
         System.out.flush();
         char[] pwChars = PasswordReader.readPassword();
         if (pwChars == null)
         {
-          bindPassword = new ASN1OctetString();
+          bindPassword = ByteString.empty();
         }
         else
         {
-          bindPassword = new ASN1OctetString(getBytes(pwChars));
+          bindPassword = ByteString.wrap(getBytes(pwChars));
           Arrays.fill(pwChars, '\u0000');
         }
       }
@@ -311,13 +311,14 @@
     // Make sure that critical elements aren't null.
     if (bindDN == null)
     {
-      bindDN = new ASN1OctetString();
+      bindDN = ByteString.empty();
     }
 
 
     // Create the bind request and send it to the server.
     BindRequestProtocolOp bindRequest =
-         new BindRequestProtocolOp(bindDN, ldapVersion, bindPassword);
+         new BindRequestProtocolOp(bindDN.toByteString(), ldapVersion,
+             bindPassword.toByteString());
     LDAPMessage bindRequestMessage =
          new LDAPMessage(nextMessageID.getAndIncrement(), bindRequest,
                          requestControls);
@@ -387,7 +388,7 @@
 
     // See if there are any controls in the response.  If so, then add them to
     // the response controls list.
-    ArrayList<LDAPControl> respControls = responseMessage.getControls();
+    List<Control> respControls = responseMessage.getControls();
     if ((respControls != null) && (! respControls.isEmpty()))
     {
       responseControls.addAll(respControls);
@@ -482,17 +483,17 @@
    * @throws  LDAPException  If the bind fails or some other server-side problem
    *                         occurs during processing.
    */
-  public String doSASLBind(ASN1OctetString bindDN, ASN1OctetString bindPassword,
+  public String doSASLBind(ByteSequence bindDN, ByteSequence bindPassword,
                            String mechanism,
                            Map<String,List<String>> saslProperties,
-                           ArrayList<LDAPControl> requestControls,
-                           ArrayList<LDAPControl> responseControls)
+                           List<Control> requestControls,
+                           List<Control> responseControls)
          throws ClientException, LDAPException
   {
     // Make sure that critical elements aren't null.
     if (bindDN == null)
     {
-      bindDN = new ASN1OctetString();
+      bindDN = ByteString.empty();
     }
 
     if ((mechanism == null) || (mechanism.length() == 0))
@@ -569,10 +570,10 @@
    * @throws  LDAPException  If the bind fails or some other server-side problem
    *                         occurs during processing.
    */
-  public String doSASLAnonymous(ASN1OctetString bindDN,
+  public String doSASLAnonymous(ByteSequence bindDN,
                      Map<String,List<String>> saslProperties,
-                     ArrayList<LDAPControl> requestControls,
-                     ArrayList<LDAPControl> responseControls)
+                     List<Control> requestControls,
+                     List<Control> responseControls)
          throws ClientException, LDAPException
   {
     String trace = null;
@@ -620,19 +621,19 @@
 
 
     // Construct the bind request and send it to the server.
-    ASN1OctetString saslCredentials;
+    ByteString saslCredentials;
     if (trace == null)
     {
       saslCredentials = null;
     }
     else
     {
-      saslCredentials = new ASN1OctetString(trace);
+      saslCredentials = ByteString.valueOf(trace);
     }
 
     BindRequestProtocolOp bindRequest =
-         new BindRequestProtocolOp(bindDN, SASL_MECHANISM_ANONYMOUS,
-                                   saslCredentials);
+         new BindRequestProtocolOp(bindDN.toByteString(),
+             SASL_MECHANISM_ANONYMOUS, saslCredentials);
     LDAPMessage requestMessage =
          new LDAPMessage(nextMessageID.getAndIncrement(), bindRequest,
                          requestControls);
@@ -702,7 +703,7 @@
 
     // See if there are any controls in the response.  If so, then add them to
     // the response controls list.
-    ArrayList<LDAPControl> respControls = responseMessage.getControls();
+    List<Control> respControls = responseMessage.getControls();
     if ((respControls != null) && (! respControls.isEmpty()))
     {
       responseControls.addAll(respControls);
@@ -813,11 +814,11 @@
    * @throws  LDAPException  If the bind fails or some other server-side problem
    *                         occurs during processing.
    */
-  public String doSASLCRAMMD5(ASN1OctetString bindDN,
-                     ASN1OctetString bindPassword,
+  public String doSASLCRAMMD5(ByteSequence bindDN,
+                     ByteSequence bindPassword,
                      Map<String,List<String>> saslProperties,
-                     ArrayList<LDAPControl> requestControls,
-                     ArrayList<LDAPControl> responseControls)
+                     List<Control> requestControls,
+                     List<Control> responseControls)
          throws ClientException, LDAPException
   {
     String authID  = null;
@@ -883,11 +884,11 @@
       char[] pwChars = PasswordReader.readPassword();
       if (pwChars == null)
       {
-        bindPassword = new ASN1OctetString();
+        bindPassword = ByteString.empty();
       }
       else
       {
-        bindPassword = new ASN1OctetString(getBytes(pwChars));
+        bindPassword = ByteString.wrap(getBytes(pwChars));
         Arrays.fill(pwChars, '\u0000');
       }
     }
@@ -897,7 +898,8 @@
     // we'll simply indicate that we want to use CRAM-MD5 so the server will
     // send us the challenge.
     BindRequestProtocolOp bindRequest1 =
-         new BindRequestProtocolOp(bindDN, SASL_MECHANISM_CRAM_MD5, null);
+         new BindRequestProtocolOp(bindDN.toByteString(),
+             SASL_MECHANISM_CRAM_MD5, null);
     // FIXME -- Should we include request controls in both stages or just the
     // second stage?
     LDAPMessage requestMessage1 =
@@ -1026,7 +1028,7 @@
 
     // Make sure that the bind response contains SASL credentials with the
     // challenge to use for the next stage of the bind.
-    ASN1OctetString serverChallenge = bindResponse1.getServerSASLCredentials();
+    ByteString serverChallenge = bindResponse1.getServerSASLCredentials();
     if (serverChallenge == null)
     {
       Message message = ERR_LDAPAUTH_NO_CRAMMD5_SERVER_CREDENTIALS.get();
@@ -1044,8 +1046,8 @@
 
     // Create and send the second bind request to the server.
     BindRequestProtocolOp bindRequest2 =
-         new BindRequestProtocolOp(bindDN, SASL_MECHANISM_CRAM_MD5,
-                                   new ASN1OctetString(buffer.toString()));
+         new BindRequestProtocolOp(bindDN.toByteString(),
+             SASL_MECHANISM_CRAM_MD5, ByteString.valueOf(buffer.toString()));
     LDAPMessage requestMessage2 =
          new LDAPMessage(nextMessageID.getAndIncrement(), bindRequest2,
                          requestControls);
@@ -1115,7 +1117,7 @@
 
     // See if there are any controls in the response.  If so, then add them to
     // the response controls list.
-    ArrayList<LDAPControl> respControls = responseMessage2.getControls();
+    List<Control> respControls = responseMessage2.getControls();
     if ((respControls != null) && (! respControls.isEmpty()))
     {
       responseControls.addAll(respControls);
@@ -1193,8 +1195,8 @@
    * @throws  ClientException  If a problem occurs while attempting to perform
    *                           the necessary initialization.
    */
-  private String generateCRAMMD5Digest(ASN1OctetString password,
-                                       ASN1OctetString challenge)
+  private String generateCRAMMD5Digest(ByteSequence password,
+                                       ByteSequence challenge)
           throws ClientException
   {
     // Perform the necessary initialization if it hasn't been done yet.
@@ -1223,13 +1225,13 @@
 
 
     // Get the byte arrays backing the password and challenge.
-    byte[] p = password.value();
-    byte[] c = challenge.value();
+    byte[] p = password.toByteArray();
+    byte[] c = challenge.toByteArray();
 
 
     // If the password is longer than the HMAC-MD5 block length, then use an
     // MD5 digest of the password rather than the password itself.
-    if (p.length > HMAC_MD5_BLOCK_LENGTH)
+    if (password.length() > HMAC_MD5_BLOCK_LENGTH)
     {
       p = md5Digest.digest(p);
     }
@@ -1321,11 +1323,11 @@
    * @throws  LDAPException  If the bind fails or some other server-side problem
    *                         occurs during processing.
    */
-  public String doSASLDigestMD5(ASN1OctetString bindDN,
-                     ASN1OctetString bindPassword,
+  public String doSASLDigestMD5(ByteSequence bindDN,
+                     ByteSequence bindPassword,
                      Map<String,List<String>> saslProperties,
-                     ArrayList<LDAPControl> requestControls,
-                     ArrayList<LDAPControl> responseControls)
+                     List<Control> requestControls,
+                     List<Control> responseControls)
          throws ClientException, LDAPException
   {
     String  authID               = null;
@@ -1480,11 +1482,11 @@
       char[] pwChars = PasswordReader.readPassword();
       if (pwChars == null)
       {
-        bindPassword = new ASN1OctetString();
+        bindPassword = ByteString.empty();
       }
       else
       {
-        bindPassword = new ASN1OctetString(getBytes(pwChars));
+        bindPassword = ByteString.wrap(getBytes(pwChars));
         Arrays.fill(pwChars, '\u0000');
       }
     }
@@ -1494,7 +1496,8 @@
     // we'll simply indicate that we want to use DIGEST-MD5 so the server will
     // send us the challenge.
     BindRequestProtocolOp bindRequest1 =
-         new BindRequestProtocolOp(bindDN, SASL_MECHANISM_DIGEST_MD5, null);
+         new BindRequestProtocolOp(bindDN.toByteString(),
+             SASL_MECHANISM_DIGEST_MD5, null);
     // FIXME -- Should we include request controls in both stages or just the
     // second stage?
     LDAPMessage requestMessage1 =
@@ -1623,7 +1626,7 @@
 
     // Make sure that the bind response contains SASL credentials with the
     // information to use for the next stage of the bind.
-    ASN1OctetString serverCredentials =
+    ByteString serverCredentials =
          bindResponse1.getServerSASLCredentials();
     if (serverCredentials == null)
     {
@@ -1636,7 +1639,7 @@
     // particular, look at the realm, the nonce, the QoP modes, and the charset.
     // We'll only care about the realm if none was provided in the SASL
     // properties and only one was provided in the server SASL credentials.
-    String  credString = serverCredentials.stringValue();
+    String  credString = serverCredentials.toString();
     String  lowerCreds = toLowerCase(credString);
     String  nonce      = null;
     boolean useUTF8    = false;
@@ -1751,7 +1754,7 @@
     try
     {
       responseDigest = generateDigestMD5Response(authID, authzID,
-                                                 bindPassword.value(), realm,
+                                                 bindPassword, realm,
                                                  nonce, cnonce, nonceCount,
                                                  digestURI, qop, charset);
     }
@@ -1809,8 +1812,9 @@
 
     // Generate and send the second bind request.
     BindRequestProtocolOp bindRequest2 =
-         new BindRequestProtocolOp(bindDN, SASL_MECHANISM_DIGEST_MD5,
-                                   new ASN1OctetString(credBuffer.toString()));
+         new BindRequestProtocolOp(bindDN.toByteString(),
+             SASL_MECHANISM_DIGEST_MD5,
+             ByteString.valueOf(credBuffer.toString()));
     LDAPMessage requestMessage2 =
          new LDAPMessage(nextMessageID.getAndIncrement(), bindRequest2,
                          requestControls);
@@ -1880,7 +1884,7 @@
 
     // See if there are any controls in the response.  If so, then add them to
     // the response controls list.
-    ArrayList<LDAPControl> respControls = responseMessage2.getControls();
+    List<Control> respControls = responseMessage2.getControls();
     if ((respControls != null) && (! respControls.isEmpty()))
     {
       responseControls.addAll(respControls);
@@ -1941,14 +1945,14 @@
 
     // Make sure that the bind response included server SASL credentials with
     // the appropriate rspauth value.
-    ASN1OctetString rspAuthCreds = bindResponse2.getServerSASLCredentials();
+    ByteString rspAuthCreds = bindResponse2.getServerSASLCredentials();
     if (rspAuthCreds == null)
     {
       Message message = ERR_LDAPAUTH_DIGESTMD5_NO_RSPAUTH_CREDS.get();
       throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, message);
     }
 
-    String credStr = toLowerCase(rspAuthCreds.stringValue());
+    String credStr = toLowerCase(rspAuthCreds.toString());
     if (! credStr.startsWith("rspauth="))
     {
       Message message = ERR_LDAPAUTH_DIGESTMD5_NO_RSPAUTH_CREDS.get();
@@ -1972,7 +1976,7 @@
     try
     {
       clientRspAuth =
-           generateDigestMD5RspAuth(authID, authzID, bindPassword.value(),
+           generateDigestMD5RspAuth(authID, authzID, bindPassword,
                                     realm, nonce, cnonce, nonceCount, digestURI,
                                     qop, charset);
     }
@@ -2195,7 +2199,7 @@
    *                                        invalid for some reason.
    */
   private String generateDigestMD5Response(String authID, String authzID,
-                                           byte[] password, String realm,
+                                           ByteSequence password, String realm,
                                            String nonce, String cnonce,
                                            String nonceCount, String digestURI,
                                            String qop, String charset)
@@ -2226,9 +2230,9 @@
     a1String1.append(':');
 
     byte[] a1Bytes1a = a1String1.toString().getBytes(charset);
-    byte[] a1Bytes1  = new byte[a1Bytes1a.length + password.length];
+    byte[] a1Bytes1  = new byte[a1Bytes1a.length + password.length()];
     System.arraycopy(a1Bytes1a, 0, a1Bytes1, 0, a1Bytes1a.length);
-    System.arraycopy(password, 0, a1Bytes1, a1Bytes1a.length, password.length);
+    password.copyTo(a1Bytes1, a1Bytes1a.length);
     byte[] urpHash = md5Digest.digest(a1Bytes1);
 
 
@@ -2308,7 +2312,7 @@
    *                                        invalid for some reason.
    */
   public byte[] generateDigestMD5RspAuth(String authID, String authzID,
-                                         byte[] password, String realm,
+                                         ByteSequence password, String realm,
                                          String nonce, String cnonce,
                                          String nonceCount, String digestURI,
                                          String qop, String charset)
@@ -2322,10 +2326,9 @@
     a1String1.append(':');
 
     byte[] a1Bytes1a = a1String1.toString().getBytes(charset);
-    byte[] a1Bytes1  = new byte[a1Bytes1a.length + password.length];
+    byte[] a1Bytes1  = new byte[a1Bytes1a.length + password.length()];
     System.arraycopy(a1Bytes1a, 0, a1Bytes1, 0, a1Bytes1a.length);
-    System.arraycopy(password, 0, a1Bytes1, a1Bytes1a.length,
-                     password.length);
+    password.copyTo(a1Bytes1, a1Bytes1a.length);
     byte[] urpHash = md5Digest.digest(a1Bytes1);
 
 
@@ -2460,10 +2463,10 @@
    * @throws  LDAPException  If the bind fails or some other server-side problem
    *                         occurs during processing.
    */
-  public String doSASLExternal(ASN1OctetString bindDN,
+  public String doSASLExternal(ByteSequence bindDN,
                      Map<String,List<String>> saslProperties,
-                     ArrayList<LDAPControl> requestControls,
-                     ArrayList<LDAPControl> responseControls)
+                     List<Control> requestControls,
+                     List<Control> responseControls)
          throws ClientException, LDAPException
   {
     // Make sure that no SASL properties were provided.
@@ -2478,7 +2481,8 @@
 
     // Construct the bind request and send it to the server.
     BindRequestProtocolOp bindRequest =
-         new BindRequestProtocolOp(bindDN, SASL_MECHANISM_EXTERNAL, null);
+         new BindRequestProtocolOp(bindDN.toByteString(),
+             SASL_MECHANISM_EXTERNAL, null);
     LDAPMessage requestMessage =
          new LDAPMessage(nextMessageID.getAndIncrement(), bindRequest,
                          requestControls);
@@ -2548,7 +2552,7 @@
 
     // See if there are any controls in the response.  If so, then add them to
     // the response controls list.
-    ArrayList<LDAPControl> respControls = responseMessage.getControls();
+    List<Control> respControls = responseMessage.getControls();
     if ((respControls != null) && (! respControls.isEmpty()))
     {
       responseControls.addAll(respControls);
@@ -2656,11 +2660,11 @@
    * @throws  LDAPException  If the bind fails or some other server-side problem
    *                         occurs during processing.
    */
-  public String doSASLGSSAPI(ASN1OctetString bindDN,
-                     ASN1OctetString bindPassword,
+  public String doSASLGSSAPI(ByteSequence bindDN,
+                     ByteSequence bindPassword,
                      Map<String,List<String>> saslProperties,
-                     ArrayList<LDAPControl> requestControls,
-                     ArrayList<LDAPControl> responseControls)
+                     List<Control> requestControls,
+                     List<Control> responseControls)
          throws ClientException, LDAPException
   {
     String kdc     = null;
@@ -2677,7 +2681,7 @@
     }
     else
     {
-      gssapiAuthPW = bindPassword.stringValue().toCharArray();
+      gssapiAuthPW = bindPassword.toString().toCharArray();
     }
 
 
@@ -2975,11 +2979,11 @@
    * @throws  LDAPException  If the bind fails or some other server-side problem
    *                         occurs during processing.
    */
-  public String doSASLPlain(ASN1OctetString bindDN,
-                     ASN1OctetString bindPassword,
+  public String doSASLPlain(ByteSequence bindDN,
+                     ByteSequence bindPassword,
                      Map<String,List<String>> saslProperties,
-                     ArrayList<LDAPControl> requestControls,
-                     ArrayList<LDAPControl> responseControls)
+                     List<Control> requestControls,
+                     List<Control> responseControls)
          throws ClientException, LDAPException
   {
     String authID  = null;
@@ -3062,11 +3066,11 @@
       char[] pwChars = PasswordReader.readPassword();
       if (pwChars == null)
       {
-        bindPassword = new ASN1OctetString();
+        bindPassword = ByteString.empty();
       }
       else
       {
-        bindPassword = new ASN1OctetString(getBytes(pwChars));
+        bindPassword = ByteString.wrap(getBytes(pwChars));
         Arrays.fill(pwChars, '\u0000');
       }
     }
@@ -3081,12 +3085,12 @@
     credBuffer.append('\u0000');
     credBuffer.append(authID);
     credBuffer.append('\u0000');
-    credBuffer.append(bindPassword.stringValue());
+    credBuffer.append(bindPassword.toString());
 
-    ASN1OctetString saslCredentials =
-         new ASN1OctetString(credBuffer.toString());
+    ByteString saslCredentials =
+        ByteString.valueOf(credBuffer.toString());
     BindRequestProtocolOp bindRequest =
-         new BindRequestProtocolOp(bindDN, SASL_MECHANISM_PLAIN,
+         new BindRequestProtocolOp(bindDN.toByteString(), SASL_MECHANISM_PLAIN,
                                 saslCredentials);
     LDAPMessage requestMessage =
          new LDAPMessage(nextMessageID.getAndIncrement(), bindRequest,
@@ -3157,7 +3161,7 @@
 
     // See if there are any controls in the response.  If so, then add them to
     // the response controls list.
-    ArrayList<LDAPControl> respControls = responseMessage.getControls();
+    List<Control> respControls = responseMessage.getControls();
     if ((respControls != null) && (! respControls.isEmpty()))
     {
       responseControls.addAll(respControls);
@@ -3294,13 +3298,13 @@
 
 
       // Get the SASL credentials to include in the initial bind request.
-      ASN1OctetString saslCredentials;
+      ByteString saslCredentials;
       if (saslClient.hasInitialResponse())
       {
         try
         {
           byte[] credBytes = saslClient.evaluateChallenge(new byte[0]);
-          saslCredentials = new ASN1OctetString(credBytes);
+          saslCredentials = ByteString.wrap(credBytes);
         }
         catch (Exception e)
         {
@@ -3318,8 +3322,8 @@
 
 
       BindRequestProtocolOp bindRequest =
-           new BindRequestProtocolOp(gssapiBindDN, SASL_MECHANISM_GSSAPI,
-                                     saslCredentials);
+           new BindRequestProtocolOp(gssapiBindDN.toByteString(),
+               SASL_MECHANISM_GSSAPI, saslCredentials);
       // FIXME -- Add controls here?
       LDAPMessage requestMessage =
            new LDAPMessage(nextMessageID.getAndIncrement(), bindRequest);
@@ -3436,13 +3440,13 @@
         {
           // We should be done after this, but we still need to look for and
           // handle the server SASL credentials.
-          ASN1OctetString serverSASLCredentials =
+          ByteString serverSASLCredentials =
                bindResponse.getServerSASLCredentials();
           if (serverSASLCredentials != null)
           {
             try
             {
-              saslClient.evaluateChallenge(serverSASLCredentials.value());
+              saslClient.evaluateChallenge(serverSASLCredentials.toByteArray());
             }
             catch (Exception e)
             {
@@ -3469,7 +3473,7 @@
         else if (resultCode == LDAPResultCode.SASL_BIND_IN_PROGRESS)
         {
           // Read the response and process the server SASL credentials.
-          ASN1OctetString serverSASLCredentials =
+          ByteString serverSASLCredentials =
                bindResponse.getServerSASLCredentials();
           byte[] credBytes;
           try
@@ -3480,8 +3484,8 @@
             }
             else
             {
-              credBytes =
-                   saslClient.evaluateChallenge(serverSASLCredentials.value());
+              credBytes = saslClient.evaluateChallenge(
+                  serverSASLCredentials.toByteArray());
             }
           }
           catch (Exception e)
@@ -3495,8 +3499,8 @@
 
           // Send the next bind in the sequence to the server.
           bindRequest =
-               new BindRequestProtocolOp(gssapiBindDN, SASL_MECHANISM_GSSAPI,
-                                         new ASN1OctetString(credBytes));
+               new BindRequestProtocolOp(gssapiBindDN.toByteString(),
+                   SASL_MECHANISM_GSSAPI, ByteString.wrap(credBytes));
           // FIXME -- Add controls here?
           requestMessage =
                new LDAPMessage(nextMessageID.getAndIncrement(), bindRequest);
@@ -3700,7 +3704,7 @@
    * @throws  LDAPException  If a server-side problem occurs during the request
    *                         processing.
    */
-  public ASN1OctetString requestAuthorizationIdentity()
+  public ByteString requestAuthorizationIdentity()
          throws ClientException, LDAPException
   {
     // Construct the extended request and send it to the server.
@@ -3810,14 +3814,13 @@
 
 
     // Get the authorization ID (if there is one) and return it to the caller.
-    ASN1OctetString authzID = extendedResponse.getValue();
-    if ((authzID == null) || (authzID.value() == null) ||
-        (authzID.value().length == 0))
+    ByteString authzID = extendedResponse.getValue();
+    if ((authzID == null) || (authzID.length() == 0))
     {
       return null;
     }
 
-    String valueString = authzID.stringValue();
+    String valueString = authzID.toString();
     if ((valueString == null) || (valueString.length() == 0) ||
         valueString.equalsIgnoreCase("dn:"))
     {

--
Gitblit v1.10.0