{$IFNDEF CLR}

{$I Dac.inc}

unit CRCryptoTransformIntf;
{$ENDIF}

interface

{$IFNDEF CLR}
uses
  SysUtils, CRTypes;
{$ENDIF}

{$M-}
type
  ICryptoTransform = interface
  ['{AE5FFE08-1D09-4452-91C8-122B05513FEB}']
    function get_CanReuseTransform: Boolean;
    function get_CanTransformMultipleBlocks: Boolean;
    function get_InputBlockSize: Integer;
    function get_OutputBlockSize: Integer;

    procedure TransformBlock(const InputBuffer: TBytes; InputOffset, InputCount: Integer); overload;
    function TransformBlock(const InputBuffer: TBytes; InputOffset, InputCount: Integer; var OutputBuffer: TBytes; OutputOffset: Integer): Integer; overload;
    procedure TransformFinalBlock(const InputBuffer: TBytes; InputOffset, InputCount: Integer);

    property CanReuseTransform: Boolean read get_CanReuseTransform;
    property CanTransformMultipleBlocks: Boolean read get_CanTransformMultipleBlocks;
    property InputBlockSize: Integer read get_InputBlockSize;
    property OutputBlockSize: Integer read get_OutputBlockSize;
  end;

implementation

end.