javax.crypto
Class SealedObject

java.lang.Object
  extended by javax.crypto.SealedObject
All Implemented Interfaces:
Serializable

public class SealedObject
extends Object
implements Serializable

This class allows any Serializable object to be stored in an encrypted form.

When the sealed object is ready to be unsealed (and deserialized) the caller may use either

  1. getObject(javax.crypto.Cipher), which uses an already-initialized Cipher.

    or,
  2. getObject(java.security.Key) or getObject(java.security.Key,java.lang.String), which will initialize a new cipher instance with the encodedParams that were stored with this sealed object (this is so parameters, such as the IV, don't need to be known by the one unsealing the object).

Since:
1.4
See Also:
Serialized Form

Field Summary
protected  byte[] encodedParams
          The encoded algorithm parameters.
 
Constructor Summary
protected SealedObject(SealedObject so)
          Create a new sealed object from another sealed object.
  SealedObject(Serializable object, Cipher cipher)
          Create a new sealed object from a Serializable object and a cipher.
 
Method Summary
 String getAlgorithm()
          Get the name of the algorithm used to seal this object.
 Object getObject(Cipher cipher)
          Unseal and deserialize this sealed object with a specified (already initialized) cipher.
 Object getObject(Key key)
          Unseal and deserialize this sealed object with the specified key.
 Object getObject(Key key, String provider)
          Unseal and deserialize this sealed object with the specified key, using a cipher from the named provider.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

encodedParams

protected byte[] encodedParams
The encoded algorithm parameters.

Constructor Detail

SealedObject

public SealedObject(Serializable object,
                    Cipher cipher)
             throws IOException,
                    IllegalBlockSizeException
Create a new sealed object from a Serializable object and a cipher.

Parameters:
object - The object to seal.
cipher - The cipher to encrypt with.
Throws:
IOException - If serializing the object fails.
IllegalBlockSizeException - If the cipher has no padding and the size of the serialized representation of the object is not a multiple of the cipher's block size.

SealedObject

protected SealedObject(SealedObject so)
Create a new sealed object from another sealed object.

Parameters:
so - The other sealed object.
Method Detail

getAlgorithm

public final String getAlgorithm()
Get the name of the algorithm used to seal this object.

Returns:
The algorithm's name.

getObject

public final Object getObject(Cipher cipher)
                       throws IOException,
                              ClassNotFoundException,
                              IllegalBlockSizeException,
                              BadPaddingException
Unseal and deserialize this sealed object with a specified (already initialized) cipher.

Parameters:
cipher - The cipher to decrypt with.
Returns:
The original object.
Throws:
IOException - If reading fails.
ClassNotFoundException - If deserialization fails.
IllegalBlockSizeException - If the cipher has no padding and the encrypted data is not a multiple of the cipher's block size.
BadPaddingException - If the padding bytes are incorrect.

getObject

public final Object getObject(Key key)
                       throws IOException,
                              ClassNotFoundException,
                              InvalidKeyException,
                              NoSuchAlgorithmException
Unseal and deserialize this sealed object with the specified key.

Parameters:
key - The key to decrypt with.
Returns:
The original object.
Throws:
IOException - If reading fails.
ClassNotFoundException - If deserialization fails.
InvalidKeyException - If the supplied key cannot be used to unseal this object.
NoSuchAlgorithmException - If the algorithm used to originally seal this object is not available.

getObject

public final Object getObject(Key key,
                              String provider)
                       throws IOException,
                              ClassNotFoundException,
                              InvalidKeyException,
                              NoSuchAlgorithmException,
                              NoSuchProviderException
Unseal and deserialize this sealed object with the specified key, using a cipher from the named provider.

Parameters:
key - The key to decrypt with.
provider - The name of the provider to use.
Returns:
The original object.
Throws:
IOException - If reading fails.
ClassNotFoundException - If deserialization fails.
InvalidKeyException - If the supplied key cannot be used to unseal this object.
NoSuchAlgorithmException - If the algorithm used to originally seal this object is not available from the named provider.
NoSuchProviderException - If the named provider does not exist.