public override int DecryptBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
{
if (inputBuffer == null)
throw new ArgumentNullException("inputBuffer");
if (outputBuffer == null)
throw new ArgumentNullException("outputBuffer");
if ((inputOffset + (32 / 2)) > inputBuffer.Length)
{
throw new IndexOutOfRangeException("input buffer too short");
}
if ((outputOffset + (32 / 2)) > outputBuffer.Length)
{
throw new IndexOutOfRangeException("output buffer too short");
}
if (_decryptionKey == null)
{
_decryptionKey = GenerateWorkingKey(false, Key);
}
UnPackBlock(inputBuffer, inputOffset);
DecryptBlock(_decryptionKey);
PackBlock(outputBuffer, outputOffset);
return BlockSize;
}