For the latest news and information visit The GNU Crypto project

## gnu.crypto.mode
Interface IMode

All Superinterfaces:
  java.lang.Cloneable, IBlockCipher

All Known Implementing Classes:
  BaseMode

public interface IMode
extends IBlockCipher

The basic visible methods of any block cipher mode.

Block ciphers encrypt plaintext in fixed size n-bit blocks. For messages larger than n bits, the simplest approach is to segment the message into n-bit blocks and process (encrypt and/or decrypt) each one separately (Electronic Codebook or ECB mode). But this approach has disadvantages in most applications. The block cipher modes of operations are one way of working around those disadvantages.

A Mode always employs an underlying block cipher for processing its input. For all intents and purposes, a Mode appears to behave as any other block cipher with the following differences:

- Depending on the specifications of the mode, the block size may be different that that of the underlying cipher.
- While some modes of operations allow operations on block sizes that can be 1-bit long, this library will only deal with sizes that are multiple of 8 bits. This is because the `byte` is the smallest, easy to handle, primitive type in Java.
- Some modes need an Initialisation Vector (IV) to be properly initialised.

Possible additional initialisation values for an instance of that type are:

- The block size in which to operate this mode instance. This value is optional, if unspecified, the underlying block cipher's configured block size shall be used.
- Whether this mode will be used for encryption or decryption. This value is mandatory and should be included in the initialisation parameters. If it isn't, a `IllegalStateException` will be thrown if any method, other than `reset()` is invoked on the instance.
- The byte array containing the initialisation vector, if required by this type of mode.

Field Summary
`static int` `DECRYPTION` Constant indicating the instance is being used for decryption.
`static int` `ENCRYPTION` Constant indicating the instance is being used for encryption.
`static java.lang.String` `IV` Property name of the initialisation vector to use, if required, with this instance.
`static java.lang.String` `MODE_BLOCK_SIZE` Property name of the block size in which to operate this mode.
`static java.lang.String` `STATE` Property name of the state in which to operate this mode.

Fields inherited from interface gnu.crypto.cipher.IBlockCipher
`CIPHER_BLOCK_SIZE, KEY_MATERIAL`

Method Summary
`void` `update(byte[] in, int inOffset, byte[] out, int outOffset)` A convenience method.

Methods inherited from interface gnu.crypto.cipher.IBlockCipher
`blockSizes, clone, currentBlockSize, decryptBlock, defaultBlockSize, defaultKeySize, encryptBlock, init, keySizes, name, reset, selfTest`

Field Detail

### STATE

    public static final java.lang.String STATE

  Property name of the state in which to operate this mode. The value associated to this property name is taken to be an `Integer` which value is either `ENCRYPTION` or `DECRYPTION`.

  See Also:
    Constant Field Values

### MODE_BLOCK_SIZE

    public static final java.lang.String MODE_BLOCK_SIZE

  Property name of the block size in which to operate this mode. The value associated with this property name is taken to be an `Integer`. If it is not specified, the value of the block size of the underlying block cipher, used to construct the mode instance, shall be used.

  See Also:
    Constant Field Values

### IV

    public static final java.lang.String IV

  Property name of the initialisation vector to use, if required, with this instance. The value associated with this property name is taken to be a byte array. If the concrete instance needs such a parameter, and it has not been specified as part of the initialissation parameters, an all-zero byte array of the appropriate size shall be used.

  See Also:
    Constant Field Values

### ENCRYPTION

    public static final int ENCRYPTION

  Constant indicating the instance is being used for encryption.

  See Also:
    Constant Field Values

### DECRYPTION

    public static final int DECRYPTION

  Constant indicating the instance is being used for decryption.

  See Also:
    Constant Field Values

Method Detail

### update

    public void update(byte[] in,
                       int inOffset,
                       byte[] out,
                       int outOffset)
                throws java.lang.IllegalStateException

  A convenience method. Effectively invokes the `encryptBlock()` or `decryptBlock()` method depending on the operational state of the instance.

  Parameters:
    `in` - the plaintext.
    `inOffset` - index of `in` from which to start considering data.
    `out` - the ciphertext.
    `outOffset` - index of `out` from which to store result.
  Throws:
    `java.lang.IllegalStateException` - if the instance is not initialised.

For the latest news and information visit The GNU Crypto project

Copyright © 2001, 2002, 2003, 2004 Free Software Foundation, Inc.