Overview | Package | Class | Tree | Deprecated | Index | Help
| Bouncy Castle Cryptography Library 1.45
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.bouncycastle.crypto
Class BufferedBlockCipher

    java.lang.Object
      org.bouncycastle.crypto.BufferedBlockCipher

Direct Known Subclasses:
  CTSBlockCipher, PaddedBlockCipher, PaddedBufferedBlockCipher

    public class BufferedBlockCipher

extends java.lang.Object

A wrapper class that allows block ciphers to be used to process data in a piecemeal fashion. The BufferedBlockCipher outputs a block only when the buffer is full and more data is being added, or on a doFinal.

Note: in the case where the underlying cipher is either a CFB cipher or an OFB one the last block may not be a multiple of the block size.

Field Summary
`protected byte[]` | `buf`
`protected int` | `bufOff`
`protected BlockCipher` | `cipher`
`protected boolean` | `forEncryption`
`protected boolean` | `partialBlockOkay`
`protected boolean` | `pgpCFB`

Constructor Summary
`protected` | `BufferedBlockCipher()` constructor for subclasses
`` | `BufferedBlockCipher(BlockCipher cipher)` Create a buffered block cipher without padding.

Method Summary
`int` | `doFinal(byte[] out, int outOff)` Process the last block in the buffer.
`int` | `getBlockSize()` return the blocksize for the underlying cipher.
`int` | `getOutputSize(int length)` return the size of the output buffer required for an update plus a doFinal with an input of 'length' bytes.
`BlockCipher` | `getUnderlyingCipher()` return the cipher this object wraps.
`int` | `getUpdateOutputSize(int len)` return the size of the output buffer required for an update an input of len bytes.
`void` | `init(boolean forEncryption, CipherParameters params)` initialise the cipher.
`int` | `processByte(byte in, byte[] out, int outOff)` process a single byte, producing an output block if neccessary.
`int` | `processBytes(byte[] in, int inOff, int len, byte[] out, int outOff)` process an array of bytes, producing output if necessary.
`void` | `reset()` Reset the buffer and 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

### forEncryption

    protected boolean forEncryption

### cipher

    protected BlockCipher cipher

### partialBlockOkay

    protected boolean partialBlockOkay

### pgpCFB

    protected boolean pgpCFB

Constructor Detail

### BufferedBlockCipher

    protected BufferedBlockCipher()

  constructor for subclasses

### BufferedBlockCipher

    public BufferedBlockCipher(BlockCipher cipher)

  Create a buffered block cipher without padding.

  Parameters:
    `cipher` - the underlying block cipher this buffering object wraps.

Method Detail

### getUnderlyingCipher

    public BlockCipher getUnderlyingCipher()

  return the cipher this object wraps.

  Returns:
    the cipher this object wraps.

### init

    public void init(boolean forEncryption,
                     CipherParameters params)
              throws java.lang.IllegalArgumentException

  initialise the 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.
  Throws:
    `java.lang.IllegalArgumentException` - if the params argument is inappropriate.

### getBlockSize

    public int getBlockSize()

  return the blocksize for the underlying cipher.

  Returns:
    the blocksize for the underlying cipher.

### getUpdateOutputSize

    public int getUpdateOutputSize(int len)

  return the size of the output buffer required for an update an input of len bytes.

  Parameters:
    `len` - the length of the input.
  Returns:
    the space required to accommodate a call to update with len bytes of input.

### getOutputSize

    public int getOutputSize(int length)

  return the size of the output buffer required for an update plus a doFinal with an input of 'length' bytes.

  Parameters:
    `length` - the length of the input.
  Returns:
    the space required to accommodate a call to update and doFinal with 'length' bytes of input.

### processByte

    public int processByte(byte in,
                           byte[] out,
                           int outOff)
                    throws DataLengthException,
                           java.lang.IllegalStateException

  process a single byte, producing an output block if neccessary.

  Parameters:
    `in` - the input byte.
    `out` - the space for any output that might be produced.
    `outOff` - the offset from which the output will be copied.
  Returns:
    the number of output bytes copied to out.
  Throws:
    `DataLengthException` - if there isn't enough space in out.
    `java.lang.IllegalStateException` - if the cipher isn't initialised.

### processBytes

    public int processBytes(byte[] in,
                            int inOff,
                            int len,
                            byte[] out,
                            int outOff)
                     throws DataLengthException,
                            java.lang.IllegalStateException

  process an array of bytes, producing output if necessary.

  Parameters:
    `in` - the input byte array.
    `inOff` - the offset at which the input data starts.
    `len` - the number of bytes to be copied out of the input array.
    `out` - the space for any output that might be produced.
    `outOff` - the offset from which the output will be copied.
  Returns:
    the number of output bytes copied to out.
  Throws:
    `DataLengthException` - if there isn't enough space in out.
    `java.lang.IllegalStateException` - if the cipher isn't initialised.

### doFinal

    public int doFinal(byte[] out,
                       int outOff)
                throws DataLengthException,
                       java.lang.IllegalStateException,
                       InvalidCipherTextException

  Process the last block in the buffer.

  Parameters:
    `out` - the array the block currently being held is copied into.
    `outOff` - the offset at which the copying starts.
  Returns:
    the number of output bytes copied to out.
  Throws:
    `DataLengthException` - if there is insufficient space in out for the output, or the input is not block size aligned and should be.
    `java.lang.IllegalStateException` - if the underlying cipher is not initialised.
    `InvalidCipherTextException` - if padding is expected and not found.
    `DataLengthException` - if the input is not block size aligned.

### reset

    public void reset()

  Reset the buffer and cipher. After resetting the object is in the same state as it was after the last init (if there was one).

Overview | Package | Class | Tree | Deprecated | Index | Help
| Bouncy Castle Cryptography Library 1.45
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD