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 param 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 stars at. 43 * @exception DataLengthException if the output buffer is too small. 44 */ 45 public void processBytes(byte[] in, int inOff, int len, byte[] out, int outOff) 46 throws DataLengthException; 47 48 /** 49 * reset the cipher. This leaves it in the same state 50 * it was at after the last init (if there was one). 51 */ 52 public void reset(); 53 } 54