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

david_page
14.17.2007 e2cc17fc9aaee0c03fe59b83bc22de9ec735cc91
No issue.
CryptoManager
Step 2. Factor interface from implementation.
1 files added
7 files modified
187 ■■■■ changed files
opends/src/ads/org/opends/admin/ads/ADSContextHelper.java 3 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/SchemaBackend.java 39 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/BackupManager.java 14 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/crypto/CryptoManager.java 54 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/crypto/CryptoManagerSync.java 8 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/crypto/GetSymmetricKeyExtendedOperation.java 2 ●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/types/CryptoManagerException.java 65 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/crypto/CryptoManagerTestCase.java 2 ●●● patch | view | raw | blame | history
opends/src/ads/org/opends/admin/ads/ADSContextHelper.java
@@ -51,6 +51,7 @@
import org.opends.server.admin.std.meta.LDIFBackendCfgDefn;
import org.opends.server.config.ConfigConstants;
import org.opends.server.crypto.CryptoManager;
import org.opends.server.types.CryptoManagerException;
import org.opends.server.types.DN;
/**
@@ -277,7 +278,7 @@
      throw new ADSContextException(
          ADSContextException.ErrorType.ERROR_UNEXPECTED, ne);
    }
    catch (CryptoManager.CryptoManagerException cme)
    catch (CryptoManagerException cme)
    {
      throw new ADSContextException(
          ADSContextException.ErrorType.ERROR_UNEXPECTED, cme);
opends/src/server/org/opends/server/backends/SchemaBackend.java
@@ -80,40 +80,9 @@
import org.opends.server.schema.MatchingRuleUseSyntax;
import org.opends.server.schema.NameFormSyntax;
import org.opends.server.schema.ObjectClassSyntax;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
import org.opends.server.types.AttributeValue;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.BackupInfo;
import org.opends.server.types.ConditionResult;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.crypto.CryptoManager;
import org.opends.server.types.DebugLogLevel;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DITContentRule;
import org.opends.server.types.DITStructureRule;
import org.opends.server.types.DN;
import org.opends.server.types.Entry;
import org.opends.server.types.ExistingFileBehavior;
import org.opends.server.types.IndexType;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFExportConfig;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.LDIFImportResult;
import org.opends.server.types.MatchingRuleUse;
import org.opends.server.types.Modification;
import org.opends.server.types.ModificationType;
import org.opends.server.types.NameForm;
import org.opends.server.types.ObjectClass;
import org.opends.server.types.ObjectClassType;
import org.opends.server.types.Privilege;
import org.opends.server.types.RDN;
import org.opends.server.types.RestoreConfig;
import org.opends.server.types.ResultCode;
import org.opends.server.types.Schema;
import org.opends.server.types.SearchFilter;
import org.opends.server.types.SearchScope;
import org.opends.server.types.CryptoManagerException;
import org.opends.server.types.*;
import org.opends.server.util.DynamicConstants;
import org.opends.server.util.LDIFException;
import org.opends.server.util.LDIFWriter;
@@ -4248,7 +4217,7 @@
        outputStream
                = cryptoManager.getCipherOutputStream(outputStream);
      }
      catch (CryptoManager.CryptoManagerException e)
      catch (CryptoManagerException e)
      {
        if (debugEnabled())
        {
@@ -4621,7 +4590,7 @@
        inputStream = DirectoryServer.getCryptoManager()
                                         .getCipherInputStream(inputStream);
      }
      catch (CryptoManager.CryptoManagerException e)
      catch (CryptoManagerException e)
      {
        Message message = ERR_SCHEMA_RESTORE_CANNOT_GET_CIPHER.get(
                backupFile.getPath(), stackTraceToSingleLineString(e));
opends/src/server/org/opends/server/backends/jeb/BackupManager.java
@@ -30,12 +30,8 @@
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.util.DynamicConstants;
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.BackupInfo;
import org.opends.server.crypto.CryptoManager;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.RestoreConfig;
import org.opends.server.types.CryptoManagerException;
import javax.crypto.Mac;
import java.io.BufferedReader;
@@ -64,7 +60,7 @@
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import org.opends.server.types.DebugLogLevel;
import org.opends.server.types.*;
import static org.opends.server.loggers.ErrorLogger.logError;
import static org.opends.server.loggers.debug.DebugLogger.*;
import org.opends.server.loggers.debug.DebugTracer;
@@ -347,7 +343,7 @@
        outputStream
                = cryptoManager.getCipherOutputStream(outputStream);
      }
      catch (CryptoManager.CryptoManagerException e)
      catch (CryptoManagerException e)
      {
        if (debugEnabled())
        {
@@ -976,7 +972,7 @@
      {
        inputStream = cryptoManager.getCipherInputStream(inputStream);
      }
      catch (CryptoManager.CryptoManagerException e)
      catch (CryptoManagerException e)
      {
        if (debugEnabled())
        {
@@ -1305,7 +1301,7 @@
      {
        inputStream = cryptoManager.getCipherInputStream(inputStream);
      }
      catch (CryptoManager.CryptoManagerException e)
      catch (CryptoManagerException e)
      {
        if (debugEnabled())
        {
opends/src/server/org/opends/server/crypto/CryptoManager.java
@@ -475,7 +475,7 @@
   * @throws CryptoManagerException If the certificate cannot be
   * retrieved.
   */
  public static byte[] getInstanceKeyCertificateFromLocalTruststore()
  static byte[] getInstanceKeyCertificateFromLocalTruststore()
          throws CryptoManagerException {
    // Construct the key entry DN.
    final AttributeValue distinguishedValue = new AttributeValue(
@@ -566,7 +566,7 @@
   * the instance-key public-key certificate or computing its MD5
   * hash.
   */
  public String getInstanceKeyID()
  String getInstanceKeyID()
          throws CryptoManagerException {
    return getInstanceKeyID(
            getInstanceKeyCertificateFromLocalTruststore());
@@ -583,6 +583,9 @@
   * @return The identifier of the supplied instance key.
   * @throws CryptoManagerException If there is a problem computing
   * the identifier from the instance key.
   *
   * TODO: make package-private if ADSContextHelper can get keyID from ADS
   * suffix: Issue https://opends.dev.java.net/issues/show_bug.cgi?id=2442
   */
  public static String getInstanceKeyID(byte[] instanceKeyCertificate)
            throws CryptoManagerException {
@@ -611,7 +614,7 @@
   @throws CryptoManagerException In case there is a problem
   searching for the entry, or, if necessary, adding it.
   */
  public static void publishInstanceKeyEntryInADS()
  static void publishInstanceKeyEntryInADS()
          throws CryptoManagerException {
    final byte[] instanceKeyCertificate
            = getInstanceKeyCertificateFromLocalTruststore();
@@ -989,7 +992,7 @@
   * the supplied symmetric key attribute value, unwrapping the
   * embedded secret key, or retrieving the requested public key.
   */
  public String reencodeSymmetricKeyAttribute(
  String reencodeSymmetricKeyAttribute(
          final String symmetricKeyAttribute,
          final String requestedInstanceKeyID)
          throws CryptoManagerException {
@@ -1895,7 +1898,7 @@
   *               was not already present but could not
   *               be imported.
   */
  public void importCipherKeyEntry(Entry entry)
  void importCipherKeyEntry(Entry entry)
       throws CryptoManagerException
  {
    // Ignore the entry if it does not have the appropriate
@@ -2123,7 +2126,7 @@
   *               was not already present but could not
   *               be imported.
   */
  public void importMacKeyEntry(Entry entry)
  void importMacKeyEntry(Entry entry)
       throws CryptoManagerException
  {
    // Ignore the entry if it does not have the appropriate
@@ -3380,43 +3383,4 @@
    // state
    private final String fType;
  }
  /**
   * This class defines an exception that is thrown in the case of
   * problems with encryption key managagment, and is a wrapper for a
   * variety of other cipher related exceptions.
   */
  public static class CryptoManagerException extends OpenDsException
  {
    /**
     * The serial version identifier required to satisfy the compiler
     * because this class extends <CODE>java.lang.Exception</CODE>,
     * which implements the <CODE>java.io.Serializable</CODE>
     * interface. This value was generated using the
     * <CODE>serialver</CODE> command-line utility included with the
     * Java SDK.
     */
    static final long serialVersionUID = -5890763923778143774L;
    /**
     * Creates an exception with the given message.
     * @param message the message message.
     */
    public CryptoManagerException(Message message) {
      super(message);
     }
    /**
     * Creates an exception with the given message and underlying
     * cause.
     * @param message The message message.
     * @param cause  The underlying cause.
     */
    public CryptoManagerException(Message message, Exception cause) {
      super(message, cause);
    }
  }
}
opends/src/server/org/opends/server/crypto/CryptoManagerSync.java
@@ -125,7 +125,7 @@
    try {
      CryptoManager.publishInstanceKeyEntryInADS();
    }
    catch (CryptoManager.CryptoManagerException ex) {
    catch (CryptoManagerException ex) {
      throw new InitializationException(ex.getMessageObject());
    }
    DirectoryServer.registerBackendInitializationListener(this);
@@ -270,7 +270,7 @@
          DirectoryServer.getCryptoManager().importMacKeyEntry(searchEntry);
        }
      }
      catch (CryptoManager.CryptoManagerException e)
      catch (CryptoManagerException e)
      {
        throw new DirectoryException(
             DirectoryServer.getServerErrorResultCode(), e);
@@ -483,7 +483,7 @@
          DirectoryServer.getCryptoManager().importMacKeyEntry(entry);
        }
      }
      catch (CryptoManager.CryptoManagerException e)
      catch (CryptoManagerException e)
      {
        Message message = Message.raw("Failed to import key entry: %s",
                                      e.getMessage());
@@ -556,7 +556,7 @@
          DirectoryServer.getCryptoManager().importMacKeyEntry(newEntry);
        }
      }
      catch (CryptoManager.CryptoManagerException e)
      catch (CryptoManagerException e)
      {
        Message message = Message.raw("Failed to import modified key entry: %s",
                                      e.getMessage());
opends/src/server/org/opends/server/crypto/GetSymmetricKeyExtendedOperation.java
@@ -229,7 +229,7 @@
      operation.setResponseValue(new ASN1OctetString(responseSymmetricKey));
      operation.setResultCode(ResultCode.SUCCESS);
    }
    catch (CryptoManager.CryptoManagerException e)
    catch (CryptoManagerException e)
    {
      operation.setResultCode(DirectoryServer.getServerErrorResultCode());
      operation.appendErrorMessage(e.getMessageObject());
opends/src/server/org/opends/server/types/CryptoManagerException.java
New file
@@ -0,0 +1,65 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2007 Sun Microsystems, Inc.
 */
package org.opends.server.types;
import org.opends.messages.Message;
/**
 * This class defines an exception that is thrown in the case of
 * problems with encryption key managagment, and is a wrapper for a
 * variety of other cipher related exceptions.
 */
public class CryptoManagerException extends OpenDsException {
  /**
   * The serial version identifier required to satisfy the compiler
   * because this class extends <CODE>java.lang.Exception</CODE>,
   * which implements the <CODE>java.io.Serializable</CODE>
   * interface. This value was generated using the
   * <CODE>serialver</CODE> command-line utility included with the
   * Java SDK.
   */
  static final long serialVersionUID = -5890763923778143774L;
  /**
   * Creates an exception with the given message.
   * @param message the message message.
   */
  public CryptoManagerException(Message message) {
    super(message);
   }
  /**
   * Creates an exception with the given message and underlying
   * cause.
   * @param message The message message.
   * @param cause  The underlying cause.
   */
  public CryptoManagerException(Message message, Exception cause) {
    super(message, cause);
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/crypto/CryptoManagerTestCase.java
@@ -447,7 +447,7 @@
    try {
      cm.decrypt(cipherText);
    }
    catch (CryptoManager.CryptoManagerException ex) {
    catch (CryptoManagerException ex) {
      // TODO: if reasons are added to CryptoManagerException, check for
      // expected cause.
    }