Class Overview
Implements the Counter with Cipher Block Chaining mode (CCM) detailed in
NIST Special Publication 800-38C.
Note: this mode is a packet mode - it needs all the data up front.
Summary
Public Methods |
int
|
doFinal(byte[] out, int outOff)
Finish the operation either appending or verifying the MAC at the end of the data.
|
String
|
getAlgorithmName()
Return the name of the algorithm.
|
byte[]
|
getMac()
Returns a byte array containing the mac calculated as part of the
last encrypt or decrypt operation.
|
int
|
getOutputSize(int len)
return the size of the output buffer required for a processBytes plus a
doFinal with an input of len bytes.
|
BlockCipher
|
getUnderlyingCipher()
return the underlying block cipher that we are wrapping.
|
int
|
getUpdateOutputSize(int len)
return the size of the output buffer required for a processBytes
an input of len bytes.
|
void
|
init(boolean forEncryption, CipherParameters params)
initialise the underlying cipher.
|
int
|
processByte(byte in, byte[] out, int outOff)
encrypt/decrypt a single byte.
|
int
|
processBytes(byte[] in, int inOff, int inLen, byte[] out, int outOff)
process a block of bytes from in putting the result into out.
|
byte[]
|
processPacket(byte[] in, int inOff, int inLen)
|
void
|
reset()
Reset the cipher.
|
[Expand]
Inherited Methods |
From class
java.lang.Object
Object
|
clone()
|
boolean
|
equals(Object arg0)
|
void
|
finalize()
|
final
Class<?>
|
getClass()
|
int
|
hashCode()
|
final
void
|
notify()
|
final
void
|
notifyAll()
|
String
|
toString()
|
final
void
|
wait()
|
final
void
|
wait(long arg0, int arg1)
|
final
void
|
wait(long arg0)
|
|
From interface
org.bouncycastle.crypto.modes.AEADBlockCipher
abstract
int
|
doFinal(byte[] out, int outOff)
Finish the operation either appending or verifying the MAC at the end of the data.
|
abstract
String
|
getAlgorithmName()
Return the name of the algorithm.
|
abstract
byte[]
|
getMac()
Return the value of the MAC associated with the last stream processed.
|
abstract
int
|
getOutputSize(int len)
return the size of the output buffer required for a processBytes plus a
doFinal with an input of len bytes.
|
abstract
BlockCipher
|
getUnderlyingCipher()
return the cipher this object wraps.
|
abstract
int
|
getUpdateOutputSize(int len)
return the size of the output buffer required for a processBytes
an input of len bytes.
|
abstract
void
|
init(boolean forEncryption, CipherParameters params)
initialise the underlying cipher.
|
abstract
int
|
processByte(byte in, byte[] out, int outOff)
encrypt/decrypt a single byte.
|
abstract
int
|
processBytes(byte[] in, int inOff, int len, byte[] out, int outOff)
process a block of bytes from in putting the result into out.
|
abstract
void
|
reset()
Reset the cipher.
|
|
Public Constructors
public
CCMBlockCipher
(BlockCipher c)
Parameters
c
| the block cipher to be used.
|
Public Methods
public
int
doFinal
(byte[] out, int outOff)
Finish the operation either appending or verifying the MAC at the end of the data.
Parameters
out
| space for any resulting output data. |
outOff
| offset into out to start copying the data at. |
Returns
- number of bytes written into out.
public
String
getAlgorithmName
()
Return the name of the algorithm.
public
byte[]
getMac
()
Returns a byte array containing the mac calculated as part of the
last encrypt or decrypt operation.
public
int
getOutputSize
(int len)
return the size of the output buffer required for a processBytes plus a
doFinal with an input of len bytes.
Parameters
len
| the length of the input. |
Returns
- the space required to accommodate a call to processBytes and doFinal
with len bytes of input.
public
BlockCipher
getUnderlyingCipher
()
return the underlying block cipher that we are wrapping.
Returns
- the underlying block cipher that we are wrapping.
public
int
getUpdateOutputSize
(int len)
return the size of the output buffer required for a processBytes
an input of len bytes.
Parameters
len
| the length of the input. |
Returns
- the space required to accommodate a call to processBytes
with len bytes of input.
public
void
init
(boolean forEncryption, CipherParameters params)
initialise the underlying cipher. Parameter can either be an AEADParameters or a ParametersWithIV object.
Parameters
forEncryption
| true if we are setting up for encryption, false otherwise. |
params
| the necessary parameters for the underlying cipher to be initialised. |
public
int
processByte
(byte in, byte[] out, int outOff)
encrypt/decrypt a single byte.
Parameters
in
| the byte to be processed. |
out
| the output buffer the processed byte goes into. |
outOff
| the offset into the output byte array the processed data starts at. |
Returns
- the number of bytes written to out.
public
int
processBytes
(byte[] in, int inOff, int inLen, byte[] out, int outOff)
process a block of bytes from in putting the result into out.
Parameters
in
| the input byte array. |
inOff
| the offset into the in array where the data to be processed starts. |
inLen
| the number of bytes to be processed. |
out
| the output buffer the processed bytes go into. |
outOff
| the offset into the output byte array the processed data starts at. |
Returns
- the number of bytes written to out.
public
byte[]
processPacket
(byte[] in, int inOff, int inLen)
public
void
reset
()
Reset the cipher. After resetting the cipher is in the same state
as it was after the last init (if there was one).