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