javax.crypto

Class SealedObject

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(Cipher), which uses an already-initialized Cipher.

    or,
  2. getObject(Key) or getObject(Key,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

SealedObject(Serializable object, Cipher cipher)
Create a new sealed object from a Serializable object and a cipher.
SealedObject(SealedObject so)
Create a new sealed object from another sealed object.

Method Summary

String
getAlgorithm()
Get the name of the algorithm used to seal this object.
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.
Object
getObject(Cipher cipher)
Unseal and deserialize this sealed object with a specified (already initialized) cipher.

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

encodedParams

protected byte[] encodedParams
The encoded algorithm parameters.

Constructor Details

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 Details

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(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.

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.

SealedObject.java -- An encrypted Serializable object. Copyright (C) 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.