| package org.bouncycastle.crypto; |
| |
| /** |
| * the interface stream ciphers conform to. |
| */ |
| public interface StreamCipher |
| { |
| /** |
| * Initialise the cipher. |
| * |
| * @param forEncryption if true the cipher is initialised for |
| * encryption, if false for decryption. |
| * @param params the key and other data required by the cipher. |
| * @exception IllegalArgumentException if the params argument is |
| * inappropriate. |
| */ |
| public void init(boolean forEncryption, CipherParameters params) |
| throws IllegalArgumentException; |
| |
| /** |
| * Return the name of the algorithm the cipher implements. |
| * |
| * @return the name of the algorithm the cipher implements. |
| */ |
| public String getAlgorithmName(); |
| |
| /** |
| * encrypt/decrypt a single byte returning the result. |
| * |
| * @param in the byte to be processed. |
| * @return the result of processing the input byte. |
| */ |
| public byte returnByte(byte in); |
| |
| /** |
| * process a block of bytes from in putting the result into out. |
| * |
| * @param in the input byte array. |
| * @param inOff the offset into the in array where the data to be processed starts. |
| * @param len the number of bytes to be processed. |
| * @param out the output buffer the processed bytes go into. |
| * @param outOff the offset into the output byte array the processed data starts at. |
| * @return the number of bytes produced - should always be len. |
| * @exception DataLengthException if the output buffer is too small. |
| */ |
| public int processBytes(byte[] in, int inOff, int len, byte[] out, int outOff) |
| throws DataLengthException; |
| |
| /** |
| * reset the cipher. This leaves it in the same state |
| * it was at after the last init (if there was one). |
| */ |
| public void reset(); |
| } |