org.bouncycastle.crypto.engines

Class RSABlindingEngine

public class RSABlindingEngine extends Object implements AsymmetricBlockCipher

This does your basic RSA Chaum's blinding and unblinding as outlined in "Handbook of Applied Cryptography", page 475. You need to use this if you are trying to get another party to generate signatures without them being aware of the message they are signing.
Method Summary
intgetInputBlockSize()
Return the maximum size for an input block to this engine.
intgetOutputBlockSize()
Return the maximum size for an output block to this engine.
voidinit(boolean forEncryption, CipherParameters param)
Initialise the blinding engine.
byte[]processBlock(byte[] in, int inOff, int inLen)
Process a single block using the RSA blinding algorithm.

Method Detail

getInputBlockSize

public int getInputBlockSize()
Return the maximum size for an input block to this engine. For RSA this is always one byte less than the key size on encryption, and the same length as the key size on decryption.

Returns: maximum size for an input block.

getOutputBlockSize

public int getOutputBlockSize()
Return the maximum size for an output block to this engine. For RSA this is always one byte less than the key size on decryption, and the same length as the key size on encryption.

Returns: maximum size for an output block.

init

public void init(boolean forEncryption, CipherParameters param)
Initialise the blinding engine.

Parameters: forEncryption true if we are encrypting (blinding), false otherwise. param the necessary RSA key parameters.

processBlock

public byte[] processBlock(byte[] in, int inOff, int inLen)
Process a single block using the RSA blinding algorithm.

Parameters: in the input array. inOff the offset into the input buffer where the data starts. inLen the length of the data to be processed.

Returns: the result of the RSA process.

Throws: DataLengthException the input block is too large.