org.gudy.bouncycastle.crypto
Class BufferedAsymmetricBlockCipher

java.lang.Object
  extended by org.gudy.bouncycastle.crypto.BufferedAsymmetricBlockCipher

public class BufferedAsymmetricBlockCipher
extends java.lang.Object

a buffer wrapper for an asymmetric block cipher, allowing input to be accumulated in a piecemeal fashion until final processing.


Field Summary
protected  byte[] buf
           
protected  int bufOff
           
 
Constructor Summary
BufferedAsymmetricBlockCipher(AsymmetricBlockCipher cipher)
          base constructor.
 
Method Summary
 byte[] doFinal()
          process the contents of the buffer using the underlying cipher.
 int getBufferPosition()
          return the amount of data sitting in the buffer.
 int getInputBlockSize()
          returns the largest size an input block can be.
 int getOutputBlockSize()
          returns the maximum size of the block produced by this cipher.
 AsymmetricBlockCipher getUnderlyingCipher()
          return the underlying cipher for the buffer.
 void init(boolean forEncryption, CipherParameters params)
          initialise the buffer and the underlying cipher.
 void processByte(byte in)
          add another byte for processing.
 void processBytes(byte[] in, int inOff, int len)
          add len bytes to the buffer for processing.
 void reset()
          Reset the buffer and the underlying cipher.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

buf

protected byte[] buf

bufOff

protected int bufOff
Constructor Detail

BufferedAsymmetricBlockCipher

public BufferedAsymmetricBlockCipher(AsymmetricBlockCipher cipher)
base constructor.

Parameters:
cipher - the cipher this buffering object wraps.
Method Detail

getUnderlyingCipher

public AsymmetricBlockCipher getUnderlyingCipher()
return the underlying cipher for the buffer.

Returns:
the underlying cipher for the buffer.

getBufferPosition

public int getBufferPosition()
return the amount of data sitting in the buffer.

Returns:
the amount of data sitting in the buffer.

init

public void init(boolean forEncryption,
                 CipherParameters params)
initialise the buffer and the underlying cipher.

Parameters:
forEncryption - if true the cipher is initialised for encryption, if false for decryption.
param - the key and other data required by the cipher.

getInputBlockSize

public int getInputBlockSize()
returns the largest size an input block can be.

Returns:
maximum size for an input block.

getOutputBlockSize

public int getOutputBlockSize()
returns the maximum size of the block produced by this cipher.

Returns:
maximum size of the output block produced by the cipher.

processByte

public void processByte(byte in)
add another byte for processing.

Parameters:
in - the input byte.

processBytes

public void processBytes(byte[] in,
                         int inOff,
                         int len)
add len bytes to the buffer for processing.

Parameters:
in - the input data
inOff - offset into the in array where the data starts
len - the length of the block to be processed.

doFinal

public byte[] doFinal()
               throws InvalidCipherTextException
process the contents of the buffer using the underlying cipher.

Returns:
the result of the encryption/decryption process on the buffer.
Throws:
InvalidCipherTextException - if we are given a garbage block.

reset

public void reset()
Reset the buffer and the underlying cipher.