org.owasp.esapi.reference.crypto
Class ReferenceEncryptedProperties

java.lang.Object
  extended by java.util.Dictionary<K,V>
      extended by java.util.Hashtable<java.lang.Object,java.lang.Object>
          extended by java.util.Properties
              extended by org.owasp.esapi.reference.crypto.ReferenceEncryptedProperties
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, java.util.Map<java.lang.Object,java.lang.Object>, EncryptedProperties

public class ReferenceEncryptedProperties
extends java.util.Properties
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.

This implementation differs from DefaultEncryptedProperties in that it actually extends from java.util.Properties for applications that need an instance of that class. In order to do so, the getProperty and setProperty methods were modified to throw EncryptionRuntimeException instead of EncryptionException.

Since:
October 8, 2010
Author:
August Detlefsen (augustd at codemagi dot com) CodeMagi, Inc.
See Also:
EncryptedProperties, Serialized Form

Field Summary
 
Fields inherited from class java.util.Properties
defaults
 
Constructor Summary
ReferenceEncryptedProperties()
          Instantiates a new encrypted properties.
ReferenceEncryptedProperties(java.util.Properties defaults)
           
 
Method Summary
 java.util.Enumeration elements()
          This method has been overridden to throw an UnsupportedOperationException
 java.util.Set entrySet()
          This method has been overridden to throw an UnsupportedOperationException
 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.lang.String getProperty(java.lang.String key, java.lang.String defaultValue)
          
 void list(java.io.PrintStream out)
          This method has been overridden to throw an UnsupportedOperationException
 void list(java.io.PrintWriter out)
          This method has been overridden to throw an UnsupportedOperationException
 void load(java.io.InputStream in)
          Reads a property list (key and element pairs) from the input stream.
 void load(java.io.Reader in)
           For JDK 1.5 compatibility, this method has been overridden convert the Reader into an InputStream and call the superclass constructor.
 java.lang.Object put(java.lang.Object key, java.lang.Object value)
          This method has been overridden to only accept Strings for key and value, and to encrypt those Strings before storing them.
 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.
 java.lang.String toString()
          This method has been overridden to not print out the keys and values stored in this properties file.
 java.util.Collection values()
          This method has been overridden to throw an UnsupportedOperationException
 
Methods inherited from class java.util.Properties
loadFromXML, propertyNames, save, store, store, storeToXML, storeToXML, stringPropertyNames
 
Methods inherited from class java.util.Hashtable
clear, clone, contains, containsKey, containsValue, equals, get, hashCode, isEmpty, keys, keySet, putAll, rehash, remove, size
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.owasp.esapi.EncryptedProperties
keySet, store
 

Constructor Detail

ReferenceEncryptedProperties

public ReferenceEncryptedProperties()
Instantiates a new encrypted properties.


ReferenceEncryptedProperties

public ReferenceEncryptedProperties(java.util.Properties defaults)
Method Detail

getProperty

public java.lang.String getProperty(java.lang.String key)
                             throws EncryptionRuntimeException
Gets the property value from the encrypted store, decrypts it, and returns the plaintext value to the caller.

Specified by:
getProperty in interface EncryptedProperties
Overrides:
getProperty in class java.util.Properties
Parameters:
key - the name of the property to get
Returns:
The decrypted property value. null if the key is not set.
Throws:
bsh.This - method will throw an EncryptionRuntimeException if decryption fails.
EncryptionRuntimeException

getProperty

public java.lang.String getProperty(java.lang.String key,
                                    java.lang.String defaultValue)
                             throws EncryptionRuntimeException

Overrides:
getProperty in class java.util.Properties
Throws:
bsh.This - method will throw an EncryptionRuntimeException if decryption fails.
EncryptionRuntimeException

setProperty

public java.lang.String setProperty(java.lang.String key,
                                    java.lang.String value)
                             throws EncryptionRuntimeException
Encrypts the plaintext property value and stores the ciphertext value in the encrypted store.

Specified by:
setProperty in interface EncryptedProperties
Overrides:
setProperty in class java.util.Properties
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:
bsh.This - method will throw an EncryptionRuntimeException if encryption fails.
EncryptionRuntimeException

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
Overrides:
load in class java.util.Properties
Parameters:
in - the input stream that contains the properties file
Throws:
java.io.IOException - Signals that an I/O exception has occurred.

load

public void load(java.io.Reader in)
          throws java.io.IOException
For JDK 1.5 compatibility, this method has been overridden convert the Reader into an InputStream and call the superclass constructor.

Overrides:
load in class java.util.Properties
Throws:
java.io.IOException

list

public void list(java.io.PrintStream out)
This method has been overridden to throw an UnsupportedOperationException

Overrides:
list in class java.util.Properties

list

public void list(java.io.PrintWriter out)
This method has been overridden to throw an UnsupportedOperationException

Overrides:
list in class java.util.Properties

values

public java.util.Collection values()
This method has been overridden to throw an UnsupportedOperationException

Specified by:
values in interface java.util.Map<java.lang.Object,java.lang.Object>
Overrides:
values in class java.util.Hashtable<java.lang.Object,java.lang.Object>

entrySet

public java.util.Set entrySet()
This method has been overridden to throw an UnsupportedOperationException

Specified by:
entrySet in interface java.util.Map<java.lang.Object,java.lang.Object>
Overrides:
entrySet in class java.util.Hashtable<java.lang.Object,java.lang.Object>

elements

public java.util.Enumeration elements()
This method has been overridden to throw an UnsupportedOperationException

Overrides:
elements in class java.util.Hashtable<java.lang.Object,java.lang.Object>

put

public java.lang.Object put(java.lang.Object key,
                            java.lang.Object value)
This method has been overridden to only accept Strings for key and value, and to encrypt those Strings before storing them. Outside classes should always use setProperty to add values to the Properties map. If an outside class does erroneously call this method with non-String parameters an IllegalArgumentException will be thrown.

Specified by:
put in interface java.util.Map<java.lang.Object,java.lang.Object>
Overrides:
put in class java.util.Hashtable<java.lang.Object,java.lang.Object>
Parameters:
key - A String key to add
value - A String value to add
Returns:
The old value associated with the specified key, or null if the key did not exist.

toString

public java.lang.String toString()
This method has been overridden to not print out the keys and values stored in this properties file.

Overrides:
toString in class java.util.Hashtable<java.lang.Object,java.lang.Object>
Returns:
The minimal String representation of this class, as per java.lang.Object.


Copyright © 2011 The Open Web Application Security Project (OWASP). All Rights Reserved.