org.bouncycastle.crypto.encodings

## Class ISO9796d1Encoding

- java.lang.Object
- - org.bouncycastle.crypto.encodings.ISO9796d1Encoding

All Implemented Interfaces:
  AsymmetricBlockCipher

    public class ISO9796d1Encoding
    extends java.lang.Object
    implements AsymmetricBlockCipher

ISO 9796-1 padding. Note in the light of recent results you should only use this with RSA (rather than the "simpler" Rabin keys) and you should never use it with anything other than a hash (ie. even if the message is small don't sign the message, sign it's hash) or some "random" value. See your favorite search engine for details.

### Constructor Summary

Constructors
Constructor and Description
`ISO9796d1Encoding(AsymmetricBlockCipher cipher)`

### Method Summary

Methods
`int` `getInputBlockSize()` return the input block size.
`int` `getOutputBlockSize()` return the maximum possible size for the output.
`int` `getPadBits()` retrieve the number of pad bits in the last decoded message.
`AsymmetricBlockCipher` `getUnderlyingCipher()`
`void` `init(boolean forEncryption, CipherParameters param)` initialise the cipher.
`byte[]` `processBlock(byte[] in, int inOff, int inLen)` process the block of len bytes stored in in from offset inOff.
`void` `setPadBits(int padBits)` set the number of bits in the next message to be treated as pad bits.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### ISO9796d1Encoding

    public ISO9796d1Encoding(AsymmetricBlockCipher cipher)

### Method Detail

#### getUnderlyingCipher

    public AsymmetricBlockCipher getUnderlyingCipher()

#### init

    public void init(boolean forEncryption,
            CipherParameters param)

Description copied from interface: `AsymmetricBlockCipher`
initialise the cipher.

Specified by:
  `init` in interface `AsymmetricBlockCipher`
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()

return the input block size. The largest message we can process is (key_size_in_bits + 3)/16, which in our world comes to key_size_in_bytes / 2.

Specified by:
  `getInputBlockSize` in interface `AsymmetricBlockCipher`
Returns:
  maximum size for an input block.

#### getOutputBlockSize

    public int getOutputBlockSize()

return the maximum possible size for the output.

Specified by:
  `getOutputBlockSize` in interface `AsymmetricBlockCipher`
Returns:
  maximum size of the output block produced by the cipher.

#### setPadBits

    public void setPadBits(int padBits)

set the number of bits in the next message to be treated as pad bits.

#### getPadBits

    public int getPadBits()

retrieve the number of pad bits in the last decoded message.

#### processBlock

    public byte[] processBlock(byte[] in,
                      int inOff,
                      int inLen)
                        throws InvalidCipherTextException

Description copied from interface: `AsymmetricBlockCipher`
process the block of len bytes stored in in from offset inOff.

Specified by:
  `processBlock` in interface `AsymmetricBlockCipher`
Parameters:
  `in` - the input data
  `inOff` - offset into the in array where the data starts
  `inLen` - the length of the block to be processed.
Returns:
  the resulting byte array of the encryption/decryption process.
Throws:
  `InvalidCipherTextException` - data decrypts improperly.