Home | History | Annotate | Download | only in crypto
      1 package org.bouncycastle.crypto;
      2 
      3 /**
      4  * the interface stream ciphers conform to.
      5  */
      6 public interface StreamCipher
      7 {
      8     /**
      9      * Initialise the cipher.
     10      *
     11      * @param forEncryption if true the cipher is initialised for
     12      *  encryption, if false for decryption.
     13      * @param params the key and other data required by the cipher.
     14      * @exception IllegalArgumentException if the params argument is
     15      * inappropriate.
     16      */
     17     public void init(boolean forEncryption, CipherParameters params)
     18         throws IllegalArgumentException;
     19 
     20     /**
     21      * Return the name of the algorithm the cipher implements.
     22      *
     23      * @return the name of the algorithm the cipher implements.
     24      */
     25     public String getAlgorithmName();
     26 
     27     /**
     28      * encrypt/decrypt a single byte returning the result.
     29      *
     30      * @param in the byte to be processed.
     31      * @return the result of processing the input byte.
     32      */
     33     public byte returnByte(byte in);
     34 
     35     /**
     36      * process a block of bytes from in putting the result into out.
     37      *
     38      * @param in the input byte array.
     39      * @param inOff the offset into the in array where the data to be processed starts.
     40      * @param len the number of bytes to be processed.
     41      * @param out the output buffer the processed bytes go into.
     42      * @param outOff the offset into the output byte array the processed data starts at.
     43      * @return the number of bytes produced - should always be len.
     44      * @exception DataLengthException if the output buffer is too small.
     45      */
     46     public int processBytes(byte[] in, int inOff, int len, byte[] out, int outOff)
     47         throws DataLengthException;
     48 
     49     /**
     50      * reset the cipher. This leaves it in the same state
     51      * it was at after the last init (if there was one).
     52      */
     53     public void reset();
     54 }
     55