in src/main/java/org/apache/commons/crypto/cipher/CryptoCipher.java [61:183]
int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output,
int outputOffset) throws ShortBufferException,
IllegalBlockSizeException, BadPaddingException;
/**
* Encrypts or decrypts data in a single-part operation, or finishes a
* multiple-part operation.
*
* @param inBuffer the input ByteBuffer
* @param outBuffer the output ByteBuffer
* @return int number of bytes stored in {@code output}
* @throws 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 bytes
* @throws 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.
* @throws ShortBufferException if the given output buffer is too small to
* hold the result
*/
int doFinal(ByteBuffer inBuffer, ByteBuffer outBuffer)
throws ShortBufferException, IllegalBlockSizeException,
BadPaddingException;
/**
* Returns the algorithm name of this {@code CryptoCipher} object.
*
* <p>
* This is the same name that was specified in one of the
* {@code CryptoCipherFactory#getInstance} calls that created this
* {@code CryptoCipher} object.
* </p>
*
* @return the algorithm name of this {@code CryptoCipher} object.
*/
String getAlgorithm();
/**
* Returns the block size (in bytes).
*
* @return the block size (in bytes), or 0 if the underlying algorithm is
* not a block cipher
*/
int getBlockSize();
/**
* Initializes the cipher with mode, key and iv.
*
* @param mode {@link javax.crypto.Cipher#ENCRYPT_MODE} or
* {@link javax.crypto.Cipher#DECRYPT_MODE}
* @param key crypto key for the cipher
* @param params the algorithm parameters
* @throws 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).
* @throws InvalidAlgorithmParameterException if the given algorithm
* parameters are inappropriate for this cipher, or this cipher
* requires algorithm parameters and {@code params} is {@code null}, or
* the given algorithm parameters imply a cryptographic strength
* that would exceed the legal limits (as determined from the
* configured jurisdiction policy files).
*/
void init(int mode, Key key, AlgorithmParameterSpec params)
throws InvalidKeyException, InvalidAlgorithmParameterException;
/**
* Continues a multiple-part encryption/decryption operation. The data is
* encrypted or decrypted, depending on how this cipher was initialized.
*
* @param input the input byte array
* @param inputOffset the offset in input where the input starts
* @param inputLen the input length
* @param output the byte array for the result
* @param outputOffset the offset in output where the result is stored
* @return the number of bytes stored in output
* @throws ShortBufferException if there is insufficient space in the output
* byte array
*/
int update(byte[] input, int inputOffset, int inputLen, byte[] output,
int outputOffset) throws ShortBufferException;
/**
* Continues a multiple-part encryption/decryption operation. The data is
* encrypted or decrypted, depending on how this cipher was initialized.
*
* @param inBuffer the input ByteBuffer
* @param outBuffer the output ByteBuffer
* @return int number of bytes stored in {@code output}
* @throws ShortBufferException if there is insufficient space in the output
* buffer
*/
int update(ByteBuffer inBuffer, ByteBuffer outBuffer)
throws ShortBufferException;
/**
* Continues a multi-part update of the Additional Authentication
* Data (AAD).
* <p>
* Calls to this method provide AAD to the cipher when operating in
* modes such as AEAD (GCM). If this cipher is operating in
* GCM mode, all AAD must be supplied before beginning
* operations on the ciphertext (via the {@code update} and
* {@code doFinal} methods).
* </p>
*
* @param aad the buffer containing the Additional Authentication Data
* @throws IllegalArgumentException if the {@code aad}
* byte array is null
* @throws 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 the {@code update}
* methods has already been called for the active
* encryption/decryption operation
* @throws UnsupportedOperationException if the corresponding method
* has not been overridden by an implementation
*/
default void updateAAD(final byte[] aad)
throws IllegalArgumentException, IllegalStateException, UnsupportedOperationException {
throw new UnsupportedOperationException();
}