mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

matthew_swift
05.42.2009 22094368c2865dcfb6daf8366425212b721a4657
opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java
@@ -29,7 +29,6 @@
import java.security.MessageDigest;
import java.util.Arrays;
import org.opends.messages.Message;
import org.opends.server.admin.std.server.MD5PasswordStorageSchemeCfg;
@@ -37,12 +36,7 @@
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.loggers.debug.DebugTracer;
import org.opends.server.types.ByteString;
import org.opends.server.types.ByteStringFactory;
import org.opends.server.types.DebugLogLevel;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.opends.server.types.ResultCode;
import org.opends.server.types.*;
import org.opends.server.util.Base64;
import static org.opends.messages.ExtensionMessages.*;
@@ -143,7 +137,7 @@
   * {@inheritDoc}
   */
  @Override()
  public ByteString encodePassword(ByteString plaintext)
  public ByteString encodePassword(ByteSequence plaintext)
         throws DirectoryException
  {
    byte[] digestBytes;
@@ -152,7 +146,9 @@
    {
      try
      {
        digestBytes = messageDigest.digest(plaintext.value());
        // TODO: Can we avoid this copy?
        byte[] plaintextBytes = plaintext.toByteArray();
        digestBytes = messageDigest.digest(plaintextBytes);
      }
      catch (Exception e)
      {
@@ -168,7 +164,7 @@
      }
    }
    return ByteStringFactory.create(Base64.encode(digestBytes));
    return ByteString.valueOf(Base64.encode(digestBytes));
  }
@@ -177,7 +173,7 @@
   * {@inheritDoc}
   */
  @Override()
  public ByteString encodePasswordWithScheme(ByteString plaintext)
  public ByteString encodePasswordWithScheme(ByteSequence plaintext)
         throws DirectoryException
  {
    StringBuilder buffer = new StringBuilder();
@@ -185,13 +181,15 @@
    buffer.append(STORAGE_SCHEME_NAME_MD5);
    buffer.append('}');
    // TODO: Can we avoid this copy?
    byte[] plaintextBytes = plaintext.toByteArray();
    byte[] digestBytes;
    synchronized (digestLock)
    {
      try
      {
        digestBytes = messageDigest.digest(plaintext.value());
        digestBytes = messageDigest.digest(plaintextBytes);
      }
      catch (Exception e)
      {
@@ -210,7 +208,7 @@
    buffer.append(Base64.encode(digestBytes));
    return ByteStringFactory.create(buffer.toString());
    return ByteString.valueOf(buffer.toString());
  }
@@ -219,16 +217,19 @@
   * {@inheritDoc}
   */
  @Override()
  public boolean passwordMatches(ByteString plaintextPassword,
                                 ByteString storedPassword)
  public boolean passwordMatches(ByteSequence plaintextPassword,
                                 ByteSequence storedPassword)
  {
    byte[] userPWDigestBytes;
    // TODO: Can we avoid this copy?
    byte[] plaintextPasswordBytes = plaintextPassword.toByteArray();
    ByteString userPWDigestBytes;
    synchronized (digestLock)
    {
      try
      {
        userPWDigestBytes = messageDigest.digest(plaintextPassword.value());
        userPWDigestBytes =
            ByteString.wrap(messageDigest.digest(plaintextPasswordBytes));
      }
      catch (Exception e)
      {
@@ -241,10 +242,11 @@
      }
    }
    byte[] storedPWDigestBytes;
    ByteString storedPWDigestBytes;
    try
    {
      storedPWDigestBytes = Base64.decode(storedPassword.stringValue());
      storedPWDigestBytes =
          ByteString.wrap(Base64.decode(storedPassword.toString()));
    }
    catch (Exception e)
    {
@@ -254,12 +256,12 @@
      }
      logError(ERR_PWSCHEME_CANNOT_BASE64_DECODE_STORED_PASSWORD.get(
          storedPassword.stringValue(), String.valueOf(e)));
          storedPassword.toString(), String.valueOf(e)));
      return false;
    }
    return Arrays.equals(userPWDigestBytes, storedPWDigestBytes);
    return userPWDigestBytes.equals(storedPWDigestBytes);
  }
@@ -280,7 +282,7 @@
   * {@inheritDoc}
   */
  @Override()
  public ByteString encodeAuthPassword(ByteString plaintext)
  public ByteString encodeAuthPassword(ByteSequence plaintext)
         throws DirectoryException
  {
    Message message =
@@ -294,7 +296,7 @@
   * {@inheritDoc}
   */
  @Override()
  public boolean authPasswordMatches(ByteString plaintextPassword,
  public boolean authPasswordMatches(ByteSequence plaintextPassword,
                                     String authInfo, String authValue)
  {
    // This storage scheme does not support the authentication password syntax.
@@ -318,7 +320,7 @@
   * {@inheritDoc}
   */
  @Override()
  public ByteString getPlaintextValue(ByteString storedPassword)
  public ByteString getPlaintextValue(ByteSequence storedPassword)
         throws DirectoryException
  {
    Message message = ERR_PWSCHEME_NOT_REVERSIBLE.get(STORAGE_SCHEME_NAME_MD5);