1package org.bouncycastle.crypto; 2 3 4/** 5 * base interface that a public/private key block cipher needs 6 * to conform to. 7 */ 8public interface AsymmetricBlockCipher 9{ 10 /** 11 * initialise the cipher. 12 * 13 * @param forEncryption if true the cipher is initialised for 14 * encryption, if false for decryption. 15 * @param param the key and other data required by the cipher. 16 */ 17 public void init(boolean forEncryption, CipherParameters param); 18 19 /** 20 * returns the largest size an input block can be. 21 * 22 * @return maximum size for an input block. 23 */ 24 public int getInputBlockSize(); 25 26 /** 27 * returns the maximum size of the block produced by this cipher. 28 * 29 * @return maximum size of the output block produced by the cipher. 30 */ 31 public int getOutputBlockSize(); 32 33 /** 34 * process the block of len bytes stored in in from offset inOff. 35 * 36 * @param in the input data 37 * @param inOff offset into the in array where the data starts 38 * @param len the length of the block to be processed. 39 * @return the resulting byte array of the encryption/decryption process. 40 * @exception InvalidCipherTextException data decrypts improperly. 41 * @exception DataLengthException the input data is too large for the cipher. 42 */ 43 public byte[] processBlock(byte[] in, int inOff, int len) 44 throws InvalidCipherTextException; 45} 46