Class DefaultEncryptedProperties

  • All Implemented Interfaces:
    EncryptedProperties

    public class DefaultEncryptedProperties
    extends java.lang.Object
    implements EncryptedProperties
    Reference implementation of the EncryptedProperties interface. This implementation wraps a normal properties file, and creates surrogates for the getProperty and setProperty methods that perform encryption and decryption based on Encryptor.

    A very simple main program is provided that can be used to create an encrypted properties file. A better approach would be to allow unencrypted properties in the file and to encrypt them the first time the file is accessed.

    Since:
    June 1, 2007
    Author:
    Jeff Williams (jeff.williams .at. aspectsecurity.com) Aspect Security, kevin.w.wall@gmail.com
    See Also:
    EncryptedProperties, ReferenceEncryptedProperties
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      java.lang.String getProperty​(java.lang.String key)
      Gets the property value from the encrypted store, decrypts it, and returns the plaintext value to the caller.
      java.util.Set<?> keySet()
      Returns a Set view of properties.
      void load​(java.io.InputStream in)
      Reads a property list (key and element pairs) from the input stream.
      static void main​(java.lang.String[] args)
      Deprecated.
      Use EncryptedPropertiesUtils instead, which allows creating, reading, and writing encrypted properties.
      java.lang.String setProperty​(java.lang.String key, java.lang.String value)
      Encrypts the plaintext property value and stores the ciphertext value in the encrypted store.
      void store​(java.io.OutputStream out, java.lang.String comments)
      Writes this property list (key and element pairs) in this Properties table to the output stream in a format suitable for loading into a Properties table using the load method.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • DefaultEncryptedProperties

        public DefaultEncryptedProperties()
        Instantiates a new encrypted properties.
    • Method Detail

      • getProperty

        public java.lang.String getProperty​(java.lang.String key)
                                     throws EncryptionException
        Gets the property value from the encrypted store, decrypts it, and returns the plaintext value to the caller.
        Specified by:
        getProperty in interface EncryptedProperties
        Parameters:
        key - the name of the property to get
        Returns:
        The decrypted property value. null if the key is not set.
        Throws:
        EncryptionException - if the property could not be decrypted
      • setProperty

        public java.lang.String setProperty​(java.lang.String key,
                                            java.lang.String value)
                                     throws EncryptionException
        Encrypts the plaintext property value and stores the ciphertext value in the encrypted store.
        Specified by:
        setProperty in interface EncryptedProperties
        Parameters:
        key - the name of the property to set
        value - the value of the property to set
        Returns:
        the previously encrypted property value for the specified key, or null if it did not have one.
        Throws:
        EncryptionException - if the property could not be encrypted
      • keySet

        public java.util.Set<?> keySet()
        Returns a Set view of properties. The Set is backed by a java.util.Hashtable, so changes to the Hashtable are reflected in the Set, and vice-versa. The Set supports element removal (which removes the corresponding entry from the Hashtable, but not element addition.
        Specified by:
        keySet in interface EncryptedProperties
        Returns:
        a set view of the properties contained in this map.
      • load

        public void load​(java.io.InputStream in)
                  throws java.io.IOException
        Reads a property list (key and element pairs) from the input stream.
        Specified by:
        load in interface EncryptedProperties
        Parameters:
        in - the input stream that contains the properties file
        Throws:
        java.io.IOException - Signals that an I/O exception has occurred.
      • store

        public void store​(java.io.OutputStream out,
                          java.lang.String comments)
                   throws java.io.IOException
        Writes this property list (key and element pairs) in this Properties table to the output stream in a format suitable for loading into a Properties table using the load method.
        Specified by:
        store in interface EncryptedProperties
        Parameters:
        out - the output stream that contains the properties file
        comments - a description of the property list (ex. "Encrypted Properties File").
        Throws:
        java.io.IOException - Signals that an I/O exception has occurred.
      • main

        @Deprecated
        public static void main​(java.lang.String[] args)
                         throws java.lang.Exception
        Deprecated.
        Use EncryptedPropertiesUtils instead, which allows creating, reading, and writing encrypted properties. main method will be removed in a future release.
        Loads encrypted properties file based on the location passed in args then prompts the user to input key-value pairs. When the user enters a null or blank key, the values are stored to the properties file.
        Parameters:
        args - the location of the properties file to load and write to
        Throws:
        java.lang.Exception - Any exception thrown