public class SealedObject extends Object implements Serializable
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
getObject(javax.crypto.Cipher)
, which uses an
already-initialized Cipher
.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).Modifier and Type | Field and Description |
---|---|
protected byte[] |
encodedParams
The encoded algorithm parameters.
|
Modifier | Constructor and Description |
---|---|
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. |
Modifier and Type | Method and Description |
---|---|
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.
|
protected byte[] encodedParams
public SealedObject(Serializable object, Cipher cipher) throws IOException, IllegalBlockSizeException
Serializable
object and a cipher.object
- The object to seal.cipher
- The cipher to encrypt with.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.protected SealedObject(SealedObject so)
so
- The other sealed object.public final String getAlgorithm()
public final Object getObject(Cipher cipher) throws IOException, ClassNotFoundException, IllegalBlockSizeException, BadPaddingException
cipher
- The cipher to decrypt with.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.public final Object getObject(Key key) throws IOException, ClassNotFoundException, InvalidKeyException, NoSuchAlgorithmException
key
- The key to decrypt with.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.public final Object getObject(Key key, String provider) throws IOException, ClassNotFoundException, InvalidKeyException, NoSuchAlgorithmException, NoSuchProviderException
key
- The key to decrypt with.provider
- The name of the provider to use.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.