org.bouncycastle.crypto

## Class BufferedAsymmetricBlockCipher

- java.lang.Object
- - org.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

Fields
`protected byte[]` `buf`
`protected int` `bufOff`

### Constructor Summary

Constructors
Constructor and Description
`BufferedAsymmetricBlockCipher(AsymmetricBlockCipher cipher)` base constructor.

### Method Summary

Methods
`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.
  `params` - 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.