2 // System.Security.Cryptography ICryptoTransform interface
\r
5 // Matthew S. Ford (Matthew.S.Ford@Rose-Hulman.Edu)
\r
7 // Copyright 2001 by Matthew S. Ford.
\r
11 using System.Security.Cryptography;
\r
13 namespace System.Security.Cryptography {
\r
16 /// Crytographic functions that can process a stream of bytes implement this interface.
\r
17 /// This works by stringing together one or more ICryptoTransform classes with a stream.
\r
18 /// Data is passed from one to the next without the need of outside buffering/intervention.
\r
20 public interface ICryptoTransform {
\r
23 /// Whether the function can transform multiple blocks at a time.
\r
25 bool CanTransformMultipleBlocks {get;}
\r
28 /// Size of input blocks for the function.
\r
30 int InputBlockSize {get;}
\r
33 /// Size of the output blocks of the function.
\r
35 int OutputBlockSize {get;}
\r
38 /// FIXME: Process some data. A block at a time? Less than a block at a time?
\r
40 int TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset);
\r
43 /// Processes the final part of the data. Also finalizes the function if needed.
\r
45 byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount);
\r