public byte[] TransformFinalBlock(byte[] inputBuffer,
int inputOffset,
int inputCount)
{
if (_disposed) {
throw new ObjectDisposedException(GetType().FullName);
}
if (inputBuffer == null)
throw new ArgumentNullException("inputBuffer");
if (inputOffset < 0 || inputOffset >= inputBuffer.Length)
throw new ArgumentOutOfRangeException("inputOffset");
if (inputCount < 0 || inputCount > inputBuffer.Length-inputOffset)
throw new ArgumentOutOfRangeException("inputCount");
if (inputCount % _blockSize != 0)
throw new CryptographicException("inputCount");
byte[] outputBuffer = new byte[inputCount];
TransformBlock(inputBuffer, inputOffset, inputCount, outputBuffer, 0);
Reset();
return outputBuffer;
}