Class JceCipher
- java.lang.Object
-
- org.apache.commons.crypto.cipher.JceCipher
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,CryptoCipher
class JceCipher extends java.lang.Object implements CryptoCipher
Implements theCryptoCipherusing JCE provider.This class is not public/protected so does not appear in the main Javadoc. Please ensure that property use is documented in the enum CryptoRandomFactory.RandomProvider
-
-
Field Summary
Fields Modifier and Type Field Description private javax.crypto.Ciphercipher
-
Constructor Summary
Constructors Constructor Description JceCipher(java.util.Properties props, java.lang.String transformation)Constructs aCryptoCipherbased on JCE CipherCipher.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Closes Jce cipher.intdoFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)Encrypts or decrypts data in a single-part operation, or finishes a multiple-part operation.intdoFinal(java.nio.ByteBuffer inBuffer, java.nio.ByteBuffer outBuffer)Encrypts or decrypts data in a single-part operation, or finishes a multiple-part operation.java.lang.StringgetAlgorithm()Returns the algorithm name of thisCryptoCipherobject.intgetBlockSize()Returns the block size (in bytes).voidinit(int mode, java.security.Key key, java.security.spec.AlgorithmParameterSpec params)Initializes the cipher with mode, key and iv.intupdate(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)Continues a multiple-part encryption/decryption operation.intupdate(java.nio.ByteBuffer inBuffer, java.nio.ByteBuffer outBuffer)Continues a multiple-part encryption/decryption operation.voidupdateAAD(byte[] aad)Continues a multi-part update of the Additional Authentication Data (AAD).voidupdateAAD(java.nio.ByteBuffer aad)Continues a multi-part update of the Additional Authentication Data (AAD).
-
-
-
Constructor Detail
-
JceCipher
public JceCipher(java.util.Properties props, java.lang.String transformation) throws java.security.GeneralSecurityExceptionConstructs aCryptoCipherbased on JCE CipherCipher.- Parameters:
props- properties for JCE cipher (only usesCryptoCipherFactory.JCE_PROVIDER_KEY)transformation- transformation for JCE cipher (algorithm/mode/padding)- Throws:
java.security.GeneralSecurityException- if JCE cipher initialize failed
-
-
Method Detail
-
close
public void close()
Closes Jce cipher.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable
-
doFinal
public int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws javax.crypto.ShortBufferException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingExceptionEncrypts or decrypts data in a single-part operation, or finishes a multiple-part operation.- Specified by:
doFinalin interfaceCryptoCipher- Parameters:
input- the input byte arrayinputOffset- the offset in input where the input startsinputLen- the input lengthoutput- the byte array for the resultoutputOffset- the offset in output where the result is stored- Returns:
- the number of bytes stored in output
- Throws:
javax.crypto.ShortBufferException- if the given output byte array is too small to hold the resultjavax.crypto.BadPaddingException- if this cipher is in decryption mode, and (un)padding has been requested, but the decrypted data is not bounded by the appropriate padding bytesjavax.crypto.IllegalBlockSizeException- if this cipher is a block cipher, no padding has been requested (only in encryption mode), and the total input length of the data processed by this cipher is not a multiple of block size; or if this encryption algorithm is unable to process the input data provided.
-
doFinal
public int doFinal(java.nio.ByteBuffer inBuffer, java.nio.ByteBuffer outBuffer) throws javax.crypto.ShortBufferException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingExceptionEncrypts or decrypts data in a single-part operation, or finishes a multiple-part operation. The data is encrypted or decrypted, depending on how this cipher was initialized.- Specified by:
doFinalin interfaceCryptoCipher- Parameters:
inBuffer- the input ByteBufferoutBuffer- the output ByteBuffer- Returns:
- int number of bytes stored in
output - Throws:
javax.crypto.BadPaddingException- if this cipher is in decryption mode, and (un)padding has been requested, but the decrypted data is not bounded by the appropriate padding bytesjavax.crypto.IllegalBlockSizeException- if this cipher is a block cipher, no padding has been requested (only in encryption mode), and the total input length of the data processed by this cipher is not a multiple of block size; or if this encryption algorithm is unable to process the input data provided.javax.crypto.ShortBufferException- if the given output buffer is too small to hold the result
-
getAlgorithm
public java.lang.String getAlgorithm()
Returns the algorithm name of thisCryptoCipherobject.This is the same name that was specified in one of the
CryptoCipherFactory#getInstancecalls that created thisCryptoCipherobject..- Specified by:
getAlgorithmin interfaceCryptoCipher- Returns:
- the algorithm name of this
CryptoCipherobject.
-
getBlockSize
public final int getBlockSize()
Returns the block size (in bytes).- Specified by:
getBlockSizein interfaceCryptoCipher- Returns:
- the block size (in bytes), or 0 if the underlying algorithm is not a block cipher
-
init
public void init(int mode, java.security.Key key, java.security.spec.AlgorithmParameterSpec params) throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterExceptionInitializes the cipher with mode, key and iv.- Specified by:
initin interfaceCryptoCipher- Parameters:
mode-Cipher.ENCRYPT_MODEorCipher.DECRYPT_MODEkey- crypto key for the cipherparams- the algorithm parameters- Throws:
java.security.InvalidAlgorithmParameterException- if the given algorithm parameters are inappropriate for this cipher, or this cipher requires algorithm parameters andparamsis null, or the given algorithm parameters imply a cryptographic strength that would exceed the legal limits (as determined from the configured jurisdiction policy files).java.security.InvalidKeyException- if the given key is inappropriate for initializing this cipher, or its keysize exceeds the maximum allowable keysize (as determined from the configured jurisdiction policy files).
-
update
public int update(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws javax.crypto.ShortBufferExceptionContinues a multiple-part encryption/decryption operation. The data is encrypted or decrypted, depending on how this cipher was initialized.- Specified by:
updatein interfaceCryptoCipher- Parameters:
input- the input byte arrayinputOffset- the offset in input where the input startsinputLen- the input lengthoutput- the byte array for the resultoutputOffset- the offset in output where the result is stored- Returns:
- the number of bytes stored in output
- Throws:
javax.crypto.ShortBufferException- if there is insufficient space in the output byte array
-
update
public int update(java.nio.ByteBuffer inBuffer, java.nio.ByteBuffer outBuffer) throws javax.crypto.ShortBufferExceptionContinues a multiple-part encryption/decryption operation. The data is encrypted or decrypted, depending on how this cipher was initialized.- Specified by:
updatein interfaceCryptoCipher- Parameters:
inBuffer- the input ByteBufferoutBuffer- the output ByteBuffer- Returns:
- int number of bytes stored in
output - Throws:
javax.crypto.ShortBufferException- if there is insufficient space in the output buffer
-
updateAAD
public void updateAAD(byte[] aad)
Continues a multi-part update of the Additional Authentication Data (AAD).Calls to this method provide AAD to the cipher when operating in modes such as AEAD (GCM/CCM). If this cipher is operating in either GCM or CCM mode, all AAD must be supplied before beginning operations on the ciphertext (via the
updateanddoFinalmethods).- Specified by:
updateAADin interfaceCryptoCipher- Parameters:
aad- the buffer containing the Additional Authentication Data- Throws:
java.lang.IllegalArgumentException- if theaadbyte array is nulljava.lang.IllegalStateException- if this cipher is in a wrong state (e.g., has not been initialized), does not accept AAD, or if operating in either GCM or CCM mode and one of theupdatemethods has already been called for the active encryption/decryption operationjava.lang.UnsupportedOperationException- if JCE's implementation does not support such operation
-
updateAAD
public void updateAAD(java.nio.ByteBuffer aad)
Continues a multi-part update of the Additional Authentication Data (AAD).Calls to this method provide AAD to the cipher when operating in modes such as AEAD (GCM/CCM). If this cipher is operating in either GCM or CCM mode, all AAD must be supplied before beginning operations on the ciphertext (via the
updateanddoFinalmethods).- Specified by:
updateAADin interfaceCryptoCipher- Parameters:
aad- the buffer containing the Additional Authentication Data- Throws:
java.lang.IllegalArgumentException- if theaadbyte array is nulljava.lang.IllegalStateException- if this cipher is in a wrong state (e.g., has not been initialized), does not accept AAD, or if operating in either GCM or CCM mode and one of theupdatemethods has already been called for the active encryption/decryption operationjava.lang.UnsupportedOperationException- if JCE's implementation does not support such operation
-
-