Class AbstractEncryptor

java.lang.Object
org.alfresco.encryption.AbstractEncryptor
All Implemented Interfaces:
Encryptor
Direct Known Subclasses:
DefaultEncryptor

public abstract class AbstractEncryptor extends Object implements Encryptor
Basic support for encryption engines.
Since:
4.0
  • Field Details

    • logger

      protected static final org.apache.commons.logging.Log logger
    • cipherAlgorithm

      protected String cipherAlgorithm
    • cipherProvider

      protected String cipherProvider
    • keyProvider

      protected KeyProvider keyProvider
  • Constructor Details

    • AbstractEncryptor

      protected AbstractEncryptor()
      Constructs with defaults
  • Method Details

    • setKeyProvider

      public void setKeyProvider(KeyProvider keyProvider)
      Parameters:
      keyProvider - provides encryption keys based on aliases
    • getKeyProvider

      public KeyProvider getKeyProvider()
    • init

      public void init()
    • getCipher

      protected abstract Cipher getCipher(String keyAlias, AlgorithmParameters params, int mode)
      Factory method to be written by implementations to construct and initialize physical ciphering objects.
      Parameters:
      keyAlias - the key alias
      params - algorithm-specific parameters
      mode - the cipher mode
      Returns:
      Cipher
    • encrypt

      public Pair<byte[],AlgorithmParameters> encrypt(String keyAlias, AlgorithmParameters params, byte[] input)
      Encrypt some bytes
      Specified by:
      encrypt in interface Encryptor
      Parameters:
      keyAlias - the encryption key alias
      input - the data to encrypt
      Returns:
      the encrypted data and parameters used
    • resetCipher

      protected void resetCipher()
    • decrypt

      public byte[] decrypt(String keyAlias, AlgorithmParameters params, byte[] input)
      Decrypt some bytes
      Specified by:
      decrypt in interface Encryptor
      Parameters:
      keyAlias - the encryption key alias
      input - the data to decrypt
      Returns:
      the unencrypted data
    • decrypt

      public InputStream decrypt(String keyAlias, AlgorithmParameters params, InputStream input)
      Decrypt an input stream
      Specified by:
      decrypt in interface Encryptor
      Parameters:
      keyAlias - the encryption key alias
      input - the data to decrypt
      Returns:
      the unencrypted data
    • encryptObject

      public Pair<byte[],AlgorithmParameters> encryptObject(String keyAlias, AlgorithmParameters params, Object input)
      Encrypt an object

      Serializes and encrypts the input data.

      Specified by:
      encryptObject in interface Encryptor
      Parameters:
      keyAlias - the encryption key alias
      input - the object to write to bytes
      Returns:
      the encrypted data and parameters used
    • decryptObject

      public Object decryptObject(String keyAlias, AlgorithmParameters params, byte[] input)
      Decrypt data as an object

      Decrypts and deserializes the input data

      Specified by:
      decryptObject in interface Encryptor
      Parameters:
      keyAlias - the encryption key alias
      input - the data to decrypt
      Returns:
      the unencrypted data deserialized
    • sealObject

      public Serializable sealObject(String keyAlias, AlgorithmParameters params, Serializable input)
      Description copied from interface: Encryptor
      Convenience method to seal on object up cryptographically.

      Note that the original object may be returned directly if there is no key associated with the alias.

      Specified by:
      sealObject in interface Encryptor
      Parameters:
      keyAlias - the encryption key alias
      input - the object to encrypt and seal
      Returns:
      the sealed object that can be decrypted with the original key
    • unsealObject

      public Serializable unsealObject(String keyAlias, Serializable input) throws InvalidKeyException
      Description copied from interface: Encryptor
      Convenience method to unseal on object sealed up cryptographically.

      Note that the algorithm parameters not provided on the assumption that a symmetric key algorithm is in use - only the key is required for unsealing.

      Note that the original object may be returned directly if there is no key associated with the alias or if the input object is not a SealedObject.

      Specified by:
      unsealObject in interface Encryptor
      Parameters:
      keyAlias - the encryption key alias
      input - the object to decrypt and unseal
      Returns:
      the original unsealed object that was encrypted with the original key
      Throws:
      InvalidKeyException
    • setCipherAlgorithm

      public void setCipherAlgorithm(String cipherAlgorithm)
    • getCipherAlgorithm

      public String getCipherAlgorithm()
    • setCipherProvider

      public void setCipherProvider(String cipherProvider)
    • getCipherProvider

      public String getCipherProvider()
    • decodeAlgorithmParameters

      public AlgorithmParameters decodeAlgorithmParameters(byte[] encoded)
      Decodes encoded cipher algorithm parameters
      Specified by:
      decodeAlgorithmParameters in interface Encryptor
      Parameters:
      encoded - the encoded cipher algorithm parameters
      Returns:
      the decoded cipher algorithmParameters