Home | History | Annotate | Download | only in crypto
      1 package org.bouncycastle.crypto;
      2 
      3 
      4 /**
      5  * Block cipher engines are expected to conform to this interface.
      6  */
      7 public interface BlockCipher
      8 {
      9     /**
     10      * Initialise the cipher.
     11      *
     12      * @param forEncryption if true the cipher is initialised for
     13      *  encryption, if false for decryption.
     14      * @param params the key and other data required by the cipher.
     15      * @exception IllegalArgumentException if the params argument is
     16      * inappropriate.
     17      */
     18     public void init(boolean forEncryption, CipherParameters params)
     19         throws IllegalArgumentException;
     20 
     21     /**
     22      * Return the name of the algorithm the cipher implements.
     23      *
     24      * @return the name of the algorithm the cipher implements.
     25      */
     26     public String getAlgorithmName();
     27 
     28     /**
     29      * Return the block size for this cipher (in bytes).
     30      *
     31      * @return the block size for this cipher in bytes.
     32      */
     33     public int getBlockSize();
     34 
     35     /**
     36      * Process one block of input from the array in and write it to
     37      * the out array.
     38      *
     39      * @param in the array containing the input data.
     40      * @param inOff offset into the in array the data starts at.
     41      * @param out the array the output data will be copied into.
     42      * @param outOff the offset into the out array the output will start at.
     43      * @exception DataLengthException if there isn't enough data in in, or
     44      * space in out.
     45      * @exception IllegalStateException if the cipher isn't initialised.
     46      * @return the number of bytes processed and produced.
     47      */
     48     public int processBlock(byte[] in, int inOff, byte[] out, int outOff)
     49         throws DataLengthException, IllegalStateException;
     50 
     51     /**
     52      * Reset the cipher. After resetting the cipher is in the same state
     53      * as it was after the last init (if there was one).
     54      */
     55     public void reset();
     56 }
     57