AsymmetricBlockCipher.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipackage org.bouncycastle.crypto; 2282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 3282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 4282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski/** 5282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * base interface that a public/private key block cipher needs 6282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * to conform to. 7282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 8282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic interface AsymmetricBlockCipher 9282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 10282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 11282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * initialise the cipher. 12282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 13282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param forEncryption if true the cipher is initialised for 14282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * encryption, if false for decryption. 15282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param param the key and other data required by the cipher. 16282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 17282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public void init(boolean forEncryption, CipherParameters param); 18282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 19282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 20282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * returns the largest size an input block can be. 21282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 22282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return maximum size for an input block. 23282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 24282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getInputBlockSize(); 25282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 26282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 27282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * returns the maximum size of the block produced by this cipher. 28282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 29282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return maximum size of the output block produced by the cipher. 30282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 31282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getOutputBlockSize(); 32282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 33282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 34282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * process the block of len bytes stored in in from offset inOff. 35282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 36282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param in the input data 37282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param inOff offset into the in array where the data starts 38282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param len the length of the block to be processed. 39282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return the resulting byte array of the encryption/decryption process. 40282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @exception InvalidCipherTextException data decrypts improperly. 41282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @exception DataLengthException the input data is too large for the cipher. 42282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 43282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public byte[] processBlock(byte[] in, int inOff, int len) 44282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski throws InvalidCipherTextException; 45282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski} 46282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski