-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected byte[]
engineDoFinal
(byte[] input, int inputOffset, int inputLen) Encrypting or decrypting data in a single-part operation, or finishing a multiple-part operation is not supported.protected int
engineDoFinal
(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) Encrypting or decrypting data in a single-part operation, or finishing a multiple-part operation is not supported.protected int
Returns cipher block size in bytes.protected byte[]
Returns the initialization vector (IV) used with this cipher.protected int
engineGetKeySize
(Key key) Returns the key size of the given key object.protected int
engineGetOutputSize
(int inputLen) Returns the length in bytes that an output buffer would need.protected AlgorithmParameters
Returns the parameters used with this cipher.protected void
engineInit
(int opmode, Key key, AlgorithmParameters params, SecureRandom random) protected void
engineInit
(int opmode, Key key, SecureRandom random) Initializes this cipher with a key and a source of randomness.protected void
engineInit
(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random) Initializes this cipher with a key and a source of randomness.protected void
engineSetMode
(String mode) Setting the cipher mode is not supported.protected void
engineSetPadding
(String paddingScheme) Setting the cipher padding mechanism is not supported.protected Key
engineUnwrap
(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType) Unwrap a previously wrapped CCA hardware DES, DESede, or AES key.protected byte[]
engineUpdate
(byte[] input, int inputOffset, int inputLen) Continuing a multiple-part encryption or decryption operation is not supported.protected int
engineUpdate
(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) Continuing a multiple-part encryption or decryption operation is not supported.protected byte[]
engineWrap
(Key key) Wrap a CCA hardware DES, DESede, or AES key.Methods inherited from class javax.crypto.CipherSpi
engineDoFinal, engineUpdate, engineUpdateAAD, engineUpdateAAD
-
Constructor Details
-
AESKeyWrap
public AESKeyWrap()Creates an instance of hardware AES key wrap.- Throws:
SecurityException
- if this constructor fails to authenticate the JCE framework.
-
-
Method Details
-
engineGetBlockSize
protected int engineGetBlockSize()Returns cipher block size in bytes.- Specified by:
engineGetBlockSize
in classCipherSpi
- Returns:
- cipher block size in bytes.
-
engineGetOutputSize
protected int engineGetOutputSize(int inputLen) Returns the length in bytes that an output buffer would need.- Specified by:
engineGetOutputSize
in classCipherSpi
- Parameters:
inputLen
- the input length in bytes, which will be ignored- Returns:
- the required output buffer size in bytes.
-
engineGetKeySize
Returns the key size of the given key object. This method is called by the JCE framework to ensure that the size of the key to be used does not exceed the maximum allowable key size specified in the Java restricted policy files.Since cryptographic operations using AES ciphers are always done at the cryptographic hardware level, and the hardware itself enforces the US export restrictions relating to cryptographic keys, we should always return a key size that will pass the restricted policy files check done by the JCE framework.
- Overrides:
engineGetKeySize
in classCipherSpi
- Parameters:
key
- the key object- Returns:
- a key size that will pass the restricted policy files check done by the JCE framework.
-
engineInit
Initializes this cipher with a key and a source of randomness. This cipher may be initialized for key wrapping or key unwrapping operations only, depending on the value ofopmode
. Encryption and decryption operations are not supported by this cipher.This cipher does not require an initialization vector (IV), so the source of randomness provided by
random
must be null. This method resets any existing state information.By default, keys are unwrapped as
SymmetricKeyConstants.KeyType.CKDS
keys.- Specified by:
engineInit
in classCipherSpi
- Parameters:
opmode
- the operation mode of this cipher. This is one ofWRAP_MODE
orUNWRAP_MODE
. Please note thatENCRYPT_MODE
andDECRYPT_MODE
operation modes are not supportedkey
- the CCA hardware AES key encrypting keyrandom
- the source of randomness, which must be null- Throws:
UnsupportedOperationException
- if theopmode
is eitherENCRYPT_MODE
orDECRYPT_MODE
, which is not supported by this cipher.InvalidParameterException
- if theopmode
is not a valid cipher operation mode or if a source of randomness is specified.NullPointerException
- if the key is null.InvalidKeyException
- if the given key not a CCA hardware AES key.
-
engineInit
protected void engineInit(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException Initializes this cipher with a key and a source of randomness. This cipher may be initialized for key wrapping or key unwrapping operations only, depending on the value ofopmode
. Encryption and decryption operations are not supported by this cipher.This cipher does not require an initialization vector (IV), so the source of randomness provided by
random
must be null. This method resets any existing state information.By default, keys are unwrapped as
SymmetricKeyConstants.KeyType.CKDS
keys.- Specified by:
engineInit
in classCipherSpi
- Parameters:
opmode
- the operation mode of this cipher. This is one ofWRAP_MODE
orUNWRAP_MODE
. Please note thatENCRYPT_MODE
andDECRYPT_MODE
operation modes are not supportedkey
- the CCA hardware AES key encrypting keyparams
- algorithm parameters that specify whether to unwrap keys asSymmetricKeyConstants.KeyType.SECURE_INTERNAL_TOKEN
keys or asSymmetricKeyConstants.KeyType.CKDS
keys. Unwrapping toSymmetricKeyConstants.KeyType.CLEAR
keys is not supported. This algorithm parameters is only supported inUNWRAP_MODE
random
- the source of randomness, which must be null- Throws:
UnsupportedOperationException
- if theopmode
is eitherENCRYPT_MODE
orDECRYPT_MODE
, which is not supported by this cipher.InvalidParameterException
- if theopmode
is not a valid cipher operation mode or if a source of randomness is specified.NullPointerException
- if the key is null.InvalidKeyException
- if the given key not a CCA hardware AES key.InvalidAlgorithmParameterException
- ifparams
is not null andopmode
isWRAP_MODE
, or ifparams
is not an instance ofCCAAlgorithmParameterSpec
, or if the algorithm parameters specify to unwrap keys asCLEAR
keys.
-
engineInit
protected void engineInit(int opmode, Key key, AlgorithmParameters params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException - Specified by:
engineInit
in classCipherSpi
- Throws:
InvalidKeyException
InvalidAlgorithmParameterException
- See Also:
-
engineWrap
Wrap a CCA hardware DES, DESede, or AES key. The wrapped key will be formatted as a CCA external key token. ICSF HCR77A1 or above is required in order to wrap hardware DES or DESede keys using AES key encrypting keys.- Overrides:
engineWrap
in classCipherSpi
- Parameters:
key
- the CCA hardware DES, DESede, or AES key to be wrapped- Returns:
- the wrapped key formatted as a CCA external key token.
- Throws:
NullPointerException
- ifkey
is null.InvalidKeyException
- if the provided key is not a CCA hardware DES, DESede, or AES key. Or if the key to be wrapped is a DES or Triple-DES key and ICSF version is less than HCR77A1.IllegalStateException
- if this cipher is not initialized for theWRAP_MODE
operational mode.
-
engineUnwrap
protected Key engineUnwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType) throws InvalidKeyException Unwrap a previously wrapped CCA hardware DES, DESede, or AES key. By default, all unwrapped keys will be CKDS keys stored in the CKDS, unless otherwise specified through algorithm parameter specs during cipher initialization.- Overrides:
engineUnwrap
in classCipherSpi
- Parameters:
wrappedKey
- the previously wrapped CCA hardware DES, DESede, or AES key to be unwrappedwrappedKeyAlgorithm
- the key algorithm of the original keywrappedKeyType
- the type of wrapped key, this value must beCipher.SECRET_KEY
- Returns:
- the unwrapped CCA hardware DES, DESede, or AES key.
- Throws:
NullPointerException
- ifwrappedKey
is null.InvalidKeyException
- ifwrappedKeyAlgorithm
is not"DES"
,"DESede"
,"TripleDES"
,"3DES"
, or"AES"
. Or ifwrappedKeyType
is notCipher.SECRET_KEY
, or there is an issue creating the unwrapped CCA hardware key. Or if the key to be unwrapped is a DES or Triple-DES key and ICSF version is less than HCR77A1.IllegalStateException
- if this cipher is not initialized for theUNWRAP_MODE
operational mode.
-
engineSetMode
Setting the cipher mode is not supported.- Specified by:
engineSetMode
in classCipherSpi
- Parameters:
mode
- the cipher mode- Throws:
UnsupportedOperationException
- always.
-
engineSetPadding
Setting the cipher padding mechanism is not supported.- Specified by:
engineSetPadding
in classCipherSpi
- Parameters:
paddingScheme
- the padding mechanism- Throws:
UnsupportedOperationException
- always.
-
engineGetIV
protected byte[] engineGetIV()Returns the initialization vector (IV) used with this cipher.- Specified by:
engineGetIV
in classCipherSpi
- Returns:
- null, because this cipher does not use any IV.
-
engineGetParameters
Returns the parameters used with this cipher.- Specified by:
engineGetParameters
in classCipherSpi
- Returns:
- null, because this cipher does not return any parameters.
-
engineUpdate
protected byte[] engineUpdate(byte[] input, int inputOffset, int inputLen) Continuing a multiple-part encryption or decryption operation is not supported.- Specified by:
engineUpdate
in classCipherSpi
- Throws:
UnsupportedOperationException
- always.
-
engineUpdate
protected int engineUpdate(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) Continuing a multiple-part encryption or decryption operation is not supported.- Specified by:
engineUpdate
in classCipherSpi
- Throws:
UnsupportedOperationException
- always.
-
engineDoFinal
protected byte[] engineDoFinal(byte[] input, int inputOffset, int inputLen) Encrypting or decrypting data in a single-part operation, or finishing a multiple-part operation is not supported.- Specified by:
engineDoFinal
in classCipherSpi
- Throws:
UnsupportedOperationException
- always.
-
engineDoFinal
protected int engineDoFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) Encrypting or decrypting data in a single-part operation, or finishing a multiple-part operation is not supported.- Specified by:
engineDoFinal
in classCipherSpi
- Throws:
UnsupportedOperationException
- always.
-