瀏覽代碼

removed some unneeded interfaces.

Ugochukwu Mmaduekwe 7 年之前
父節點
當前提交
eb848e206f
共有 51 個文件被更改,包括 623 次插入973 次删除
  1. 0 8
      CryptoLib.Samples/Delphi.Samples/UsageSamples.dpr
  2. 2 10
      CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.dpr
  3. 5 4
      CryptoLib.Tests/FreePascal.Tests/CryptoLib.Tests.lpi
  4. 0 2
      CryptoLib.Tests/src/Asn1/EqualsAndHashCodeTests.pas
  5. 17 21
      CryptoLib/src/Asn1/ClpAsn1InputStream.pas
  6. 1 2
      CryptoLib/src/Asn1/ClpAsn1OutputStream.pas
  7. 4 4
      CryptoLib/src/Asn1/ClpBerBitString.pas
  8. 5 5
      CryptoLib/src/Asn1/ClpBerNull.pas
  9. 4 4
      CryptoLib/src/Asn1/ClpBerOctetString.pas
  10. 2 3
      CryptoLib/src/Asn1/ClpBerOutputStream.pas
  11. 4 4
      CryptoLib/src/Asn1/ClpBerSequence.pas
  12. 4 4
      CryptoLib/src/Asn1/ClpBerSet.pas
  13. 4 4
      CryptoLib/src/Asn1/ClpBerTaggedObject.pas
  14. 2 3
      CryptoLib/src/Asn1/ClpConstructedOctetStream.pas
  15. 2 4
      CryptoLib/src/Asn1/ClpDefiniteLengthInputStream.pas
  16. 3 0
      CryptoLib/src/Asn1/ClpDerApplicationSpecific.pas
  17. 1 0
      CryptoLib/src/Asn1/ClpDerBitString.pas
  18. 1 0
      CryptoLib/src/Asn1/ClpDerBmpString.pas
  19. 1 0
      CryptoLib/src/Asn1/ClpDerBoolean.pas
  20. 1 0
      CryptoLib/src/Asn1/ClpDerEnumerated.pas
  21. 1 0
      CryptoLib/src/Asn1/ClpDerExternal.pas
  22. 1 0
      CryptoLib/src/Asn1/ClpDerGeneralString.pas
  23. 1 0
      CryptoLib/src/Asn1/ClpDerGraphicString.pas
  24. 1 0
      CryptoLib/src/Asn1/ClpDerIA5String.pas
  25. 1 0
      CryptoLib/src/Asn1/ClpDerInteger.pas
  26. 1 0
      CryptoLib/src/Asn1/ClpDerNumericString.pas
  27. 1 0
      CryptoLib/src/Asn1/ClpDerObjectIdentifier.pas
  28. 3 2
      CryptoLib/src/Asn1/ClpDerOctetString.pas
  29. 4 3
      CryptoLib/src/Asn1/ClpDerOutputStream.pas
  30. 1 0
      CryptoLib/src/Asn1/ClpDerPrintableString.pas
  31. 1 0
      CryptoLib/src/Asn1/ClpDerT61String.pas
  32. 1 0
      CryptoLib/src/Asn1/ClpDerTaggedObject.pas
  33. 1 0
      CryptoLib/src/Asn1/ClpDerUniversalString.pas
  34. 1 0
      CryptoLib/src/Asn1/ClpDerUtf8String.pas
  35. 1 0
      CryptoLib/src/Asn1/ClpDerVideotexString.pas
  36. 1 0
      CryptoLib/src/Asn1/ClpDerVisibleString.pas
  37. 2 4
      CryptoLib/src/Asn1/ClpIndefiniteLengthInputStream.pas
  38. 2 3
      CryptoLib/src/Asn1/ClpLimitedInputStream.pas
  39. 0 39
      CryptoLib/src/Interfaces/ClpIAsn1InputStream.pas
  40. 0 34
      CryptoLib/src/Interfaces/ClpIAsn1OutputStream.pas
  41. 0 36
      CryptoLib/src/Interfaces/ClpIBaseInputStream.pas
  42. 0 36
      CryptoLib/src/Interfaces/ClpIBerOutputStream.pas
  43. 0 38
      CryptoLib/src/Interfaces/ClpIConstructedOctetStream.pas
  44. 0 43
      CryptoLib/src/Interfaces/ClpIDefiniteLengthInputStream.pas
  45. 0 43
      CryptoLib/src/Interfaces/ClpIIndefiniteLengthInputStream.pas
  46. 0 39
      CryptoLib/src/Interfaces/ClpILimitedInputStream.pas
  47. 1 0
      CryptoLib/src/Interfaces/ClpIProxiedInterface.pas
  48. 519 552
      CryptoLib/src/Packages/FPC/CryptoLib4PascalPackage.lpk
  49. 11 14
      CryptoLib/src/Packages/FPC/CryptoLib4PascalPackage.pas
  50. 2 3
      CryptoLib/src/Utils/IO/ClpBaseInputStream.pas
  51. 2 2
      CryptoLib/src/Utils/IO/ClpFilterStream.pas

+ 0 - 8
CryptoLib.Samples/Delphi.Samples/UsageSamples.dpr

@@ -99,11 +99,9 @@ uses
   ClpIAsn1ApplicationSpecificParser in '..\..\CryptoLib\src\Interfaces\ClpIAsn1ApplicationSpecificParser.pas',
   ClpIAsn1Choice in '..\..\CryptoLib\src\Interfaces\ClpIAsn1Choice.pas',
   ClpIAsn1EncodableVector in '..\..\CryptoLib\src\Interfaces\ClpIAsn1EncodableVector.pas',
-  ClpIAsn1InputStream in '..\..\CryptoLib\src\Interfaces\ClpIAsn1InputStream.pas',
   ClpIAsn1Null in '..\..\CryptoLib\src\Interfaces\ClpIAsn1Null.pas',
   ClpIAsn1OctetString in '..\..\CryptoLib\src\Interfaces\ClpIAsn1OctetString.pas',
   ClpIAsn1OctetStringParser in '..\..\CryptoLib\src\Interfaces\ClpIAsn1OctetStringParser.pas',
-  ClpIAsn1OutputStream in '..\..\CryptoLib\src\Interfaces\ClpIAsn1OutputStream.pas',
   ClpIAsn1Sequence in '..\..\CryptoLib\src\Interfaces\ClpIAsn1Sequence.pas',
   ClpIAsn1SequenceParser in '..\..\CryptoLib\src\Interfaces\ClpIAsn1SequenceParser.pas',
   ClpIAsn1Set in '..\..\CryptoLib\src\Interfaces\ClpIAsn1Set.pas',
@@ -115,14 +113,12 @@ uses
   ClpIAsymmetricCipherKeyPair in '..\..\CryptoLib\src\Interfaces\ClpIAsymmetricCipherKeyPair.pas',
   ClpIAsymmetricCipherKeyPairGenerator in '..\..\CryptoLib\src\Interfaces\ClpIAsymmetricCipherKeyPairGenerator.pas',
   ClpIAsymmetricKeyParameter in '..\..\CryptoLib\src\Interfaces\ClpIAsymmetricKeyParameter.pas',
-  ClpIBaseInputStream in '..\..\CryptoLib\src\Interfaces\ClpIBaseInputStream.pas',
   ClpIBerApplicationSpecific in '..\..\CryptoLib\src\Interfaces\ClpIBerApplicationSpecific.pas',
   ClpIBerApplicationSpecificParser in '..\..\CryptoLib\src\Interfaces\ClpIBerApplicationSpecificParser.pas',
   ClpIBerBitString in '..\..\CryptoLib\src\Interfaces\ClpIBerBitString.pas',
   ClpIBerNull in '..\..\CryptoLib\src\Interfaces\ClpIBerNull.pas',
   ClpIBerOctetString in '..\..\CryptoLib\src\Interfaces\ClpIBerOctetString.pas',
   ClpIBerOctetStringParser in '..\..\CryptoLib\src\Interfaces\ClpIBerOctetStringParser.pas',
-  ClpIBerOutputStream in '..\..\CryptoLib\src\Interfaces\ClpIBerOutputStream.pas',
   ClpIBerSequence in '..\..\CryptoLib\src\Interfaces\ClpIBerSequence.pas',
   ClpIBerSequenceParser in '..\..\CryptoLib\src\Interfaces\ClpIBerSequenceParser.pas',
   ClpIBerSet in '..\..\CryptoLib\src\Interfaces\ClpIBerSet.pas',
@@ -130,9 +126,7 @@ uses
   ClpIBerTaggedObject in '..\..\CryptoLib\src\Interfaces\ClpIBerTaggedObject.pas',
   ClpIBerTaggedObjectParser in '..\..\CryptoLib\src\Interfaces\ClpIBerTaggedObjectParser.pas',
   ClpICipherParameters in '..\..\CryptoLib\src\Interfaces\ClpICipherParameters.pas',
-  ClpIConstructedOctetStream in '..\..\CryptoLib\src\Interfaces\ClpIConstructedOctetStream.pas',
   ClpICryptoApiRandomGenerator in '..\..\CryptoLib\src\Interfaces\ClpICryptoApiRandomGenerator.pas',
-  ClpIDefiniteLengthInputStream in '..\..\CryptoLib\src\Interfaces\ClpIDefiniteLengthInputStream.pas',
   ClpIDerApplicationSpecific in '..\..\CryptoLib\src\Interfaces\ClpIDerApplicationSpecific.pas',
   ClpIDerBitString in '..\..\CryptoLib\src\Interfaces\ClpIDerBitString.pas',
   ClpIDerBmpString in '..\..\CryptoLib\src\Interfaces\ClpIDerBmpString.pas',
@@ -178,9 +172,7 @@ uses
   ClpIGlvEndomorphism in '..\..\CryptoLib\src\Interfaces\ClpIGlvEndomorphism.pas',
   ClpIGlvTypeBEndomorphism in '..\..\CryptoLib\src\Interfaces\ClpIGlvTypeBEndomorphism.pas',
   ClpIGlvTypeBParameters in '..\..\CryptoLib\src\Interfaces\ClpIGlvTypeBParameters.pas',
-  ClpIIndefiniteLengthInputStream in '..\..\CryptoLib\src\Interfaces\ClpIIndefiniteLengthInputStream.pas',
   ClpIKeyGenerationParameters in '..\..\CryptoLib\src\Interfaces\ClpIKeyGenerationParameters.pas',
-  ClpILimitedInputStream in '..\..\CryptoLib\src\Interfaces\ClpILimitedInputStream.pas',
   ClpIOidTokenizer in '..\..\CryptoLib\src\Interfaces\ClpIOidTokenizer.pas',
   ClpIPCGRandomNumberGenerator in '..\..\CryptoLib\src\Interfaces\ClpIPCGRandomNumberGenerator.pas',
   ClpIPolynomial in '..\..\CryptoLib\src\Interfaces\ClpIPolynomial.pas',

+ 2 - 10
CryptoLib.Tests/Delphi.Tests/CryptoLib.Tests.dpr

@@ -112,11 +112,9 @@ uses
   ClpIAsn1ApplicationSpecificParser in '..\..\CryptoLib\src\Interfaces\ClpIAsn1ApplicationSpecificParser.pas',
   ClpIAsn1Choice in '..\..\CryptoLib\src\Interfaces\ClpIAsn1Choice.pas',
   ClpIAsn1EncodableVector in '..\..\CryptoLib\src\Interfaces\ClpIAsn1EncodableVector.pas',
-  ClpIAsn1InputStream in '..\..\CryptoLib\src\Interfaces\ClpIAsn1InputStream.pas',
   ClpIAsn1Null in '..\..\CryptoLib\src\Interfaces\ClpIAsn1Null.pas',
   ClpIAsn1OctetString in '..\..\CryptoLib\src\Interfaces\ClpIAsn1OctetString.pas',
   ClpIAsn1OctetStringParser in '..\..\CryptoLib\src\Interfaces\ClpIAsn1OctetStringParser.pas',
-  ClpIAsn1OutputStream in '..\..\CryptoLib\src\Interfaces\ClpIAsn1OutputStream.pas',
   ClpIAsn1Sequence in '..\..\CryptoLib\src\Interfaces\ClpIAsn1Sequence.pas',
   ClpIAsn1SequenceParser in '..\..\CryptoLib\src\Interfaces\ClpIAsn1SequenceParser.pas',
   ClpIAsn1Set in '..\..\CryptoLib\src\Interfaces\ClpIAsn1Set.pas',
@@ -128,14 +126,12 @@ uses
   ClpIAsymmetricCipherKeyPair in '..\..\CryptoLib\src\Interfaces\ClpIAsymmetricCipherKeyPair.pas',
   ClpIAsymmetricCipherKeyPairGenerator in '..\..\CryptoLib\src\Interfaces\ClpIAsymmetricCipherKeyPairGenerator.pas',
   ClpIAsymmetricKeyParameter in '..\..\CryptoLib\src\Interfaces\ClpIAsymmetricKeyParameter.pas',
-  ClpIBaseInputStream in '..\..\CryptoLib\src\Interfaces\ClpIBaseInputStream.pas',
   ClpIBerApplicationSpecific in '..\..\CryptoLib\src\Interfaces\ClpIBerApplicationSpecific.pas',
   ClpIBerApplicationSpecificParser in '..\..\CryptoLib\src\Interfaces\ClpIBerApplicationSpecificParser.pas',
   ClpIBerBitString in '..\..\CryptoLib\src\Interfaces\ClpIBerBitString.pas',
   ClpIBerNull in '..\..\CryptoLib\src\Interfaces\ClpIBerNull.pas',
   ClpIBerOctetString in '..\..\CryptoLib\src\Interfaces\ClpIBerOctetString.pas',
   ClpIBerOctetStringParser in '..\..\CryptoLib\src\Interfaces\ClpIBerOctetStringParser.pas',
-  ClpIBerOutputStream in '..\..\CryptoLib\src\Interfaces\ClpIBerOutputStream.pas',
   ClpIBerSequence in '..\..\CryptoLib\src\Interfaces\ClpIBerSequence.pas',
   ClpIBerSequenceParser in '..\..\CryptoLib\src\Interfaces\ClpIBerSequenceParser.pas',
   ClpIBerSet in '..\..\CryptoLib\src\Interfaces\ClpIBerSet.pas',
@@ -143,9 +139,7 @@ uses
   ClpIBerTaggedObject in '..\..\CryptoLib\src\Interfaces\ClpIBerTaggedObject.pas',
   ClpIBerTaggedObjectParser in '..\..\CryptoLib\src\Interfaces\ClpIBerTaggedObjectParser.pas',
   ClpICipherParameters in '..\..\CryptoLib\src\Interfaces\ClpICipherParameters.pas',
-  ClpIConstructedOctetStream in '..\..\CryptoLib\src\Interfaces\ClpIConstructedOctetStream.pas',
   ClpICryptoApiRandomGenerator in '..\..\CryptoLib\src\Interfaces\ClpICryptoApiRandomGenerator.pas',
-  ClpIDefiniteLengthInputStream in '..\..\CryptoLib\src\Interfaces\ClpIDefiniteLengthInputStream.pas',
   ClpIDerApplicationSpecific in '..\..\CryptoLib\src\Interfaces\ClpIDerApplicationSpecific.pas',
   ClpIDerBitString in '..\..\CryptoLib\src\Interfaces\ClpIDerBitString.pas',
   ClpIDerBmpString in '..\..\CryptoLib\src\Interfaces\ClpIDerBmpString.pas',
@@ -184,16 +178,13 @@ uses
   ClpIECPrivateKeyParameters in '..\..\CryptoLib\src\Interfaces\ClpIECPrivateKeyParameters.pas',
   ClpIECPublicKeyParameters in '..\..\CryptoLib\src\Interfaces\ClpIECPublicKeyParameters.pas',
   ClpIExtensionField in '..\..\CryptoLib\src\Interfaces\ClpIExtensionField.pas',
-  ClpIFilterStream in '..\..\CryptoLib\src\Interfaces\ClpIFilterStream.pas',
   ClpIFiniteField in '..\..\CryptoLib\src\Interfaces\ClpIFiniteField.pas',
   ClpIFixedPointCombMultiplier in '..\..\CryptoLib\src\Interfaces\ClpIFixedPointCombMultiplier.pas',
   ClpIFixedPointPreCompInfo in '..\..\CryptoLib\src\Interfaces\ClpIFixedPointPreCompInfo.pas',
   ClpIGlvEndomorphism in '..\..\CryptoLib\src\Interfaces\ClpIGlvEndomorphism.pas',
   ClpIGlvTypeBEndomorphism in '..\..\CryptoLib\src\Interfaces\ClpIGlvTypeBEndomorphism.pas',
   ClpIGlvTypeBParameters in '..\..\CryptoLib\src\Interfaces\ClpIGlvTypeBParameters.pas',
-  ClpIIndefiniteLengthInputStream in '..\..\CryptoLib\src\Interfaces\ClpIIndefiniteLengthInputStream.pas',
   ClpIKeyGenerationParameters in '..\..\CryptoLib\src\Interfaces\ClpIKeyGenerationParameters.pas',
-  ClpILimitedInputStream in '..\..\CryptoLib\src\Interfaces\ClpILimitedInputStream.pas',
   ClpIOidTokenizer in '..\..\CryptoLib\src\Interfaces\ClpIOidTokenizer.pas',
   ClpIPCGRandomNumberGenerator in '..\..\CryptoLib\src\Interfaces\ClpIPCGRandomNumberGenerator.pas',
   ClpIPolynomial in '..\..\CryptoLib\src\Interfaces\ClpIPolynomial.pas',
@@ -409,7 +400,8 @@ uses
   ClpIPbeParametersGenerator in '..\..\CryptoLib\src\Interfaces\ClpIPbeParametersGenerator.pas',
   ClpPkcs5S2ParametersGenerator in '..\..\CryptoLib\src\Crypto\Generators\ClpPkcs5S2ParametersGenerator.pas',
   ClpIPkcs5S2ParametersGenerator in '..\..\CryptoLib\src\Interfaces\ClpIPkcs5S2ParametersGenerator.pas',
-  Pkcs5Tests in '..\src\Crypto\Pkcs5Tests.pas';
+  Pkcs5Tests in '..\src\Crypto\Pkcs5Tests.pas',
+  ClpIFilterStream in '..\..\CryptoLib\src\Interfaces\ClpIFilterStream.pas';
 
 begin
 

+ 5 - 4
CryptoLib.Tests/FreePascal.Tests/CryptoLib.Tests.lpi

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <CONFIG>
   <ProjectOptions>
-    <Version Value="10"/>
+    <Version Value="11"/>
     <PathDelim Value="\"/>
     <General>
       <SessionStorage Value="InProjectDir"/>
@@ -17,9 +17,10 @@
       <Version Value="2"/>
     </PublishOptions>
     <RunParams>
-      <local>
-        <FormatVersion Value="1"/>
-      </local>
+      <FormatVersion Value="2"/>
+      <Modes Count="1">
+        <Mode0 Name="default"/>
+      </Modes>
     </RunParams>
     <RequiredPackages Count="4">
       <Item1>

+ 0 - 2
CryptoLib.Tests/src/Asn1/EqualsAndHashCodeTests.pas

@@ -62,10 +62,8 @@ uses
   ClpDerVisibleString,
   ClpDerGraphicString,
   ClpDerVideotexString,
-  ClpIAsn1OutputStream,
   ClpAsn1OutputStream,
   ClpAsn1InputStream,
-  ClpIAsn1InputStream,
   ClpIDerPrintableString,
   ClpAsn1Object;
 

+ 17 - 21
CryptoLib/src/Asn1/ClpAsn1InputStream.pas

@@ -63,9 +63,7 @@ uses
   ClpAsn1EncodableVector,
   ClpDerSequence,
   ClpDerSet,
-  ClpIDefiniteLengthInputStream,
   ClpIAsn1EncodableVector,
-  ClpIAsn1InputStream,
   ClpFilterStream,
   ClpCryptoLibTypes;
 
@@ -91,7 +89,7 @@ type
   /// the stream. If an ASN.1 Null is encountered a DerBER Null object is <br />
   /// returned. <br />
   /// </summary>
-  TAsn1InputStream = class(TFilterStream, IAsn1InputStream)
+  TAsn1InputStream = class(TFilterStream)
 
   strict private
 
@@ -136,14 +134,13 @@ type
 
     function BuildEncodableVector(): IAsn1EncodableVector;
 
-    function BuildDerEncodableVector(const dIn: IDefiniteLengthInputStream)
+    function BuildDerEncodableVector(dIn: TDefiniteLengthInputStream)
       : IAsn1EncodableVector; virtual;
 
-    function CreateDerSequence(const dIn: IDefiniteLengthInputStream)
+    function CreateDerSequence(dIn: TDefiniteLengthInputStream)
       : IDerSequence; virtual;
 
-    function CreateDerSet(const dIn: IDefiniteLengthInputStream)
-      : IDerSet; virtual;
+    function CreateDerSet(dIn: TDefiniteLengthInputStream): IDerSet; virtual;
 
     class function FindLimit(input: TStream): Int32; static;
 
@@ -151,13 +148,13 @@ type
 
     class function ReadLength(s: TStream; limit: Int32): Int32; static;
 
-    class function GetBuffer(const defIn: IDefiniteLengthInputStream;
+    class function GetBuffer(defIn: TDefiniteLengthInputStream;
       tmpBuffers: TCryptoLibMatrixByteArray): TCryptoLibByteArray;
       static; inline;
 
     class function CreatePrimitiveDerObject(tagNo: Int32;
-      const defIn: IDefiniteLengthInputStream;
-      tmpBuffers: TCryptoLibMatrixByteArray): IAsn1Object; static;
+      defIn: TDefiniteLengthInputStream; tmpBuffers: TCryptoLibMatrixByteArray)
+      : IAsn1Object; static;
   end;
 
 implementation
@@ -201,9 +198,8 @@ begin
   result := System.High(Int32);
 end;
 
-class function TAsn1InputStream.GetBuffer(const defIn
-  : IDefiniteLengthInputStream; tmpBuffers: TCryptoLibMatrixByteArray)
-  : TCryptoLibByteArray;
+class function TAsn1InputStream.GetBuffer(defIn: TDefiniteLengthInputStream;
+  tmpBuffers: TCryptoLibMatrixByteArray): TCryptoLibByteArray;
 var
   len: Int32;
   buf, temp: TCryptoLibByteArray;
@@ -229,8 +225,8 @@ begin
 end;
 
 class function TAsn1InputStream.CreatePrimitiveDerObject(tagNo: Int32;
-  const defIn: IDefiniteLengthInputStream;
-  tmpBuffers: TCryptoLibMatrixByteArray): IAsn1Object;
+  defIn: TDefiniteLengthInputStream; tmpBuffers: TCryptoLibMatrixByteArray)
+  : IAsn1Object;
 var
   bytes: TCryptoLibByteArray;
 begin
@@ -544,11 +540,11 @@ begin
 end;
 
 function TAsn1InputStream.BuildDerEncodableVector
-  (const dIn: IDefiniteLengthInputStream): IAsn1EncodableVector;
+  (dIn: TDefiniteLengthInputStream): IAsn1EncodableVector;
 var
   res: TAsn1InputStream;
 begin
-  res := TAsn1InputStream.Create(dIn as TDefiniteLengthInputStream);
+  res := TAsn1InputStream.Create(dIn);
   try
     result := res.BuildEncodableVector();
   finally
@@ -675,14 +671,14 @@ begin
 
 end;
 
-function TAsn1InputStream.CreateDerSequence
-  (const dIn: IDefiniteLengthInputStream): IDerSequence;
+function TAsn1InputStream.CreateDerSequence(dIn: TDefiniteLengthInputStream)
+  : IDerSequence;
 begin
   result := TDerSequence.FromVector(BuildDerEncodableVector(dIn));
 end;
 
-function TAsn1InputStream.CreateDerSet(const dIn
-  : IDefiniteLengthInputStream): IDerSet;
+function TAsn1InputStream.CreateDerSet(dIn: TDefiniteLengthInputStream)
+  : IDerSet;
 begin
   result := TDerSet.FromVector(BuildDerEncodableVector(dIn), false);
 end;

+ 1 - 2
CryptoLib/src/Asn1/ClpAsn1OutputStream.pas

@@ -23,11 +23,10 @@ interface
 
 uses
   Classes,
-  ClpIAsn1OutputStream,
   ClpDerOutputStream;
 
 type
-  TAsn1OutputStream = class sealed(TDerOutputStream, IAsn1OutputStream)
+  TAsn1OutputStream = class sealed(TDerOutputStream)
 
   public
     constructor Create(os: TStream);

+ 4 - 4
CryptoLib/src/Asn1/ClpBerBitString.pas

@@ -24,11 +24,12 @@ interface
 uses
   SysUtils,
   ClpCryptoLibTypes,
+  ClpDerOutputStream,
+  ClpAsn1OutputStream,
+  ClpBerOutputStream,
   ClpIProxiedInterface,
   ClpDerBitString,
   ClpIBerBitString,
-  ClpIAsn1OutputStream,
-  ClpIBerOutputStream,
   ClpAsn1Tags;
 
 type
@@ -70,8 +71,7 @@ end;
 
 procedure TBerBitString.Encode(const derOut: IDerOutputStream);
 begin
-  if ((Supports(derOut, IAsn1OutputStream)) or
-    (Supports(derOut, IBerOutputStream))) then
+  if ((derOut is TAsn1OutputStream) or (derOut is TBerOutputStream)) then
   begin
     derOut.WriteEncoded(TAsn1Tags.BitString, Byte(mPadBits), mData);
   end

+ 5 - 5
CryptoLib/src/Asn1/ClpBerNull.pas

@@ -24,10 +24,11 @@ interface
 uses
   SysUtils,
   ClpAsn1Tags,
-  ClpIProxiedInterface,
-  ClpIBerOutputStream,
-  ClpIAsn1OutputStream,
+  ClpDerOutputStream,
+  ClpAsn1OutputStream,
+  ClpBerOutputStream,
   ClpDerNull,
+  ClpIProxiedInterface,
   ClpIBerNull;
 
 type
@@ -73,8 +74,7 @@ end;
 procedure TBerNull.Encode(const derOut: IDerOutputStream);
 begin
 
-  if (Supports(derOut, IAsn1OutputStream) or Supports(derOut, IBerOutputStream))
-  then
+  if ((derOut is TAsn1OutputStream) or (derOut is TBerOutputStream)) then
   begin
     derOut.WriteByte(TAsn1Tags.Null);
   end

+ 4 - 4
CryptoLib/src/Asn1/ClpBerOctetString.pas

@@ -30,8 +30,9 @@ uses
   ClpIProxiedInterface,
   ClpIAsn1Sequence,
   ClpAsn1Tags,
-  ClpIAsn1OutputStream,
-  ClpIBerOutputStream,
+  ClpDerOutputStream,
+  ClpAsn1OutputStream,
+  ClpBerOutputStream,
   ClpIBerOctetString,
   ClpIDerOctetString,
   ClpDerOctetString;
@@ -112,8 +113,7 @@ var
   oct: IDerOctetString;
   LListIDerOctetString: TCryptoLibGenericArray<IDerOctetString>;
 begin
-  if ((Supports(derOut, IAsn1OutputStream)) or
-    (Supports(derOut, IBerOutputStream))) then
+  if ((derOut is TAsn1OutputStream) or (derOut is TBerOutputStream)) then
   begin
     derOut.WriteByte(TAsn1Tags.Constructed or TAsn1Tags.OctetString);
 

+ 2 - 3
CryptoLib/src/Asn1/ClpBerOutputStream.pas

@@ -23,12 +23,11 @@ interface
 
 uses
   Classes,
-  ClpDerOutputStream,
-  ClpIBerOutputStream;
+  ClpDerOutputStream;
 
 type
   // TODO Make Obsolete in favour of Asn1OutputStream?
-  TBerOutputStream = class sealed(TDerOutputStream, IBerOutputStream)
+  TBerOutputStream = class sealed(TDerOutputStream)
 
   public
 

+ 4 - 4
CryptoLib/src/Asn1/ClpBerSequence.pas

@@ -27,8 +27,9 @@ uses
   ClpIProxiedInterface,
   ClpAsn1Tags,
   ClpDerSequence,
-  ClpIAsn1OutputStream,
-  ClpIBerOutputStream,
+  ClpDerOutputStream,
+  ClpAsn1OutputStream,
+  ClpBerOutputStream,
   ClpIAsn1EncodableVector,
   ClpIBerSequence,
   ClpCryptoLibTypes;
@@ -123,8 +124,7 @@ var
   LListAsn1Encodable: TCryptoLibGenericArray<IAsn1Encodable>;
 begin
 
-  if ((Supports(derOut, IAsn1OutputStream)) or
-    (Supports(derOut, IBerOutputStream))) then
+  if ((derOut is TAsn1OutputStream) or (derOut is TBerOutputStream)) then
   begin
     derOut.WriteByte(TAsn1Tags.Sequence or TAsn1Tags.Constructed);
     derOut.WriteByte($80);

+ 4 - 4
CryptoLib/src/Asn1/ClpBerSet.pas

@@ -27,8 +27,9 @@ uses
   ClpAsn1Tags,
   ClpDerSet,
   ClpIBerSet,
-  ClpIBerOutputStream,
-  ClpIAsn1OutputStream,
+  ClpDerOutputStream,
+  ClpAsn1OutputStream,
+  ClpBerOutputStream,
   ClpIProxiedInterface,
   ClpIAsn1EncodableVector,
   ClpCryptoLibTypes;
@@ -128,8 +129,7 @@ var
   o: IAsn1Encodable;
   LListAsn1Encodable: TCryptoLibGenericArray<IAsn1Encodable>;
 begin
-  if ((Supports(derOut, IAsn1OutputStream)) or
-    (Supports(derOut, IBerOutputStream))) then
+  if ((derOut is TAsn1OutputStream) or (derOut is TBerOutputStream)) then
   begin
     derOut.WriteByte(TAsn1Tags.&Set or TAsn1Tags.Constructed);
 

+ 4 - 4
CryptoLib/src/Asn1/ClpBerTaggedObject.pas

@@ -31,6 +31,9 @@ uses
 {$ENDIF DELPHI}
   ClpAsn1Tags,
   ClpBerSequence,
+  ClpDerOutputStream,
+  ClpAsn1OutputStream,
+  ClpBerOutputStream,
   ClpIAsn1OctetString,
   ClpAsn1Encodable,
   ClpBerOctetString,
@@ -38,8 +41,6 @@ uses
   ClpIDerOctetString,
   ClpIAsn1Set,
   ClpIAsn1Sequence,
-  ClpIAsn1OutputStream,
-  ClpIBerOutputStream,
   ClpIProxiedInterface,
   ClpDerTaggedObject,
   ClpIBerTaggedObject;
@@ -124,8 +125,7 @@ var
 begin
   eObj := TList<IAsn1Encodable>.Create();
   try
-    if ((Supports(derOut, IAsn1OutputStream)) or
-      (Supports(derOut, IBerOutputStream))) then
+    if ((derOut is TAsn1OutputStream) or (derOut is TBerOutputStream)) then
     begin
       derOut.WriteTag(Byte(TAsn1Tags.Constructed or TAsn1Tags.Tagged), tagNo);
       derOut.WriteByte($80);

+ 2 - 3
CryptoLib/src/Asn1/ClpConstructedOctetStream.pas

@@ -27,11 +27,10 @@ uses
   ClpCryptoLibTypes,
   ClpBaseInputStream,
   ClpIAsn1OctetStringParser,
-  ClpIAsn1StreamParser,
-  ClpIConstructedOctetStream;
+  ClpIAsn1StreamParser;
 
 type
-  TConstructedOctetStream = class(TBaseInputStream, IConstructedOctetStream)
+  TConstructedOctetStream = class(TBaseInputStream)
 
   strict private
   var

+ 2 - 4
CryptoLib/src/Asn1/ClpDefiniteLengthInputStream.pas

@@ -25,8 +25,7 @@ uses
   Classes,
   Math,
   ClpCryptoLibTypes,
-  ClpLimitedInputStream,
-  ClpIDefiniteLengthInputStream;
+  ClpLimitedInputStream;
 
 resourcestring
   SInvalidLength = 'Negative Lengths not Allowed", "Length"';
@@ -34,8 +33,7 @@ resourcestring
   SInvalidBufferLength = 'Buffer Length Not Right For Data';
 
 type
-  TDefiniteLengthInputStream = class(TLimitedInputStream,
-    IDefiniteLengthInputStream)
+  TDefiniteLengthInputStream = class(TLimitedInputStream)
 
   strict private
     class var

+ 3 - 0
CryptoLib/src/Asn1/ClpDerApplicationSpecific.pas

@@ -28,6 +28,9 @@ uses
   ClpArrayUtils,
   ClpAsn1TaggedObject,
   ClpAsn1Tags,
+  ClpDerOutputStream,
+  ClpAsn1OutputStream,
+  ClpBerOutputStream,
   ClpIProxiedInterface,
   ClpIDerApplicationSpecific,
   ClpIAsn1EncodableVector,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerBitString.pas

@@ -28,6 +28,7 @@ uses
   ClpBits,
   ClpArrayUtils,
   ClpDerStringBase,
+  ClpDerOutputStream,
   ClpAsn1Tags,
   ClpBigInteger,
   ClpAsn1Object,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerBmpString.pas

@@ -27,6 +27,7 @@ uses
   ClpAsn1Object,
   ClpAsn1Tags,
   ClpAsn1OctetString,
+  ClpDerOutputStream,
   ClpIProxiedInterface,
   ClpIDerBmpString,
   ClpIAsn1TaggedObject,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerBoolean.pas

@@ -24,6 +24,7 @@ interface
 uses
   SysUtils,
   ClpAsn1Tags,
+  ClpDerOutputStream,
   ClpIAsn1OctetString,
   ClpIDerBoolean,
   ClpCryptoLibTypes,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerEnumerated.pas

@@ -26,6 +26,7 @@ uses
   ClpCryptoLibTypes,
   ClpArrayUtils,
   ClpBigInteger,
+  ClpDerOutputStream,
   ClpIAsn1OctetString,
   ClpAsn1Tags,
   ClpIProxiedInterface,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerExternal.pas

@@ -29,6 +29,7 @@ uses
   ClpIAsn1TaggedObject,
   ClpDerTaggedObject,
   ClpAsn1Tags,
+  ClpDerOutputStream,
   ClpIAsn1EncodableVector,
   ClpIDerTaggedObject,
   ClpIProxiedInterface,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerGeneralString.pas

@@ -27,6 +27,7 @@ uses
   ClpAsn1Tags,
   ClpAsn1OctetString,
   ClpAsn1Object,
+  ClpDerOutputStream,
   ClpIProxiedInterface,
   ClpCryptoLibTypes,
   ClpIAsn1TaggedObject,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerGraphicString.pas

@@ -28,6 +28,7 @@ uses
   ClpAsn1Object,
   ClpAsn1Tags,
   ClpAsn1OctetString,
+  ClpDerOutputStream,
   ClpIProxiedInterface,
   ClpIDerGraphicString,
   ClpIAsn1TaggedObject,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerIA5String.pas

@@ -28,6 +28,7 @@ uses
   ClpAsn1OctetString,
   ClpAsn1Object,
   ClpStringUtils,
+  ClpDerOutputStream,
   ClpIProxiedInterface,
   ClpCryptoLibTypes,
   ClpIAsn1TaggedObject,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerInteger.pas

@@ -26,6 +26,7 @@ uses
   ClpCryptoLibTypes,
   ClpBigInteger,
   ClpAsn1Object,
+  ClpDerOutputStream,
   ClpIProxiedInterface,
   ClpIAsn1TaggedObject,
   ClpAsn1OctetString,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerNumericString.pas

@@ -27,6 +27,7 @@ uses
   ClpAsn1Tags,
   ClpAsn1OctetString,
   ClpAsn1Object,
+  ClpDerOutputStream,
   ClpIProxiedInterface,
   ClpCryptoLibTypes,
   ClpIAsn1TaggedObject,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerObjectIdentifier.pas

@@ -32,6 +32,7 @@ uses
   ClpStreamHelper,
   ClpBigInteger,
   ClpCryptoLibTypes,
+  ClpDerOutputStream,
   ClpAsn1Tags,
   ClpOidTokenizer,
   ClpIOidTokenizer,

+ 3 - 2
CryptoLib/src/Asn1/ClpDerOctetString.pas

@@ -24,6 +24,7 @@ interface
 uses
   ClpCryptoLibTypes,
   ClpAsn1Tags,
+  ClpDerOutputStream,
   ClpIProxiedInterface,
   ClpAsn1OctetString,
   ClpIDerOctetString;
@@ -39,7 +40,7 @@ type
     destructor Destroy(); override;
 
     procedure Encode(const derOut: IDerOutputStream); overload; override;
-    class procedure Encode(const derOut: IDerOutputStream;
+    class procedure Encode(derOut: TDerOutputStream;
       bytes: TCryptoLibByteArray; offset, length: Int32); reintroduce; overload;
       static; inline;
 
@@ -69,7 +70,7 @@ begin
   derOut.WriteEncoded(TAsn1Tags.OctetString, str);
 end;
 
-class procedure TDerOctetString.Encode(const derOut: IDerOutputStream;
+class procedure TDerOctetString.Encode(derOut: TDerOutputStream;
   bytes: TCryptoLibByteArray; offset, length: Int32);
 begin
   derOut.WriteEncoded(TAsn1Tags.OctetString, bytes, offset, length);

+ 4 - 3
CryptoLib/src/Asn1/ClpDerOutputStream.pas

@@ -26,11 +26,12 @@ uses
   ClpBits,
   ClpAsn1Tags,
   ClpCryptoLibTypes,
+  ClpIFilterStream,
   ClpIProxiedInterface,
   ClpFilterStream;
 
 type
-  TDerOutputStream = class(TFilterStream, IInterface, IDerOutputStream)
+  TDerOutputStream = class(TFilterStream, IFilterStream, IDerOutputStream)
 
   strict private
     procedure WriteLength(length: Int32);
@@ -145,7 +146,7 @@ begin
   else
   begin
     asn1 := obj.ToAsn1Object();
-    asn1.Encode(Self as IDerOutputStream);
+    asn1.Encode(Self);
   end;
 end;
 
@@ -157,7 +158,7 @@ begin
   end
   else
   begin
-    obj.Encode(Self as IDerOutputStream);
+    obj.Encode(Self);
   end;
 end;
 

+ 1 - 0
CryptoLib/src/Asn1/ClpDerPrintableString.pas

@@ -27,6 +27,7 @@ uses
   ClpDerStringBase,
   ClpAsn1Tags,
   ClpAsn1OctetString,
+  ClpDerOutputStream,
   ClpAsn1Object,
   ClpIProxiedInterface,
   ClpCryptoLibTypes,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerT61String.pas

@@ -27,6 +27,7 @@ uses
   ClpAsn1Tags,
   ClpAsn1OctetString,
   ClpAsn1Object,
+  ClpDerOutputStream,
   ClpIProxiedInterface,
   ClpCryptoLibTypes,
   ClpIAsn1TaggedObject,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerTaggedObject.pas

@@ -28,6 +28,7 @@ uses
 {$IFDEF DELPHI}
   ClpIDerSequence,
 {$ENDIF DELPHI}
+  ClpDerOutputStream,
   ClpIProxiedInterface,
   ClpAsn1TaggedObject,
   ClpIDerTaggedObject;

+ 1 - 0
CryptoLib/src/Asn1/ClpDerUniversalString.pas

@@ -29,6 +29,7 @@ uses
   ClpAsn1Tags,
   ClpAsn1OctetString,
   ClpAsn1Object,
+  ClpDerOutputStream,
   ClpIProxiedInterface,
   ClpCryptoLibTypes,
   ClpIAsn1TaggedObject,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerUtf8String.pas

@@ -27,6 +27,7 @@ uses
   ClpAsn1Tags,
   ClpAsn1OctetString,
   ClpAsn1Object,
+  ClpDerOutputStream,
   ClpIProxiedInterface,
   ClpCryptoLibTypes,
   ClpIAsn1TaggedObject,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerVideotexString.pas

@@ -28,6 +28,7 @@ uses
   ClpAsn1Object,
   ClpAsn1Tags,
   ClpAsn1OctetString,
+  ClpDerOutputStream,
   ClpIProxiedInterface,
   ClpIDerVideotexString,
   ClpIAsn1TaggedObject,

+ 1 - 0
CryptoLib/src/Asn1/ClpDerVisibleString.pas

@@ -28,6 +28,7 @@ uses
   ClpAsn1Object,
   ClpIAsn1OctetString,
   ClpStringUtils,
+  ClpDerOutputStream,
   ClpIProxiedInterface,
   ClpCryptoLibTypes,
   ClpIAsn1TaggedObject,

+ 2 - 4
CryptoLib/src/Asn1/ClpIndefiniteLengthInputStream.pas

@@ -24,15 +24,13 @@ interface
 uses
   Classes,
   ClpCryptoLibTypes,
-  ClpLimitedInputStream,
-  ClpIIndefiniteLengthInputStream;
+  ClpLimitedInputStream;
 
 resourcestring
   SMalformedContent = 'Malformed End-of-Contents Marker';
 
 type
-  TIndefiniteLengthInputStream = class(TLimitedInputStream,
-    IIndefiniteLengthInputStream)
+  TIndefiniteLengthInputStream = class(TLimitedInputStream)
 
   strict private
   var

+ 2 - 3
CryptoLib/src/Asn1/ClpLimitedInputStream.pas

@@ -23,11 +23,10 @@ interface
 
 uses
   Classes,
-  ClpBaseInputStream,
-  ClpILimitedInputStream;
+  ClpBaseInputStream;
 
 type
-  TLimitedInputStream = class abstract(TBaseInputStream, ILimitedInputStream)
+  TLimitedInputStream = class abstract(TBaseInputStream)
 
   strict private
   var

+ 0 - 39
CryptoLib/src/Interfaces/ClpIAsn1InputStream.pas

@@ -1,39 +0,0 @@
-{ *********************************************************************************** }
-{ *                              CryptoLib Library                                  * }
-{ *                Copyright (c) 2018 - 20XX Ugochukwu Mmaduekwe                    * }
-{ *                 Github Repository <https://github.com/Xor-el>                   * }
-
-{ *  Distributed under the MIT software license, see the accompanying file LICENSE  * }
-{ *          or visit http://www.opensource.org/licenses/mit-license.php.           * }
-
-{ *                              Acknowledgements:                                  * }
-{ *                                                                                 * }
-{ *      Thanks to Sphere 10 Software (http://www.sphere10.com/) for sponsoring     * }
-{ *                           development of this library                           * }
-
-{ * ******************************************************************************* * }
-
-(* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& *)
-
-unit ClpIAsn1InputStream;
-
-{$I ..\Include\CryptoLib.inc}
-
-interface
-
-uses
-  ClpIProxiedInterface,
-  ClpIFilterStream;
-
-type
-  IAsn1InputStream = interface(IFilterStream)
-
-    ['{E3B84EE6-D1D1-4F42-A7D8-6942EB7DF349}']
-
-    function ReadObject(): IAsn1Object;
-
-  end;
-
-implementation
-
-end.

+ 0 - 34
CryptoLib/src/Interfaces/ClpIAsn1OutputStream.pas

@@ -1,34 +0,0 @@
-{ *********************************************************************************** }
-{ *                              CryptoLib Library                                  * }
-{ *                Copyright (c) 2018 - 20XX Ugochukwu Mmaduekwe                    * }
-{ *                 Github Repository <https://github.com/Xor-el>                   * }
-
-{ *  Distributed under the MIT software license, see the accompanying file LICENSE  * }
-{ *          or visit http://www.opensource.org/licenses/mit-license.php.           * }
-
-{ *                              Acknowledgements:                                  * }
-{ *                                                                                 * }
-{ *      Thanks to Sphere 10 Software (http://www.sphere10.com/) for sponsoring     * }
-{ *                           development of this library                           * }
-
-{ * ******************************************************************************* * }
-
-(* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& *)
-
-unit ClpIAsn1OutputStream;
-
-{$I ..\Include\CryptoLib.inc}
-
-interface
-
-uses
-  ClpIProxiedInterface;
-
-type
-  IAsn1OutputStream = interface(IDerOutputStream)
-    ['{088539DC-264D-4128-BA28-7644A7EE1BCF}']
-  end;
-
-implementation
-
-end.

+ 0 - 36
CryptoLib/src/Interfaces/ClpIBaseInputStream.pas

@@ -1,36 +0,0 @@
-{ *********************************************************************************** }
-{ *                              CryptoLib Library                                  * }
-{ *                Copyright (c) 2018 - 20XX Ugochukwu Mmaduekwe                    * }
-{ *                 Github Repository <https://github.com/Xor-el>                   * }
-
-{ *  Distributed under the MIT software license, see the accompanying file LICENSE  * }
-{ *          or visit http://www.opensource.org/licenses/mit-license.php.           * }
-
-{ *                              Acknowledgements:                                  * }
-{ *                                                                                 * }
-{ *      Thanks to Sphere 10 Software (http://www.sphere10.com/) for sponsoring     * }
-{ *                           development of this library                           * }
-
-{ * ******************************************************************************* * }
-
-(* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& *)
-
-unit ClpIBaseInputStream;
-
-{$I ..\Include\CryptoLib.inc}
-
-interface
-
-uses
-  ClpCryptoLibTypes;
-
-type
-  IBaseInputStream = interface(IInterface)
-    ['{A0898785-3F57-4165-B075-DF336AE30D04}']
-
-    function Read(Buffer: TCryptoLibByteArray; Offset, Count: Int32): Int32;
-  end;
-
-implementation
-
-end.

+ 0 - 36
CryptoLib/src/Interfaces/ClpIBerOutputStream.pas

@@ -1,36 +0,0 @@
-{ *********************************************************************************** }
-{ *                              CryptoLib Library                                  * }
-{ *                Copyright (c) 2018 - 20XX Ugochukwu Mmaduekwe                    * }
-{ *                 Github Repository <https://github.com/Xor-el>                   * }
-
-{ *  Distributed under the MIT software license, see the accompanying file LICENSE  * }
-{ *          or visit http://www.opensource.org/licenses/mit-license.php.           * }
-
-{ *                              Acknowledgements:                                  * }
-{ *                                                                                 * }
-{ *      Thanks to Sphere 10 Software (http://www.sphere10.com/) for sponsoring     * }
-{ *                           development of this library                           * }
-
-{ * ******************************************************************************* * }
-
-(* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& *)
-
-unit ClpIBerOutputStream;
-
-{$I ..\Include\CryptoLib.inc}
-
-interface
-
-uses
-  ClpIProxiedInterface;
-
-type
-  IBerOutputStream = interface(IDerOutputStream)
-
-    ['{29D500FC-786C-472D-9038-2EF148B7E990}']
-
-  end;
-
-implementation
-
-end.

+ 0 - 38
CryptoLib/src/Interfaces/ClpIConstructedOctetStream.pas

@@ -1,38 +0,0 @@
-{ *********************************************************************************** }
-{ *                              CryptoLib Library                                  * }
-{ *                Copyright (c) 2018 - 20XX Ugochukwu Mmaduekwe                    * }
-{ *                 Github Repository <https://github.com/Xor-el>                   * }
-
-{ *  Distributed under the MIT software license, see the accompanying file LICENSE  * }
-{ *          or visit http://www.opensource.org/licenses/mit-license.php.           * }
-
-{ *                              Acknowledgements:                                  * }
-{ *                                                                                 * }
-{ *      Thanks to Sphere 10 Software (http://www.sphere10.com/) for sponsoring     * }
-{ *                           development of this library                           * }
-
-{ * ******************************************************************************* * }
-
-(* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& *)
-
-unit ClpIConstructedOctetStream;
-
-{$I ..\Include\CryptoLib.inc}
-
-interface
-
-uses
-  ClpIBaseInputStream;
-
-type
-  IConstructedOctetStream = interface(IBaseInputStream)
-
-    ['{45BD4A14-887D-4B4C-946B-E5DBFA0A6331}']
-
-    function ReadByte(): Int32;
-
-  end;
-
-implementation
-
-end.

+ 0 - 43
CryptoLib/src/Interfaces/ClpIDefiniteLengthInputStream.pas

@@ -1,43 +0,0 @@
-{ *********************************************************************************** }
-{ *                              CryptoLib Library                                  * }
-{ *                Copyright (c) 2018 - 20XX Ugochukwu Mmaduekwe                    * }
-{ *                 Github Repository <https://github.com/Xor-el>                   * }
-
-{ *  Distributed under the MIT software license, see the accompanying file LICENSE  * }
-{ *          or visit http://www.opensource.org/licenses/mit-license.php.           * }
-
-{ *                              Acknowledgements:                                  * }
-{ *                                                                                 * }
-{ *      Thanks to Sphere 10 Software (http://www.sphere10.com/) for sponsoring     * }
-{ *                           development of this library                           * }
-
-{ * ******************************************************************************* * }
-
-(* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& *)
-
-unit ClpIDefiniteLengthInputStream;
-
-{$I ..\Include\CryptoLib.inc}
-
-interface
-
-uses
-  ClpCryptoLibTypes,
-  ClpILimitedInputStream;
-
-type
-  IDefiniteLengthInputStream = interface(ILimitedInputStream)
-
-    ['{3828572B-FB58-47A3-826B-6A6AEEBF59E4}']
-
-    function ReadByte(): Int32;
-
-    procedure ReadAllIntoByteArray(buf: TCryptoLibByteArray);
-
-    function ToArray: TCryptoLibByteArray;
-
-  end;
-
-implementation
-
-end.

+ 0 - 43
CryptoLib/src/Interfaces/ClpIIndefiniteLengthInputStream.pas

@@ -1,43 +0,0 @@
-{ *********************************************************************************** }
-{ *                              CryptoLib Library                                  * }
-{ *                Copyright (c) 2018 - 20XX Ugochukwu Mmaduekwe                    * }
-{ *                 Github Repository <https://github.com/Xor-el>                   * }
-
-{ *  Distributed under the MIT software license, see the accompanying file LICENSE  * }
-{ *          or visit http://www.opensource.org/licenses/mit-license.php.           * }
-
-{ *                              Acknowledgements:                                  * }
-{ *                                                                                 * }
-{ *      Thanks to Sphere 10 Software (http://www.sphere10.com/) for sponsoring     * }
-{ *                           development of this library                           * }
-
-{ * ******************************************************************************* * }
-
-(* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& *)
-
-unit ClpIIndefiniteLengthInputStream;
-
-{$I ..\Include\CryptoLib.inc}
-
-interface
-
-uses
-  ClpILimitedInputStream;
-
-type
-  IIndefiniteLengthInputStream = interface(ILimitedInputStream)
-
-    ['{2B9245D6-E5E8-48C2-8BB1-36E44F43F1D5}']
-
-    function CheckForEof(): Boolean;
-    function RequireByte(): Int32;
-
-    procedure SetEofOn00(eofOn00: Boolean);
-
-    function ReadByte(): Int32;
-
-  end;
-
-implementation
-
-end.

+ 0 - 39
CryptoLib/src/Interfaces/ClpILimitedInputStream.pas

@@ -1,39 +0,0 @@
-{ *********************************************************************************** }
-{ *                              CryptoLib Library                                  * }
-{ *                Copyright (c) 2018 - 20XX Ugochukwu Mmaduekwe                    * }
-{ *                 Github Repository <https://github.com/Xor-el>                   * }
-
-{ *  Distributed under the MIT software license, see the accompanying file LICENSE  * }
-{ *          or visit http://www.opensource.org/licenses/mit-license.php.           * }
-
-{ *                              Acknowledgements:                                  * }
-{ *                                                                                 * }
-{ *      Thanks to Sphere 10 Software (http://www.sphere10.com/) for sponsoring     * }
-{ *                           development of this library                           * }
-
-{ * ******************************************************************************* * }
-
-(* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& *)
-
-unit ClpILimitedInputStream;
-
-{$I ..\Include\CryptoLib.inc}
-
-interface
-
-uses
-  ClpIBaseInputStream;
-
-type
-  ILimitedInputStream = interface(IBaseInputStream)
-
-    ['{04A7A641-74B5-418A-935B-3B6EE5C8340C}']
-
-    procedure SetParentEofDetect(&on: Boolean);
-    function GetRemaining(): Int32;
-
-  end;
-
-implementation
-
-end.

+ 1 - 0
CryptoLib/src/Interfaces/ClpIProxiedInterface.pas

@@ -87,3 +87,4 @@ type
 implementation
 
 end.
+

+ 519 - 552
CryptoLib/src/Packages/FPC/CryptoLib4PascalPackage.lpk

@@ -24,8 +24,8 @@
 
  Acknowledgements: 
 Thanks to Sphere 10 Software (http://www.sphere10.com/) for sponsoring the development of this library "/>
-    <Version Major="2"/>
-    <Files Count="368">
+    <Version Major="2" Minor="1"/>
+    <Files Count="360">
       <Item1>
         <Filename Value="..\..\Asn1\ClpAsn1Encodable.pas"/>
         <UnitName Value="ClpAsn1Encodable"/>
@@ -439,1076 +439,1043 @@ Thanks to Sphere 10 Software (http://www.sphere10.com/) for sponsoring the devel
         <UnitName Value="ClpIAsn1Generator"/>
       </Item103>
       <Item104>
-        <Filename Value="..\..\Interfaces\ClpIAsn1InputStream.pas"/>
-        <UnitName Value="ClpIAsn1InputStream"/>
-      </Item104>
-      <Item105>
         <Filename Value="..\..\Interfaces\ClpIAsn1Null.pas"/>
         <UnitName Value="ClpIAsn1Null"/>
-      </Item105>
-      <Item106>
+      </Item104>
+      <Item105>
         <Filename Value="..\..\Interfaces\ClpIAsn1OctetString.pas"/>
         <UnitName Value="ClpIAsn1OctetString"/>
-      </Item106>
-      <Item107>
+      </Item105>
+      <Item106>
         <Filename Value="..\..\Interfaces\ClpIAsn1OctetStringParser.pas"/>
         <UnitName Value="ClpIAsn1OctetStringParser"/>
+      </Item106>
+      <Item107>
+        <Filename Value="..\..\Interfaces\ClpIAsn1Sequence.pas"/>
+        <UnitName Value="ClpIAsn1Sequence"/>
       </Item107>
       <Item108>
-        <Filename Value="..\..\Interfaces\ClpIAsn1OutputStream.pas"/>
-        <UnitName Value="ClpIAsn1OutputStream"/>
+        <Filename Value="..\..\Interfaces\ClpIAsn1SequenceParser.pas"/>
+        <UnitName Value="ClpIAsn1SequenceParser"/>
       </Item108>
       <Item109>
-        <Filename Value="..\..\Interfaces\ClpIAsn1Sequence.pas"/>
-        <UnitName Value="ClpIAsn1Sequence"/>
+        <Filename Value="..\..\Interfaces\ClpIAsn1Set.pas"/>
+        <UnitName Value="ClpIAsn1Set"/>
       </Item109>
       <Item110>
-        <Filename Value="..\..\Interfaces\ClpIAsn1SequenceParser.pas"/>
-        <UnitName Value="ClpIAsn1SequenceParser"/>
+        <Filename Value="..\..\Interfaces\ClpIAsn1SetParser.pas"/>
+        <UnitName Value="ClpIAsn1SetParser"/>
       </Item110>
       <Item111>
-        <Filename Value="..\..\Interfaces\ClpIAsn1Set.pas"/>
-        <UnitName Value="ClpIAsn1Set"/>
+        <Filename Value="..\..\Interfaces\ClpIAsn1StreamParser.pas"/>
+        <UnitName Value="ClpIAsn1StreamParser"/>
       </Item111>
       <Item112>
-        <Filename Value="..\..\Interfaces\ClpIAsn1SetParser.pas"/>
-        <UnitName Value="ClpIAsn1SetParser"/>
+        <Filename Value="..\..\Interfaces\ClpIAsn1String.pas"/>
+        <UnitName Value="ClpIAsn1String"/>
       </Item112>
       <Item113>
-        <Filename Value="..\..\Interfaces\ClpIAsn1StreamParser.pas"/>
-        <UnitName Value="ClpIAsn1StreamParser"/>
+        <Filename Value="..\..\Interfaces\ClpIAsn1TaggedObject.pas"/>
+        <UnitName Value="ClpIAsn1TaggedObject"/>
       </Item113>
       <Item114>
-        <Filename Value="..\..\Interfaces\ClpIAsn1String.pas"/>
-        <UnitName Value="ClpIAsn1String"/>
+        <Filename Value="..\..\Interfaces\ClpIAsn1TaggedObjectParser.pas"/>
+        <UnitName Value="ClpIAsn1TaggedObjectParser"/>
       </Item114>
       <Item115>
-        <Filename Value="..\..\Interfaces\ClpIAsn1TaggedObject.pas"/>
-        <UnitName Value="ClpIAsn1TaggedObject"/>
+        <Filename Value="..\..\Interfaces\ClpIAsymmetricCipherKeyPair.pas"/>
+        <UnitName Value="ClpIAsymmetricCipherKeyPair"/>
       </Item115>
       <Item116>
-        <Filename Value="..\..\Interfaces\ClpIAsn1TaggedObjectParser.pas"/>
-        <UnitName Value="ClpIAsn1TaggedObjectParser"/>
+        <Filename Value="..\..\Interfaces\ClpIAsymmetricCipherKeyPairGenerator.pas"/>
+        <UnitName Value="ClpIAsymmetricCipherKeyPairGenerator"/>
       </Item116>
       <Item117>
-        <Filename Value="..\..\Interfaces\ClpIAsymmetricCipherKeyPair.pas"/>
-        <UnitName Value="ClpIAsymmetricCipherKeyPair"/>
+        <Filename Value="..\..\Interfaces\ClpIAsymmetricKeyParameter.pas"/>
+        <UnitName Value="ClpIAsymmetricKeyParameter"/>
       </Item117>
       <Item118>
-        <Filename Value="..\..\Interfaces\ClpIAsymmetricCipherKeyPairGenerator.pas"/>
-        <UnitName Value="ClpIAsymmetricCipherKeyPairGenerator"/>
+        <Filename Value="..\..\Interfaces\ClpIBerApplicationSpecific.pas"/>
+        <UnitName Value="ClpIBerApplicationSpecific"/>
       </Item118>
       <Item119>
-        <Filename Value="..\..\Interfaces\ClpIAsymmetricKeyParameter.pas"/>
-        <UnitName Value="ClpIAsymmetricKeyParameter"/>
+        <Filename Value="..\..\Interfaces\ClpIBerApplicationSpecificParser.pas"/>
+        <UnitName Value="ClpIBerApplicationSpecificParser"/>
       </Item119>
       <Item120>
-        <Filename Value="..\..\Interfaces\ClpIBaseInputStream.pas"/>
-        <UnitName Value="ClpIBaseInputStream"/>
+        <Filename Value="..\..\Interfaces\ClpIBerBitString.pas"/>
+        <UnitName Value="ClpIBerBitString"/>
       </Item120>
       <Item121>
-        <Filename Value="..\..\Interfaces\ClpIBerApplicationSpecific.pas"/>
-        <UnitName Value="ClpIBerApplicationSpecific"/>
+        <Filename Value="..\..\Interfaces\ClpIBerGenerator.pas"/>
+        <UnitName Value="ClpIBerGenerator"/>
       </Item121>
       <Item122>
-        <Filename Value="..\..\Interfaces\ClpIBerApplicationSpecificParser.pas"/>
-        <UnitName Value="ClpIBerApplicationSpecificParser"/>
+        <Filename Value="..\..\Interfaces\ClpIBerNull.pas"/>
+        <UnitName Value="ClpIBerNull"/>
       </Item122>
       <Item123>
-        <Filename Value="..\..\Interfaces\ClpIBerBitString.pas"/>
-        <UnitName Value="ClpIBerBitString"/>
+        <Filename Value="..\..\Interfaces\ClpIBerOctetString.pas"/>
+        <UnitName Value="ClpIBerOctetString"/>
       </Item123>
       <Item124>
-        <Filename Value="..\..\Interfaces\ClpIBerGenerator.pas"/>
-        <UnitName Value="ClpIBerGenerator"/>
+        <Filename Value="..\..\Interfaces\ClpIBerOctetStringParser.pas"/>
+        <UnitName Value="ClpIBerOctetStringParser"/>
       </Item124>
       <Item125>
-        <Filename Value="..\..\Interfaces\ClpIBerNull.pas"/>
-        <UnitName Value="ClpIBerNull"/>
+        <Filename Value="..\..\Interfaces\ClpIBerSequence.pas"/>
+        <UnitName Value="ClpIBerSequence"/>
       </Item125>
       <Item126>
-        <Filename Value="..\..\Interfaces\ClpIBerOctetString.pas"/>
-        <UnitName Value="ClpIBerOctetString"/>
+        <Filename Value="..\..\Interfaces\ClpIBerSequenceGenerator.pas"/>
+        <UnitName Value="ClpIBerSequenceGenerator"/>
       </Item126>
       <Item127>
-        <Filename Value="..\..\Interfaces\ClpIBerOctetStringParser.pas"/>
-        <UnitName Value="ClpIBerOctetStringParser"/>
+        <Filename Value="..\..\Interfaces\ClpIBerSequenceParser.pas"/>
+        <UnitName Value="ClpIBerSequenceParser"/>
       </Item127>
       <Item128>
-        <Filename Value="..\..\Interfaces\ClpIBerOutputStream.pas"/>
-        <UnitName Value="ClpIBerOutputStream"/>
+        <Filename Value="..\..\Interfaces\ClpIBerSet.pas"/>
+        <UnitName Value="ClpIBerSet"/>
       </Item128>
       <Item129>
-        <Filename Value="..\..\Interfaces\ClpIBerSequence.pas"/>
-        <UnitName Value="ClpIBerSequence"/>
+        <Filename Value="..\..\Interfaces\ClpIBerSetParser.pas"/>
+        <UnitName Value="ClpIBerSetParser"/>
       </Item129>
       <Item130>
-        <Filename Value="..\..\Interfaces\ClpIBerSequenceGenerator.pas"/>
-        <UnitName Value="ClpIBerSequenceGenerator"/>
+        <Filename Value="..\..\Interfaces\ClpIBerTaggedObject.pas"/>
+        <UnitName Value="ClpIBerTaggedObject"/>
       </Item130>
       <Item131>
-        <Filename Value="..\..\Interfaces\ClpIBerSequenceParser.pas"/>
-        <UnitName Value="ClpIBerSequenceParser"/>
+        <Filename Value="..\..\Interfaces\ClpIBerTaggedObjectParser.pas"/>
+        <UnitName Value="ClpIBerTaggedObjectParser"/>
       </Item131>
       <Item132>
-        <Filename Value="..\..\Interfaces\ClpIBerSet.pas"/>
-        <UnitName Value="ClpIBerSet"/>
+        <Filename Value="..\..\Interfaces\ClpICipherParameters.pas"/>
+        <UnitName Value="ClpICipherParameters"/>
       </Item132>
       <Item133>
-        <Filename Value="..\..\Interfaces\ClpIBerSetParser.pas"/>
-        <UnitName Value="ClpIBerSetParser"/>
+        <Filename Value="..\..\Interfaces\ClpICryptoApiRandomGenerator.pas"/>
+        <UnitName Value="ClpICryptoApiRandomGenerator"/>
       </Item133>
       <Item134>
-        <Filename Value="..\..\Interfaces\ClpIBerTaggedObject.pas"/>
-        <UnitName Value="ClpIBerTaggedObject"/>
+        <Filename Value="..\..\Interfaces\ClpIDerApplicationSpecific.pas"/>
+        <UnitName Value="ClpIDerApplicationSpecific"/>
       </Item134>
       <Item135>
-        <Filename Value="..\..\Interfaces\ClpIBerTaggedObjectParser.pas"/>
-        <UnitName Value="ClpIBerTaggedObjectParser"/>
+        <Filename Value="..\..\Interfaces\ClpIDerBitString.pas"/>
+        <UnitName Value="ClpIDerBitString"/>
       </Item135>
       <Item136>
-        <Filename Value="..\..\Interfaces\ClpICipherParameters.pas"/>
-        <UnitName Value="ClpICipherParameters"/>
+        <Filename Value="..\..\Interfaces\ClpIDerBmpString.pas"/>
+        <UnitName Value="ClpIDerBmpString"/>
       </Item136>
       <Item137>
-        <Filename Value="..\..\Interfaces\ClpIConstructedOctetStream.pas"/>
-        <UnitName Value="ClpIConstructedOctetStream"/>
+        <Filename Value="..\..\Interfaces\ClpIDerBoolean.pas"/>
+        <UnitName Value="ClpIDerBoolean"/>
       </Item137>
       <Item138>
-        <Filename Value="..\..\Interfaces\ClpICryptoApiRandomGenerator.pas"/>
-        <UnitName Value="ClpICryptoApiRandomGenerator"/>
+        <Filename Value="..\..\Interfaces\ClpIDerEnumerated.pas"/>
+        <UnitName Value="ClpIDerEnumerated"/>
       </Item138>
       <Item139>
-        <Filename Value="..\..\Interfaces\ClpIDefiniteLengthInputStream.pas"/>
-        <UnitName Value="ClpIDefiniteLengthInputStream"/>
+        <Filename Value="..\..\Interfaces\ClpIDerExternal.pas"/>
+        <UnitName Value="ClpIDerExternal"/>
       </Item139>
       <Item140>
-        <Filename Value="..\..\Interfaces\ClpIDerApplicationSpecific.pas"/>
-        <UnitName Value="ClpIDerApplicationSpecific"/>
+        <Filename Value="..\..\Interfaces\ClpIDerExternalParser.pas"/>
+        <UnitName Value="ClpIDerExternalParser"/>
       </Item140>
       <Item141>
-        <Filename Value="..\..\Interfaces\ClpIDerBitString.pas"/>
-        <UnitName Value="ClpIDerBitString"/>
+        <Filename Value="..\..\Interfaces\ClpIDerGeneralString.pas"/>
+        <UnitName Value="ClpIDerGeneralString"/>
       </Item141>
       <Item142>
-        <Filename Value="..\..\Interfaces\ClpIDerBmpString.pas"/>
-        <UnitName Value="ClpIDerBmpString"/>
+        <Filename Value="..\..\Interfaces\ClpIDerGenerator.pas"/>
+        <UnitName Value="ClpIDerGenerator"/>
       </Item142>
       <Item143>
-        <Filename Value="..\..\Interfaces\ClpIDerBoolean.pas"/>
-        <UnitName Value="ClpIDerBoolean"/>
+        <Filename Value="..\..\Interfaces\ClpIDerGraphicString.pas"/>
+        <UnitName Value="ClpIDerGraphicString"/>
       </Item143>
       <Item144>
-        <Filename Value="..\..\Interfaces\ClpIDerEnumerated.pas"/>
-        <UnitName Value="ClpIDerEnumerated"/>
+        <Filename Value="..\..\Interfaces\ClpIDerIA5String.pas"/>
+        <UnitName Value="ClpIDerIA5String"/>
       </Item144>
       <Item145>
-        <Filename Value="..\..\Interfaces\ClpIDerExternal.pas"/>
-        <UnitName Value="ClpIDerExternal"/>
+        <Filename Value="..\..\Interfaces\ClpIDerInteger.pas"/>
+        <UnitName Value="ClpIDerInteger"/>
       </Item145>
       <Item146>
-        <Filename Value="..\..\Interfaces\ClpIDerExternalParser.pas"/>
-        <UnitName Value="ClpIDerExternalParser"/>
+        <Filename Value="..\..\Interfaces\ClpIDerNull.pas"/>
+        <UnitName Value="ClpIDerNull"/>
       </Item146>
       <Item147>
-        <Filename Value="..\..\Interfaces\ClpIDerGeneralString.pas"/>
-        <UnitName Value="ClpIDerGeneralString"/>
+        <Filename Value="..\..\Interfaces\ClpIDerNumericString.pas"/>
+        <UnitName Value="ClpIDerNumericString"/>
       </Item147>
       <Item148>
-        <Filename Value="..\..\Interfaces\ClpIDerGenerator.pas"/>
-        <UnitName Value="ClpIDerGenerator"/>
+        <Filename Value="..\..\Interfaces\ClpIDerObjectIdentifier.pas"/>
+        <UnitName Value="ClpIDerObjectIdentifier"/>
       </Item148>
       <Item149>
-        <Filename Value="..\..\Interfaces\ClpIDerGraphicString.pas"/>
-        <UnitName Value="ClpIDerGraphicString"/>
+        <Filename Value="..\..\Interfaces\ClpIDerOctetString.pas"/>
+        <UnitName Value="ClpIDerOctetString"/>
       </Item149>
       <Item150>
-        <Filename Value="..\..\Interfaces\ClpIDerIA5String.pas"/>
-        <UnitName Value="ClpIDerIA5String"/>
+        <Filename Value="..\..\Interfaces\ClpIDerOctetStringParser.pas"/>
+        <UnitName Value="ClpIDerOctetStringParser"/>
       </Item150>
       <Item151>
-        <Filename Value="..\..\Interfaces\ClpIDerInteger.pas"/>
-        <UnitName Value="ClpIDerInteger"/>
+        <Filename Value="..\..\Interfaces\ClpIDerPrintableString.pas"/>
+        <UnitName Value="ClpIDerPrintableString"/>
       </Item151>
       <Item152>
-        <Filename Value="..\..\Interfaces\ClpIDerNull.pas"/>
-        <UnitName Value="ClpIDerNull"/>
+        <Filename Value="..\..\Interfaces\ClpIDerSequence.pas"/>
+        <UnitName Value="ClpIDerSequence"/>
       </Item152>
       <Item153>
-        <Filename Value="..\..\Interfaces\ClpIDerNumericString.pas"/>
-        <UnitName Value="ClpIDerNumericString"/>
+        <Filename Value="..\..\Interfaces\ClpIDerSequenceGenerator.pas"/>
+        <UnitName Value="ClpIDerSequenceGenerator"/>
       </Item153>
       <Item154>
-        <Filename Value="..\..\Interfaces\ClpIDerObjectIdentifier.pas"/>
-        <UnitName Value="ClpIDerObjectIdentifier"/>
+        <Filename Value="..\..\Interfaces\ClpIDerSequenceParser.pas"/>
+        <UnitName Value="ClpIDerSequenceParser"/>
       </Item154>
       <Item155>
-        <Filename Value="..\..\Interfaces\ClpIDerOctetString.pas"/>
-        <UnitName Value="ClpIDerOctetString"/>
+        <Filename Value="..\..\Interfaces\ClpIDerSet.pas"/>
+        <UnitName Value="ClpIDerSet"/>
       </Item155>
       <Item156>
-        <Filename Value="..\..\Interfaces\ClpIDerOctetStringParser.pas"/>
-        <UnitName Value="ClpIDerOctetStringParser"/>
+        <Filename Value="..\..\Interfaces\ClpIDerSetParser.pas"/>
+        <UnitName Value="ClpIDerSetParser"/>
       </Item156>
       <Item157>
-        <Filename Value="..\..\Interfaces\ClpIDerPrintableString.pas"/>
-        <UnitName Value="ClpIDerPrintableString"/>
+        <Filename Value="..\..\Interfaces\ClpIDerStringBase.pas"/>
+        <UnitName Value="ClpIDerStringBase"/>
       </Item157>
       <Item158>
-        <Filename Value="..\..\Interfaces\ClpIDerSequence.pas"/>
-        <UnitName Value="ClpIDerSequence"/>
+        <Filename Value="..\..\Interfaces\ClpIDerT61String.pas"/>
+        <UnitName Value="ClpIDerT61String"/>
       </Item158>
       <Item159>
-        <Filename Value="..\..\Interfaces\ClpIDerSequenceGenerator.pas"/>
-        <UnitName Value="ClpIDerSequenceGenerator"/>
+        <Filename Value="..\..\Interfaces\ClpIDerTaggedObject.pas"/>
+        <UnitName Value="ClpIDerTaggedObject"/>
       </Item159>
       <Item160>
-        <Filename Value="..\..\Interfaces\ClpIDerSequenceParser.pas"/>
-        <UnitName Value="ClpIDerSequenceParser"/>
+        <Filename Value="..\..\Interfaces\ClpIDerUniversalString.pas"/>
+        <UnitName Value="ClpIDerUniversalString"/>
       </Item160>
       <Item161>
-        <Filename Value="..\..\Interfaces\ClpIDerSet.pas"/>
-        <UnitName Value="ClpIDerSet"/>
+        <Filename Value="..\..\Interfaces\ClpIDerUtf8String.pas"/>
+        <UnitName Value="ClpIDerUtf8String"/>
       </Item161>
       <Item162>
-        <Filename Value="..\..\Interfaces\ClpIDerSetParser.pas"/>
-        <UnitName Value="ClpIDerSetParser"/>
+        <Filename Value="..\..\Interfaces\ClpIDerVideotexString.pas"/>
+        <UnitName Value="ClpIDerVideotexString"/>
       </Item162>
       <Item163>
-        <Filename Value="..\..\Interfaces\ClpIDerStringBase.pas"/>
-        <UnitName Value="ClpIDerStringBase"/>
+        <Filename Value="..\..\Interfaces\ClpIDerVisibleString.pas"/>
+        <UnitName Value="ClpIDerVisibleString"/>
       </Item163>
       <Item164>
-        <Filename Value="..\..\Interfaces\ClpIDerT61String.pas"/>
-        <UnitName Value="ClpIDerT61String"/>
+        <Filename Value="..\..\Interfaces\ClpIDigestRandomGenerator.pas"/>
+        <UnitName Value="ClpIDigestRandomGenerator"/>
       </Item164>
       <Item165>
-        <Filename Value="..\..\Interfaces\ClpIDerTaggedObject.pas"/>
-        <UnitName Value="ClpIDerTaggedObject"/>
+        <Filename Value="..\..\Interfaces\ClpIDsa.pas"/>
+        <UnitName Value="ClpIDsa"/>
       </Item165>
       <Item166>
-        <Filename Value="..\..\Interfaces\ClpIDerUniversalString.pas"/>
-        <UnitName Value="ClpIDerUniversalString"/>
+        <Filename Value="..\..\Interfaces\ClpIDsaDigestSigner.pas"/>
+        <UnitName Value="ClpIDsaDigestSigner"/>
       </Item166>
       <Item167>
-        <Filename Value="..\..\Interfaces\ClpIDerUtf8String.pas"/>
-        <UnitName Value="ClpIDerUtf8String"/>
+        <Filename Value="..\..\Interfaces\ClpIDsaKCalculator.pas"/>
+        <UnitName Value="ClpIDsaKCalculator"/>
       </Item167>
       <Item168>
-        <Filename Value="..\..\Interfaces\ClpIDerVideotexString.pas"/>
-        <UnitName Value="ClpIDerVideotexString"/>
+        <Filename Value="..\..\Interfaces\ClpIECDomainParameters.pas"/>
+        <UnitName Value="ClpIECDomainParameters"/>
       </Item168>
       <Item169>
-        <Filename Value="..\..\Interfaces\ClpIDerVisibleString.pas"/>
-        <UnitName Value="ClpIDerVisibleString"/>
+        <Filename Value="..\..\Interfaces\ClpIECDsaSigner.pas"/>
+        <UnitName Value="ClpIECDsaSigner"/>
       </Item169>
       <Item170>
-        <Filename Value="..\..\Interfaces\ClpIDigestRandomGenerator.pas"/>
-        <UnitName Value="ClpIDigestRandomGenerator"/>
+        <Filename Value="..\..\Interfaces\ClpIECFieldElement.pas"/>
+        <UnitName Value="ClpIECFieldElement"/>
       </Item170>
       <Item171>
-        <Filename Value="..\..\Interfaces\ClpIDsa.pas"/>
-        <UnitName Value="ClpIDsa"/>
+        <Filename Value="..\..\Interfaces\ClpIECInterface.pas"/>
+        <UnitName Value="ClpIECInterface"/>
       </Item171>
       <Item172>
-        <Filename Value="..\..\Interfaces\ClpIDsaDigestSigner.pas"/>
-        <UnitName Value="ClpIDsaDigestSigner"/>
+        <Filename Value="..\..\Interfaces\ClpIECKeyGenerationParameters.pas"/>
+        <UnitName Value="ClpIECKeyGenerationParameters"/>
       </Item172>
       <Item173>
-        <Filename Value="..\..\Interfaces\ClpIDsaKCalculator.pas"/>
-        <UnitName Value="ClpIDsaKCalculator"/>
+        <Filename Value="..\..\Interfaces\ClpIECKeyPairGenerator.pas"/>
+        <UnitName Value="ClpIECKeyPairGenerator"/>
       </Item173>
       <Item174>
-        <Filename Value="..\..\Interfaces\ClpIECDomainParameters.pas"/>
-        <UnitName Value="ClpIECDomainParameters"/>
+        <Filename Value="..\..\Interfaces\ClpIECKeyParameters.pas"/>
+        <UnitName Value="ClpIECKeyParameters"/>
       </Item174>
       <Item175>
-        <Filename Value="..\..\Interfaces\ClpIECDsaSigner.pas"/>
-        <UnitName Value="ClpIECDsaSigner"/>
+        <Filename Value="..\..\Interfaces\ClpIECPrivateKeyParameters.pas"/>
+        <UnitName Value="ClpIECPrivateKeyParameters"/>
       </Item175>
       <Item176>
-        <Filename Value="..\..\Interfaces\ClpIECFieldElement.pas"/>
-        <UnitName Value="ClpIECFieldElement"/>
+        <Filename Value="..\..\Interfaces\ClpIECPublicKeyParameters.pas"/>
+        <UnitName Value="ClpIECPublicKeyParameters"/>
       </Item176>
       <Item177>
-        <Filename Value="..\..\Interfaces\ClpIECInterface.pas"/>
-        <UnitName Value="ClpIECInterface"/>
+        <Filename Value="..\..\Interfaces\ClpIExtensionField.pas"/>
+        <UnitName Value="ClpIExtensionField"/>
       </Item177>
       <Item178>
-        <Filename Value="..\..\Interfaces\ClpIECKeyGenerationParameters.pas"/>
-        <UnitName Value="ClpIECKeyGenerationParameters"/>
+        <Filename Value="..\..\Interfaces\ClpIFilterStream.pas"/>
+        <UnitName Value="ClpIFilterStream"/>
       </Item178>
       <Item179>
-        <Filename Value="..\..\Interfaces\ClpIECKeyPairGenerator.pas"/>
-        <UnitName Value="ClpIECKeyPairGenerator"/>
+        <Filename Value="..\..\Interfaces\ClpIFiniteField.pas"/>
+        <UnitName Value="ClpIFiniteField"/>
       </Item179>
       <Item180>
-        <Filename Value="..\..\Interfaces\ClpIECKeyParameters.pas"/>
-        <UnitName Value="ClpIECKeyParameters"/>
+        <Filename Value="..\..\Interfaces\ClpIFixedPointCombMultiplier.pas"/>
+        <UnitName Value="ClpIFixedPointCombMultiplier"/>
       </Item180>
       <Item181>
-        <Filename Value="..\..\Interfaces\ClpIECPrivateKeyParameters.pas"/>
-        <UnitName Value="ClpIECPrivateKeyParameters"/>
+        <Filename Value="..\..\Interfaces\ClpIFixedPointPreCompInfo.pas"/>
+        <UnitName Value="ClpIFixedPointPreCompInfo"/>
       </Item181>
       <Item182>
-        <Filename Value="..\..\Interfaces\ClpIECPublicKeyParameters.pas"/>
-        <UnitName Value="ClpIECPublicKeyParameters"/>
+        <Filename Value="..\..\Interfaces\ClpIGenericPolynomialExtensionField.pas"/>
+        <UnitName Value="ClpIGenericPolynomialExtensionField"/>
       </Item182>
       <Item183>
-        <Filename Value="..\..\Interfaces\ClpIExtensionField.pas"/>
-        <UnitName Value="ClpIExtensionField"/>
+        <Filename Value="..\..\Interfaces\ClpIGF2Polynomial.pas"/>
+        <UnitName Value="ClpIGF2Polynomial"/>
       </Item183>
       <Item184>
-        <Filename Value="..\..\Interfaces\ClpIFilterStream.pas"/>
-        <UnitName Value="ClpIFilterStream"/>
+        <Filename Value="..\..\Interfaces\ClpIGlvEndomorphism.pas"/>
+        <UnitName Value="ClpIGlvEndomorphism"/>
       </Item184>
       <Item185>
-        <Filename Value="..\..\Interfaces\ClpIFiniteField.pas"/>
-        <UnitName Value="ClpIFiniteField"/>
+        <Filename Value="..\..\Interfaces\ClpIGlvMultiplier.pas"/>
+        <UnitName Value="ClpIGlvMultiplier"/>
       </Item185>
       <Item186>
-        <Filename Value="..\..\Interfaces\ClpIFixedPointCombMultiplier.pas"/>
-        <UnitName Value="ClpIFixedPointCombMultiplier"/>
+        <Filename Value="..\..\Interfaces\ClpIGlvTypeBEndomorphism.pas"/>
+        <UnitName Value="ClpIGlvTypeBEndomorphism"/>
       </Item186>
       <Item187>
-        <Filename Value="..\..\Interfaces\ClpIFixedPointPreCompInfo.pas"/>
-        <UnitName Value="ClpIFixedPointPreCompInfo"/>
+        <Filename Value="..\..\Interfaces\ClpIGlvTypeBParameters.pas"/>
+        <UnitName Value="ClpIGlvTypeBParameters"/>
       </Item187>
       <Item188>
-        <Filename Value="..\..\Interfaces\ClpIGenericPolynomialExtensionField.pas"/>
-        <UnitName Value="ClpIGenericPolynomialExtensionField"/>
+        <Filename Value="..\..\Interfaces\ClpIKeyGenerationParameters.pas"/>
+        <UnitName Value="ClpIKeyGenerationParameters"/>
       </Item188>
       <Item189>
-        <Filename Value="..\..\Interfaces\ClpIGF2Polynomial.pas"/>
-        <UnitName Value="ClpIGF2Polynomial"/>
+        <Filename Value="..\..\Interfaces\ClpIOidTokenizer.pas"/>
+        <UnitName Value="ClpIOidTokenizer"/>
       </Item189>
       <Item190>
-        <Filename Value="..\..\Interfaces\ClpIGlvEndomorphism.pas"/>
-        <UnitName Value="ClpIGlvEndomorphism"/>
+        <Filename Value="..\..\Interfaces\ClpIOSRandomNumberGenerator.pas"/>
+        <UnitName Value="ClpIOSRandomNumberGenerator"/>
       </Item190>
       <Item191>
-        <Filename Value="..\..\Interfaces\ClpIGlvMultiplier.pas"/>
-        <UnitName Value="ClpIGlvMultiplier"/>
+        <Filename Value="..\..\Interfaces\ClpIParametersWithRandom.pas"/>
+        <UnitName Value="ClpIParametersWithRandom"/>
       </Item191>
       <Item192>
-        <Filename Value="..\..\Interfaces\ClpIGlvTypeBEndomorphism.pas"/>
-        <UnitName Value="ClpIGlvTypeBEndomorphism"/>
+        <Filename Value="..\..\Interfaces\ClpIPCGRandomNumberGenerator.pas"/>
+        <UnitName Value="ClpIPCGRandomNumberGenerator"/>
       </Item192>
       <Item193>
-        <Filename Value="..\..\Interfaces\ClpIGlvTypeBParameters.pas"/>
-        <UnitName Value="ClpIGlvTypeBParameters"/>
+        <Filename Value="..\..\Interfaces\ClpIPolynomial.pas"/>
+        <UnitName Value="ClpIPolynomial"/>
       </Item193>
       <Item194>
-        <Filename Value="..\..\Interfaces\ClpIIndefiniteLengthInputStream.pas"/>
-        <UnitName Value="ClpIIndefiniteLengthInputStream"/>
+        <Filename Value="..\..\Interfaces\ClpIPolynomialExtensionField.pas"/>
+        <UnitName Value="ClpIPolynomialExtensionField"/>
       </Item194>
       <Item195>
-        <Filename Value="..\..\Interfaces\ClpIKeyGenerationParameters.pas"/>
-        <UnitName Value="ClpIKeyGenerationParameters"/>
+        <Filename Value="..\..\Interfaces\ClpIPreCompInfo.pas"/>
+        <UnitName Value="ClpIPreCompInfo"/>
       </Item195>
       <Item196>
-        <Filename Value="..\..\Interfaces\ClpILimitedInputStream.pas"/>
-        <UnitName Value="ClpILimitedInputStream"/>
+        <Filename Value="..\..\Interfaces\ClpIPrimeField.pas"/>
+        <UnitName Value="ClpIPrimeField"/>
       </Item196>
       <Item197>
-        <Filename Value="..\..\Interfaces\ClpIOidTokenizer.pas"/>
-        <UnitName Value="ClpIOidTokenizer"/>
+        <Filename Value="..\..\Interfaces\ClpIProxiedInterface.pas"/>
+        <UnitName Value="ClpIProxiedInterface"/>
       </Item197>
       <Item198>
-        <Filename Value="..\..\Interfaces\ClpIOSRandomNumberGenerator.pas"/>
-        <UnitName Value="ClpIOSRandomNumberGenerator"/>
+        <Filename Value="..\..\Interfaces\ClpIRandom.pas"/>
+        <UnitName Value="ClpIRandom"/>
       </Item198>
       <Item199>
-        <Filename Value="..\..\Interfaces\ClpIParametersWithRandom.pas"/>
-        <UnitName Value="ClpIParametersWithRandom"/>
+        <Filename Value="..\..\Interfaces\ClpIRandomDsaKCalculator.pas"/>
+        <UnitName Value="ClpIRandomDsaKCalculator"/>
       </Item199>
       <Item200>
-        <Filename Value="..\..\Interfaces\ClpIPCGRandomNumberGenerator.pas"/>
-        <UnitName Value="ClpIPCGRandomNumberGenerator"/>
+        <Filename Value="..\..\Interfaces\ClpIRandomGenerator.pas"/>
+        <UnitName Value="ClpIRandomGenerator"/>
       </Item200>
       <Item201>
-        <Filename Value="..\..\Interfaces\ClpIPolynomial.pas"/>
-        <UnitName Value="ClpIPolynomial"/>
+        <Filename Value="..\..\Interfaces\ClpIRandomNumberGenerator.pas"/>
+        <UnitName Value="ClpIRandomNumberGenerator"/>
       </Item201>
       <Item202>
-        <Filename Value="..\..\Interfaces\ClpIPolynomialExtensionField.pas"/>
-        <UnitName Value="ClpIPolynomialExtensionField"/>
+        <Filename Value="..\..\Interfaces\ClpIScaleXPointMap.pas"/>
+        <UnitName Value="ClpIScaleXPointMap"/>
       </Item202>
       <Item203>
-        <Filename Value="..\..\Interfaces\ClpIPreCompInfo.pas"/>
-        <UnitName Value="ClpIPreCompInfo"/>
+        <Filename Value="..\..\Interfaces\ClpISecureRandom.pas"/>
+        <UnitName Value="ClpISecureRandom"/>
       </Item203>
       <Item204>
-        <Filename Value="..\..\Interfaces\ClpIPrimeField.pas"/>
-        <UnitName Value="ClpIPrimeField"/>
+        <Filename Value="..\..\Interfaces\ClpISigner.pas"/>
+        <UnitName Value="ClpISigner"/>
       </Item204>
       <Item205>
-        <Filename Value="..\..\Interfaces\ClpIProxiedInterface.pas"/>
-        <UnitName Value="ClpIProxiedInterface"/>
+        <Filename Value="..\..\Interfaces\ClpIWNafL2RMultiplier.pas"/>
+        <UnitName Value="ClpIWNafL2RMultiplier"/>
       </Item205>
       <Item206>
-        <Filename Value="..\..\Interfaces\ClpIRandom.pas"/>
-        <UnitName Value="ClpIRandom"/>
+        <Filename Value="..\..\Interfaces\ClpIWNafPreCompInfo.pas"/>
+        <UnitName Value="ClpIWNafPreCompInfo"/>
       </Item206>
       <Item207>
-        <Filename Value="..\..\Interfaces\ClpIRandomDsaKCalculator.pas"/>
-        <UnitName Value="ClpIRandomDsaKCalculator"/>
+        <Filename Value="..\..\Interfaces\ClpIWTauNafMultiplier.pas"/>
+        <UnitName Value="ClpIWTauNafMultiplier"/>
       </Item207>
       <Item208>
-        <Filename Value="..\..\Interfaces\ClpIRandomGenerator.pas"/>
-        <UnitName Value="ClpIRandomGenerator"/>
+        <Filename Value="..\..\Interfaces\ClpIWTauNafPreCompInfo.pas"/>
+        <UnitName Value="ClpIWTauNafPreCompInfo"/>
       </Item208>
       <Item209>
-        <Filename Value="..\..\Interfaces\ClpIRandomNumberGenerator.pas"/>
-        <UnitName Value="ClpIRandomNumberGenerator"/>
+        <Filename Value="..\..\Interfaces\ClpIX9Curve.pas"/>
+        <UnitName Value="ClpIX9Curve"/>
       </Item209>
       <Item210>
-        <Filename Value="..\..\Interfaces\ClpIScaleXPointMap.pas"/>
-        <UnitName Value="ClpIScaleXPointMap"/>
+        <Filename Value="..\..\Interfaces\ClpIX9ECParameters.pas"/>
+        <UnitName Value="ClpIX9ECParameters"/>
       </Item210>
       <Item211>
-        <Filename Value="..\..\Interfaces\ClpISecureRandom.pas"/>
-        <UnitName Value="ClpISecureRandom"/>
+        <Filename Value="..\..\Interfaces\ClpIX9ECParametersHolder.pas"/>
+        <UnitName Value="ClpIX9ECParametersHolder"/>
       </Item211>
       <Item212>
-        <Filename Value="..\..\Interfaces\ClpISigner.pas"/>
-        <UnitName Value="ClpISigner"/>
+        <Filename Value="..\..\Interfaces\ClpIX9ECPoint.pas"/>
+        <UnitName Value="ClpIX9ECPoint"/>
       </Item212>
       <Item213>
-        <Filename Value="..\..\Interfaces\ClpIWNafL2RMultiplier.pas"/>
-        <UnitName Value="ClpIWNafL2RMultiplier"/>
+        <Filename Value="..\..\Interfaces\ClpIX9FieldElement.pas"/>
+        <UnitName Value="ClpIX9FieldElement"/>
       </Item213>
       <Item214>
-        <Filename Value="..\..\Interfaces\ClpIWNafPreCompInfo.pas"/>
-        <UnitName Value="ClpIWNafPreCompInfo"/>
+        <Filename Value="..\..\Interfaces\ClpIX9FieldID.pas"/>
+        <UnitName Value="ClpIX9FieldID"/>
       </Item214>
       <Item215>
-        <Filename Value="..\..\Interfaces\ClpIWTauNafMultiplier.pas"/>
-        <UnitName Value="ClpIWTauNafMultiplier"/>
+        <Filename Value="..\..\Interfaces\ClpIZTauElement.pas"/>
+        <UnitName Value="ClpIZTauElement"/>
       </Item215>
       <Item216>
-        <Filename Value="..\..\Interfaces\ClpIWTauNafPreCompInfo.pas"/>
-        <UnitName Value="ClpIWTauNafPreCompInfo"/>
+        <Filename Value="..\..\Math\ClpBigInteger.pas"/>
+        <UnitName Value="ClpBigInteger"/>
       </Item216>
       <Item217>
-        <Filename Value="..\..\Interfaces\ClpIX9Curve.pas"/>
-        <UnitName Value="ClpIX9Curve"/>
+        <Filename Value="..\..\Math\ClpNumberStyles.pas"/>
+        <UnitName Value="ClpNumberStyles"/>
       </Item217>
       <Item218>
-        <Filename Value="..\..\Interfaces\ClpIX9ECParameters.pas"/>
-        <UnitName Value="ClpIX9ECParameters"/>
+        <Filename Value="..\..\Math\EC\ClpECAlgorithms.pas"/>
+        <UnitName Value="ClpECAlgorithms"/>
       </Item218>
       <Item219>
-        <Filename Value="..\..\Interfaces\ClpIX9ECParametersHolder.pas"/>
-        <UnitName Value="ClpIX9ECParametersHolder"/>
+        <Filename Value="..\..\Math\EC\ClpECCurve.pas"/>
+        <UnitName Value="ClpECCurve"/>
       </Item219>
       <Item220>
-        <Filename Value="..\..\Interfaces\ClpIX9ECPoint.pas"/>
-        <UnitName Value="ClpIX9ECPoint"/>
+        <Filename Value="..\..\Math\EC\ClpECFieldElement.pas"/>
+        <UnitName Value="ClpECFieldElement"/>
       </Item220>
       <Item221>
-        <Filename Value="..\..\Interfaces\ClpIX9FieldElement.pas"/>
-        <UnitName Value="ClpIX9FieldElement"/>
+        <Filename Value="..\..\Math\EC\ClpECPoint.pas"/>
+        <UnitName Value="ClpECPoint"/>
       </Item221>
       <Item222>
-        <Filename Value="..\..\Interfaces\ClpIX9FieldID.pas"/>
-        <UnitName Value="ClpIX9FieldID"/>
+        <Filename Value="..\..\Math\EC\ClpLongArray.pas"/>
+        <UnitName Value="ClpLongArray"/>
       </Item222>
       <Item223>
-        <Filename Value="..\..\Interfaces\ClpIZTauElement.pas"/>
-        <UnitName Value="ClpIZTauElement"/>
+        <Filename Value="..\..\Math\EC\ClpScaleXPointMap.pas"/>
+        <UnitName Value="ClpScaleXPointMap"/>
       </Item223>
       <Item224>
-        <Filename Value="..\..\Math\ClpBigInteger.pas"/>
-        <UnitName Value="ClpBigInteger"/>
+        <Filename Value="..\..\Math\EC\Abc\ClpSimpleBigDecimal.pas"/>
+        <UnitName Value="ClpSimpleBigDecimal"/>
       </Item224>
       <Item225>
-        <Filename Value="..\..\Math\ClpNumberStyles.pas"/>
-        <UnitName Value="ClpNumberStyles"/>
+        <Filename Value="..\..\Math\EC\Abc\ClpTnaf.pas"/>
+        <UnitName Value="ClpTnaf"/>
       </Item225>
       <Item226>
-        <Filename Value="..\..\Math\EC\ClpECAlgorithms.pas"/>
-        <UnitName Value="ClpECAlgorithms"/>
+        <Filename Value="..\..\Math\EC\Abc\ClpZTauElement.pas"/>
+        <UnitName Value="ClpZTauElement"/>
       </Item226>
       <Item227>
-        <Filename Value="..\..\Math\EC\ClpECCurve.pas"/>
-        <UnitName Value="ClpECCurve"/>
+        <Filename Value="..\..\Math\EC\Endo\ClpGlvTypeBEndomorphism.pas"/>
+        <UnitName Value="ClpGlvTypeBEndomorphism"/>
       </Item227>
       <Item228>
-        <Filename Value="..\..\Math\EC\ClpECFieldElement.pas"/>
-        <UnitName Value="ClpECFieldElement"/>
+        <Filename Value="..\..\Math\EC\Endo\ClpGlvTypeBParameters.pas"/>
+        <UnitName Value="ClpGlvTypeBParameters"/>
       </Item228>
       <Item229>
-        <Filename Value="..\..\Math\EC\ClpECPoint.pas"/>
-        <UnitName Value="ClpECPoint"/>
+        <Filename Value="..\..\Math\EC\Multiplier\ClpAbstractECMultiplier.pas"/>
+        <UnitName Value="ClpAbstractECMultiplier"/>
       </Item229>
       <Item230>
-        <Filename Value="..\..\Math\EC\ClpLongArray.pas"/>
-        <UnitName Value="ClpLongArray"/>
+        <Filename Value="..\..\Math\EC\Multiplier\ClpFixedPointCombMultiplier.pas"/>
+        <UnitName Value="ClpFixedPointCombMultiplier"/>
       </Item230>
       <Item231>
-        <Filename Value="..\..\Math\EC\ClpScaleXPointMap.pas"/>
-        <UnitName Value="ClpScaleXPointMap"/>
+        <Filename Value="..\..\Math\EC\Multiplier\ClpFixedPointPreCompInfo.pas"/>
+        <UnitName Value="ClpFixedPointPreCompInfo"/>
       </Item231>
       <Item232>
-        <Filename Value="..\..\Math\EC\Abc\ClpSimpleBigDecimal.pas"/>
-        <UnitName Value="ClpSimpleBigDecimal"/>
+        <Filename Value="..\..\Math\EC\Multiplier\ClpFixedPointUtilities.pas"/>
+        <UnitName Value="ClpFixedPointUtilities"/>
       </Item232>
       <Item233>
-        <Filename Value="..\..\Math\EC\Abc\ClpTnaf.pas"/>
-        <UnitName Value="ClpTnaf"/>
+        <Filename Value="..\..\Math\EC\Multiplier\ClpGlvMultiplier.pas"/>
+        <UnitName Value="ClpGlvMultiplier"/>
       </Item233>
       <Item234>
-        <Filename Value="..\..\Math\EC\Abc\ClpZTauElement.pas"/>
-        <UnitName Value="ClpZTauElement"/>
+        <Filename Value="..\..\Math\EC\Multiplier\ClpWNafL2RMultiplier.pas"/>
+        <UnitName Value="ClpWNafL2RMultiplier"/>
       </Item234>
       <Item235>
-        <Filename Value="..\..\Math\EC\Endo\ClpGlvTypeBEndomorphism.pas"/>
-        <UnitName Value="ClpGlvTypeBEndomorphism"/>
+        <Filename Value="..\..\Math\EC\Multiplier\ClpWNafPreCompInfo.pas"/>
+        <UnitName Value="ClpWNafPreCompInfo"/>
       </Item235>
       <Item236>
-        <Filename Value="..\..\Math\EC\Endo\ClpGlvTypeBParameters.pas"/>
-        <UnitName Value="ClpGlvTypeBParameters"/>
-      </Item236>
-      <Item237>
-        <Filename Value="..\..\Math\EC\Multiplier\ClpAbstractECMultiplier.pas"/>
-        <UnitName Value="ClpAbstractECMultiplier"/>
-      </Item237>
-      <Item238>
-        <Filename Value="..\..\Math\EC\Multiplier\ClpFixedPointCombMultiplier.pas"/>
-        <UnitName Value="ClpFixedPointCombMultiplier"/>
-      </Item238>
-      <Item239>
-        <Filename Value="..\..\Math\EC\Multiplier\ClpFixedPointPreCompInfo.pas"/>
-        <UnitName Value="ClpFixedPointPreCompInfo"/>
-      </Item239>
-      <Item240>
-        <Filename Value="..\..\Math\EC\Multiplier\ClpFixedPointUtilities.pas"/>
-        <UnitName Value="ClpFixedPointUtilities"/>
-      </Item240>
-      <Item241>
-        <Filename Value="..\..\Math\EC\Multiplier\ClpGlvMultiplier.pas"/>
-        <UnitName Value="ClpGlvMultiplier"/>
-      </Item241>
-      <Item242>
-        <Filename Value="..\..\Math\EC\Multiplier\ClpWNafL2RMultiplier.pas"/>
-        <UnitName Value="ClpWNafL2RMultiplier"/>
-      </Item242>
-      <Item243>
-        <Filename Value="..\..\Math\EC\Multiplier\ClpWNafPreCompInfo.pas"/>
-        <UnitName Value="ClpWNafPreCompInfo"/>
-      </Item243>
-      <Item244>
         <Filename Value="..\..\Math\EC\Multiplier\ClpWNafUtilities.pas"/>
         <UnitName Value="ClpWNafUtilities"/>
-      </Item244>
-      <Item245>
+      </Item236>
+      <Item237>
         <Filename Value="..\..\Math\EC\Multiplier\ClpWTauNafMultiplier.pas"/>
         <UnitName Value="ClpWTauNafMultiplier"/>
-      </Item245>
-      <Item246>
+      </Item237>
+      <Item238>
         <Filename Value="..\..\Math\EC\Multiplier\ClpWTauNafPreCompInfo.pas"/>
         <UnitName Value="ClpWTauNafPreCompInfo"/>
-      </Item246>
-      <Item247>
+      </Item238>
+      <Item239>
         <Filename Value="..\..\Math\Field\ClpFiniteFields.pas"/>
         <UnitName Value="ClpFiniteFields"/>
-      </Item247>
-      <Item248>
+      </Item239>
+      <Item240>
         <Filename Value="..\..\Math\Field\ClpGenericPolynomialExtensionField.pas"/>
         <UnitName Value="ClpGenericPolynomialExtensionField"/>
-      </Item248>
-      <Item249>
+      </Item240>
+      <Item241>
         <Filename Value="..\..\Math\Field\ClpGF2Polynomial.pas"/>
         <UnitName Value="ClpGF2Polynomial"/>
-      </Item249>
-      <Item250>
+      </Item241>
+      <Item242>
         <Filename Value="..\..\Math\Field\ClpPrimeField.pas"/>
         <UnitName Value="ClpPrimeField"/>
-      </Item250>
-      <Item251>
+      </Item242>
+      <Item243>
         <Filename Value="..\..\Math\Raw\ClpMod.pas"/>
         <UnitName Value="ClpMod"/>
-      </Item251>
-      <Item252>
+      </Item243>
+      <Item244>
         <Filename Value="..\..\Math\Raw\ClpNat.pas"/>
         <UnitName Value="ClpNat"/>
-      </Item252>
-      <Item253>
+      </Item244>
+      <Item245>
         <Filename Value="..\..\Security\ClpDigestUtilities.pas"/>
         <UnitName Value="ClpDigestUtilities"/>
-      </Item253>
-      <Item254>
+      </Item245>
+      <Item246>
         <Filename Value="..\..\Security\ClpRandom.pas"/>
         <UnitName Value="ClpRandom"/>
-      </Item254>
-      <Item255>
+      </Item246>
+      <Item247>
         <Filename Value="..\..\Security\ClpSecureRandom.pas"/>
         <UnitName Value="ClpSecureRandom"/>
-      </Item255>
-      <Item256>
+      </Item247>
+      <Item248>
         <Filename Value="..\..\Security\ClpSignerUtilities.pas"/>
         <UnitName Value="ClpSignerUtilities"/>
-      </Item256>
-      <Item257>
+      </Item248>
+      <Item249>
         <Filename Value="..\..\Utils\ClpArrayUtils.pas"/>
         <UnitName Value="ClpArrayUtils"/>
-      </Item257>
-      <Item258>
+      </Item249>
+      <Item250>
         <Filename Value="..\..\Utils\ClpBigIntegers.pas"/>
         <UnitName Value="ClpBigIntegers"/>
-      </Item258>
-      <Item259>
+      </Item250>
+      <Item251>
         <Filename Value="..\..\Utils\ClpBitConverter.pas"/>
         <UnitName Value="ClpBitConverter"/>
-      </Item259>
-      <Item260>
+      </Item251>
+      <Item252>
         <Filename Value="..\..\Utils\ClpBits.pas"/>
         <UnitName Value="ClpBits"/>
-      </Item260>
-      <Item261>
+      </Item252>
+      <Item253>
         <Filename Value="..\..\Utils\ClpConverters.pas"/>
         <UnitName Value="ClpConverters"/>
-      </Item261>
-      <Item262>
+      </Item253>
+      <Item254>
         <Filename Value="..\..\Utils\ClpCryptoLibTypes.pas"/>
         <UnitName Value="ClpCryptoLibTypes"/>
-      </Item262>
-      <Item263>
+      </Item254>
+      <Item255>
         <Filename Value="..\..\Utils\ClpStreamSorter.pas"/>
         <UnitName Value="ClpStreamSorter"/>
-      </Item263>
-      <Item264>
+      </Item255>
+      <Item256>
         <Filename Value="..\..\Utils\ClpTimes.pas"/>
         <UnitName Value="ClpTimes"/>
-      </Item264>
-      <Item265>
+      </Item256>
+      <Item257>
         <Filename Value="..\..\Utils\Collections\ClpCollectionUtilities.pas"/>
         <UnitName Value="ClpCollectionUtilities"/>
-      </Item265>
-      <Item266>
+      </Item257>
+      <Item258>
         <Filename Value="..\..\Utils\Encoders\ClpBase64.pas"/>
         <UnitName Value="ClpBase64"/>
-      </Item266>
-      <Item267>
+      </Item258>
+      <Item259>
         <Filename Value="..\..\Utils\Encoders\ClpHex.pas"/>
         <UnitName Value="ClpHex"/>
-      </Item267>
-      <Item268>
+      </Item259>
+      <Item260>
         <Filename Value="..\..\Utils\Helpers\ClpStreamHelper.pas"/>
         <UnitName Value="ClpStreamHelper"/>
-      </Item268>
-      <Item269>
+      </Item260>
+      <Item261>
         <Filename Value="..\..\Utils\IO\ClpBaseInputStream.pas"/>
         <UnitName Value="ClpBaseInputStream"/>
-      </Item269>
-      <Item270>
+      </Item261>
+      <Item262>
         <Filename Value="..\..\Utils\IO\ClpFilterStream.pas"/>
         <UnitName Value="ClpFilterStream"/>
-      </Item270>
-      <Item271>
+      </Item262>
+      <Item263>
         <Filename Value="..\..\Utils\IO\ClpStreams.pas"/>
         <UnitName Value="ClpStreams"/>
-      </Item271>
-      <Item272>
+      </Item263>
+      <Item264>
         <Filename Value="..\..\Utils\Randoms\ClpOSRandom.pas"/>
         <UnitName Value="ClpOSRandom"/>
-      </Item272>
-      <Item273>
+      </Item264>
+      <Item265>
         <Filename Value="..\..\Utils\Randoms\ClpPcgRandomMinimal.pas"/>
         <UnitName Value="ClpPcgRandomMinimal"/>
-      </Item273>
-      <Item274>
+      </Item265>
+      <Item266>
         <Filename Value="..\..\Utils\Rng\ClpOSRandomNumberGenerator.pas"/>
         <UnitName Value="ClpOSRandomNumberGenerator"/>
-      </Item274>
-      <Item275>
+      </Item266>
+      <Item267>
         <Filename Value="..\..\Utils\Rng\ClpPCGRandomNumberGenerator.pas"/>
         <UnitName Value="ClpPCGRandomNumberGenerator"/>
-      </Item275>
-      <Item276>
+      </Item267>
+      <Item268>
         <Filename Value="..\..\Utils\Rng\ClpRandomNumberGenerator.pas"/>
         <UnitName Value="ClpRandomNumberGenerator"/>
-      </Item276>
-      <Item277>
+      </Item268>
+      <Item269>
         <Filename Value="..\..\Utils\ClpSetWeakRef.pas"/>
         <UnitName Value="ClpSetWeakRef"/>
-      </Item277>
-      <Item278>
+      </Item269>
+      <Item270>
         <Filename Value="..\..\Asn1\ClpDefiniteLengthInputStream.pas"/>
         <UnitName Value="ClpDefiniteLengthInputStream"/>
-      </Item278>
-      <Item279>
+      </Item270>
+      <Item271>
         <Filename Value="..\..\Crypto\Signers\ClpECSchnorrSigner.pas"/>
         <UnitName Value="ClpECSchnorrSigner"/>
-      </Item279>
-      <Item280>
+      </Item271>
+      <Item272>
         <Filename Value="..\..\Interfaces\ClpIECSchnorrSigner.pas"/>
         <UnitName Value="ClpIECSchnorrSigner"/>
-      </Item280>
-      <Item281>
+      </Item272>
+      <Item273>
         <Filename Value="..\..\Security\ClpParameterUtilities.pas"/>
         <UnitName Value="ClpParameterUtilities"/>
-      </Item281>
-      <Item282>
+      </Item273>
+      <Item274>
         <Filename Value="..\..\Security\ClpGeneratorUtilities.pas"/>
         <UnitName Value="ClpGeneratorUtilities"/>
-      </Item282>
-      <Item283>
+      </Item274>
+      <Item275>
         <Filename Value="..\..\Security\ClpCipherUtilities.pas"/>
         <UnitName Value="ClpCipherUtilities"/>
-      </Item283>
-      <Item284>
+      </Item275>
+      <Item276>
         <Filename Value="..\..\Interfaces\ClpIAesEngine.pas"/>
         <UnitName Value="ClpIAesEngine"/>
-      </Item284>
-      <Item285>
+      </Item276>
+      <Item277>
         <Filename Value="..\..\Interfaces\ClpIPkcs7Padding.pas"/>
         <UnitName Value="ClpIPkcs7Padding"/>
-      </Item285>
-      <Item286>
+      </Item277>
+      <Item278>
         <Filename Value="..\..\Interfaces\ClpIParametersWithIV.pas"/>
         <UnitName Value="ClpIParametersWithIV"/>
-      </Item286>
-      <Item287>
+      </Item278>
+      <Item279>
         <Filename Value="..\..\Interfaces\ClpIPaddedBufferedBlockCipher.pas"/>
         <UnitName Value="ClpIPaddedBufferedBlockCipher"/>
-      </Item287>
-      <Item288>
+      </Item279>
+      <Item280>
         <Filename Value="..\..\Interfaces\ClpIKeyParameter.pas"/>
         <UnitName Value="ClpIKeyParameter"/>
-      </Item288>
-      <Item289>
+      </Item280>
+      <Item281>
         <Filename Value="..\..\Interfaces\ClpICbcBlockCipher.pas"/>
         <UnitName Value="ClpICbcBlockCipher"/>
-      </Item289>
-      <Item290>
+      </Item281>
+      <Item282>
         <Filename Value="..\..\Interfaces\ClpIBufferedCipherBase.pas"/>
         <UnitName Value="ClpIBufferedCipherBase"/>
-      </Item290>
-      <Item291>
+      </Item282>
+      <Item283>
         <Filename Value="..\..\Interfaces\ClpIBufferedCipher.pas"/>
         <UnitName Value="ClpIBufferedCipher"/>
-      </Item291>
-      <Item292>
+      </Item283>
+      <Item284>
         <Filename Value="..\..\Interfaces\ClpIBufferedBlockCipher.pas"/>
         <UnitName Value="ClpIBufferedBlockCipher"/>
-      </Item292>
-      <Item293>
+      </Item284>
+      <Item285>
         <Filename Value="..\..\Interfaces\ClpIBlockCipherPadding.pas"/>
         <UnitName Value="ClpIBlockCipherPadding"/>
-      </Item293>
-      <Item294>
+      </Item285>
+      <Item286>
         <Filename Value="..\..\Interfaces\ClpIBlockCipher.pas"/>
         <UnitName Value="ClpIBlockCipher"/>
-      </Item294>
-      <Item295>
+      </Item286>
+      <Item287>
         <Filename Value="..\..\Crypto\Modes\ClpCbcBlockCipher.pas"/>
         <UnitName Value="ClpCbcBlockCipher"/>
-      </Item295>
-      <Item296>
+      </Item287>
+      <Item288>
         <Filename Value="..\..\Crypto\Paddings\ClpPaddedBufferedBlockCipher.pas"/>
         <UnitName Value="ClpPaddedBufferedBlockCipher"/>
-      </Item296>
-      <Item297>
+      </Item288>
+      <Item289>
         <Filename Value="..\..\Crypto\Paddings\ClpPkcs7Padding.pas"/>
         <UnitName Value="ClpPkcs7Padding"/>
-      </Item297>
-      <Item298>
+      </Item289>
+      <Item290>
         <Filename Value="..\..\Crypto\Parameters\ClpParametersWithIV.pas"/>
         <UnitName Value="ClpParametersWithIV"/>
-      </Item298>
-      <Item299>
+      </Item290>
+      <Item291>
         <Filename Value="..\..\Crypto\Parameters\ClpKeyParameter.pas"/>
         <UnitName Value="ClpKeyParameter"/>
-      </Item299>
-      <Item300>
+      </Item291>
+      <Item292>
         <Filename Value="..\..\Crypto\ClpBufferedBlockCipher.pas"/>
         <UnitName Value="ClpBufferedBlockCipher"/>
-      </Item300>
-      <Item301>
+      </Item292>
+      <Item293>
         <Filename Value="..\..\Crypto\ClpBufferedCipherBase.pas"/>
         <UnitName Value="ClpBufferedCipherBase"/>
-      </Item301>
-      <Item302>
+      </Item293>
+      <Item294>
         <Filename Value="..\..\Utils\ClpCheck.pas"/>
         <UnitName Value="ClpCheck"/>
-      </Item302>
-      <Item303>
+      </Item294>
+      <Item295>
         <Filename Value="..\..\Crypto\Engines\ClpAesEngine.pas"/>
         <UnitName Value="ClpAesEngine"/>
-      </Item303>
-      <Item304>
+      </Item295>
+      <Item296>
         <Filename Value="..\..\Crypto\Generators\ClpPascalCoinECIESKdfBytesGenerator.pas"/>
         <UnitName Value="ClpPascalCoinECIESKdfBytesGenerator"/>
-      </Item304>
-      <Item305>
+      </Item296>
+      <Item297>
         <Filename Value="..\..\Crypto\Engines\ClpPascalCoinIESEngine.pas"/>
         <UnitName Value="ClpPascalCoinIESEngine"/>
-      </Item305>
-      <Item306>
+      </Item297>
+      <Item298>
         <Filename Value="..\..\Crypto\Generators\ClpBaseKdfBytesGenerator.pas"/>
         <UnitName Value="ClpBaseKdfBytesGenerator"/>
-      </Item306>
-      <Item307>
+      </Item298>
+      <Item299>
         <Filename Value="..\..\Crypto\Engines\ClpIESEngine.pas"/>
         <UnitName Value="ClpIESEngine"/>
-      </Item307>
-      <Item308>
+      </Item299>
+      <Item300>
         <Filename Value="..\..\Crypto\Parsers\ClpECIESPublicKeyParser.pas"/>
         <UnitName Value="ClpECIESPublicKeyParser"/>
-      </Item308>
-      <Item309>
+      </Item300>
+      <Item301>
         <Filename Value="..\..\Crypto\ClpIESCipher.pas"/>
         <UnitName Value="ClpIESCipher"/>
-      </Item309>
-      <Item310>
+      </Item301>
+      <Item302>
         <Filename Value="..\..\Crypto\Agreement\ClpECDHBasicAgreement.pas"/>
         <UnitName Value="ClpECDHBasicAgreement"/>
-      </Item310>
-      <Item311>
+      </Item302>
+      <Item303>
         <Filename Value="..\..\Crypto\ClpEphemeralKeyPair.pas"/>
         <UnitName Value="ClpEphemeralKeyPair"/>
-      </Item311>
-      <Item312>
+      </Item303>
+      <Item304>
         <Filename Value="..\..\Crypto\ClpKeyEncoder.pas"/>
         <UnitName Value="ClpKeyEncoder"/>
-      </Item312>
-      <Item313>
+      </Item304>
+      <Item305>
         <Filename Value="..\..\Crypto\Paddings\ClpZeroBytePadding.pas"/>
         <UnitName Value="ClpZeroBytePadding"/>
-      </Item313>
-      <Item314>
+      </Item305>
+      <Item306>
         <Filename Value="..\..\Crypto\Parameters\ClpIESWithCipherParameters.pas"/>
         <UnitName Value="ClpIESWithCipherParameters"/>
-      </Item314>
-      <Item315>
+      </Item306>
+      <Item307>
         <Filename Value="..\..\Crypto\Parameters\ClpIESParameters.pas"/>
         <UnitName Value="ClpIESParameters"/>
-      </Item315>
-      <Item316>
+      </Item307>
+      <Item308>
         <Filename Value="..\..\Crypto\Generators\ClpEphemeralKeyPairGenerator.pas"/>
         <UnitName Value="ClpEphemeralKeyPairGenerator"/>
-      </Item316>
-      <Item317>
+      </Item308>
+      <Item309>
         <Filename Value="..\..\Crypto\Generators\ClpKdf2BytesGenerator.pas"/>
         <UnitName Value="ClpKdf2BytesGenerator"/>
-      </Item317>
-      <Item318>
+      </Item309>
+      <Item310>
         <Filename Value="..\..\Crypto\Parameters\ClpIso18033KdfParameters.pas"/>
         <UnitName Value="ClpIso18033KdfParameters"/>
-      </Item318>
-      <Item319>
+      </Item310>
+      <Item311>
         <Filename Value="..\..\Crypto\Parameters\ClpKdfParameters.pas"/>
         <UnitName Value="ClpKdfParameters"/>
-      </Item319>
-      <Item320>
+      </Item311>
+      <Item312>
         <Filename Value="..\..\Interfaces\ClpIIESWithCipherParameters.pas"/>
         <UnitName Value="ClpIIESWithCipherParameters"/>
-      </Item320>
-      <Item321>
+      </Item312>
+      <Item313>
         <Filename Value="..\..\Interfaces\ClpIIESParameters.pas"/>
         <UnitName Value="ClpIIESParameters"/>
-      </Item321>
-      <Item322>
+      </Item313>
+      <Item314>
         <Filename Value="..\..\Interfaces\ClpIPascalCoinECIESKdfBytesGenerator.pas"/>
         <UnitName Value="ClpIPascalCoinECIESKdfBytesGenerator"/>
-      </Item322>
-      <Item323>
+      </Item314>
+      <Item315>
         <Filename Value="..\..\Interfaces\ClpIPascalCoinIESEngine.pas"/>
         <UnitName Value="ClpIPascalCoinIESEngine"/>
-      </Item323>
-      <Item324>
+      </Item315>
+      <Item316>
         <Filename Value="..\..\Interfaces\ClpIIESEngine.pas"/>
         <UnitName Value="ClpIIESEngine"/>
-      </Item324>
-      <Item325>
+      </Item316>
+      <Item317>
         <Filename Value="..\..\Interfaces\ClpIIESCipher.pas"/>
         <UnitName Value="ClpIIESCipher"/>
-      </Item325>
-      <Item326>
+      </Item317>
+      <Item318>
         <Filename Value="..\..\Interfaces\ClpIZeroBytePadding.pas"/>
         <UnitName Value="ClpIZeroBytePadding"/>
-      </Item326>
-      <Item327>
+      </Item318>
+      <Item319>
         <Filename Value="..\..\Interfaces\ClpIECIESPublicKeyParser.pas"/>
         <UnitName Value="ClpIECIESPublicKeyParser"/>
-      </Item327>
-      <Item328>
+      </Item319>
+      <Item320>
         <Filename Value="..\..\Interfaces\ClpIEphemeralKeyPairGenerator.pas"/>
         <UnitName Value="ClpIEphemeralKeyPairGenerator"/>
-      </Item328>
-      <Item329>
+      </Item320>
+      <Item321>
         <Filename Value="..\..\Interfaces\ClpIEphemeralKeyPair.pas"/>
         <UnitName Value="ClpIEphemeralKeyPair"/>
-      </Item329>
-      <Item330>
+      </Item321>
+      <Item322>
         <Filename Value="..\..\Interfaces\ClpIKeyParser.pas"/>
         <UnitName Value="ClpIKeyParser"/>
-      </Item330>
-      <Item331>
+      </Item322>
+      <Item323>
         <Filename Value="..\..\Interfaces\ClpIKdf2BytesGenerator.pas"/>
         <UnitName Value="ClpIKdf2BytesGenerator"/>
-      </Item331>
-      <Item332>
+      </Item323>
+      <Item324>
         <Filename Value="..\..\Interfaces\ClpIBaseKdfBytesGenerator.pas"/>
         <UnitName Value="ClpIBaseKdfBytesGenerator"/>
-      </Item332>
-      <Item333>
+      </Item324>
+      <Item325>
         <Filename Value="..\..\Interfaces\ClpIIso18033KdfParameters.pas"/>
         <UnitName Value="ClpIIso18033KdfParameters"/>
-      </Item333>
-      <Item334>
+      </Item325>
+      <Item326>
         <Filename Value="..\..\Interfaces\ClpIKdfParameters.pas"/>
         <UnitName Value="ClpIKdfParameters"/>
-      </Item334>
-      <Item335>
+      </Item326>
+      <Item327>
         <Filename Value="..\..\Interfaces\ClpIDerivationFunction.pas"/>
         <UnitName Value="ClpIDerivationFunction"/>
-      </Item335>
-      <Item336>
+      </Item327>
+      <Item328>
         <Filename Value="..\..\Interfaces\ClpIDerivationParameters.pas"/>
         <UnitName Value="ClpIDerivationParameters"/>
-      </Item336>
-      <Item337>
+      </Item328>
+      <Item329>
         <Filename Value="..\..\Interfaces\ClpIECDHBasicAgreement.pas"/>
         <UnitName Value="ClpIECDHBasicAgreement"/>
-      </Item337>
-      <Item338>
+      </Item329>
+      <Item330>
         <Filename Value="..\..\Interfaces\ClpIBasicAgreement.pas"/>
         <UnitName Value="ClpIBasicAgreement"/>
-      </Item338>
-      <Item339>
+      </Item330>
+      <Item331>
         <Filename Value="..\..\Crypto\Modes\ClpSicBlockCipher.pas"/>
         <UnitName Value="ClpSicBlockCipher"/>
-      </Item339>
-      <Item340>
+      </Item331>
+      <Item332>
         <Filename Value="..\..\Crypto\Modes\ClpCfbBlockCipher.pas"/>
         <UnitName Value="ClpCfbBlockCipher"/>
-      </Item340>
-      <Item341>
+      </Item332>
+      <Item333>
         <Filename Value="..\..\Crypto\Generators\ClpCipherKeyGenerator.pas"/>
         <UnitName Value="ClpCipherKeyGenerator"/>
-      </Item341>
-      <Item342>
+      </Item333>
+      <Item334>
         <Filename Value="..\..\Utils\ClpStringUtils.pas"/>
         <UnitName Value="ClpStringUtils"/>
-      </Item342>
-      <Item343>
+      </Item334>
+      <Item335>
         <Filename Value="..\..\Interfaces\ClpICipherKeyGenerator.pas"/>
         <UnitName Value="ClpICipherKeyGenerator"/>
-      </Item343>
-      <Item344>
+      </Item335>
+      <Item336>
         <Filename Value="..\..\Interfaces\ClpIDigest.pas"/>
         <UnitName Value="ClpIDigest"/>
-      </Item344>
-      <Item345>
+      </Item336>
+      <Item337>
         <Filename Value="..\..\Interfaces\ClpISicBlockCipher.pas"/>
         <UnitName Value="ClpISicBlockCipher"/>
-      </Item345>
-      <Item346>
+      </Item337>
+      <Item338>
         <Filename Value="..\..\Interfaces\ClpIStreamCipher.pas"/>
         <UnitName Value="ClpIStreamCipher"/>
-      </Item346>
-      <Item347>
+      </Item338>
+      <Item339>
         <Filename Value="..\..\Crypto\Modes\ClpOfbBlockCipher.pas"/>
         <UnitName Value="ClpOfbBlockCipher"/>
-      </Item347>
-      <Item348>
+      </Item339>
+      <Item340>
         <Filename Value="..\..\Interfaces\ClpIOfbBlockCipher.pas"/>
         <UnitName Value="ClpIOfbBlockCipher"/>
-      </Item348>
-      <Item349>
+      </Item340>
+      <Item341>
         <Filename Value="..\..\Interfaces\ClpICfbBlockCipher.pas"/>
         <UnitName Value="ClpICfbBlockCipher"/>
-      </Item349>
-      <Item350>
+      </Item341>
+      <Item342>
         <Filename Value="..\..\Crypto\Paddings\ClpX923Padding.pas"/>
         <UnitName Value="ClpX923Padding"/>
-      </Item350>
-      <Item351>
+      </Item342>
+      <Item343>
         <Filename Value="..\..\Interfaces\ClpIX923Padding.pas"/>
         <UnitName Value="ClpIX923Padding"/>
-      </Item351>
-      <Item352>
+      </Item343>
+      <Item344>
         <Filename Value="..\..\Crypto\Paddings\ClpTTBCPadding.pas"/>
         <UnitName Value="ClpTTBCPadding"/>
-      </Item352>
-      <Item353>
+      </Item344>
+      <Item345>
         <Filename Value="..\..\Crypto\Paddings\ClpISO7816d4Padding.pas"/>
         <UnitName Value="ClpISO7816d4Padding"/>
-      </Item353>
-      <Item354>
+      </Item345>
+      <Item346>
         <Filename Value="..\..\Interfaces\ClpITBCPadding.pas"/>
         <UnitName Value="ClpITBCPadding"/>
-      </Item354>
-      <Item355>
+      </Item346>
+      <Item347>
         <Filename Value="..\..\Interfaces\ClpIISO7816d4Padding.pas"/>
         <UnitName Value="ClpIISO7816d4Padding"/>
-      </Item355>
-      <Item356>
+      </Item347>
+      <Item348>
         <Filename Value="..\..\Crypto\Paddings\ClpISO10126d2Padding.pas"/>
         <UnitName Value="ClpISO10126d2Padding"/>
-      </Item356>
-      <Item357>
+      </Item348>
+      <Item349>
         <Filename Value="..\..\Interfaces\ClpIISO10126d2Padding.pas"/>
         <UnitName Value="ClpIISO10126d2Padding"/>
-      </Item357>
-      <Item358>
+      </Item349>
+      <Item350>
         <Filename Value="CryptoLib4PascalPackage.pas"/>
         <AddToUsesPkgSection Value="False"/>
         <UnitName Value="CryptoLib4PascalPackage"/>
-      </Item358>
-      <Item359>
+      </Item350>
+      <Item351>
         <Filename Value="..\..\Crypto\Generators\ClpPkcs5S2ParametersGenerator.pas"/>
         <UnitName Value="ClpPkcs5S2ParametersGenerator"/>
-      </Item359>
-      <Item360>
+      </Item351>
+      <Item352>
         <Filename Value="..\..\Interfaces\ClpIPkcs5S2ParametersGenerator.pas"/>
         <UnitName Value="ClpIPkcs5S2ParametersGenerator"/>
-      </Item360>
-      <Item361>
+      </Item352>
+      <Item353>
         <Filename Value="..\..\Interfaces\ClpIPbeParametersGenerator.pas"/>
         <UnitName Value="ClpIPbeParametersGenerator"/>
-      </Item361>
-      <Item362>
+      </Item353>
+      <Item354>
         <Filename Value="..\..\Crypto\Generators\ClpPbeParametersGenerator.pas"/>
         <UnitName Value="ClpPbeParametersGenerator"/>
-      </Item362>
-      <Item363>
+      </Item354>
+      <Item355>
         <Filename Value="..\..\Crypto\Macs\ClpHMac.pas"/>
         <UnitName Value="ClpHMac"/>
-      </Item363>
-      <Item364>
+      </Item355>
+      <Item356>
         <Filename Value="..\..\Asn1\Misc\ClpMiscObjectIdentifiers.pas"/>
         <UnitName Value="ClpMiscObjectIdentifiers"/>
-      </Item364>
-      <Item365>
+      </Item356>
+      <Item357>
         <Filename Value="..\..\Asn1\Iana\ClpIanaObjectIdentifiers.pas"/>
         <UnitName Value="ClpIanaObjectIdentifiers"/>
-      </Item365>
-      <Item366>
+      </Item357>
+      <Item358>
         <Filename Value="..\..\Security\ClpMacUtilities.pas"/>
         <UnitName Value="ClpMacUtilities"/>
-      </Item366>
-      <Item367>
+      </Item358>
+      <Item359>
         <Filename Value="..\..\Interfaces\ClpIMac.pas"/>
         <UnitName Value="ClpIMac"/>
-      </Item367>
-      <Item368>
+      </Item359>
+      <Item360>
         <Filename Value="..\..\Interfaces\ClpIHMac.pas"/>
         <UnitName Value="ClpIHMac"/>
-      </Item368>
+      </Item360>
     </Files>
     <RequiredPkgs Count="3">
       <Item1>
-        <PackageName Value="SimpleBaseLib4PascalPackage"/>
-        <MinVersion Major="1" Minor="2" Valid="True"/>
-      </Item1>
-      <Item2>
         <PackageName Value="HashLib4PascalPackage"/>
-        <MaxVersion Major="2" Minor="3"/>
         <MinVersion Major="2" Minor="4" Valid="True"/>
+      </Item1>
+      <Item2>
+        <PackageName Value="SimpleBaseLib4PascalPackage"/>
+        <MinVersion Major="1" Minor="2" Valid="True"/>
       </Item2>
       <Item3>
         <PackageName Value="FCL"/>

+ 11 - 14
CryptoLib/src/Packages/FPC/CryptoLib4PascalPackage.pas

@@ -39,19 +39,17 @@ uses
   ClpCryptoApiRandomGenerator, ClpDigestRandomGenerator, ClpDsaDigestSigner, 
   ClpECDsaSigner, ClpRandomDsaKCalculator, ClpIAbstractECMultiplier, 
   ClpIAsn1ApplicationSpecificParser, ClpIAsn1Choice, ClpIAsn1EncodableVector, 
-  ClpIAsn1Generator, ClpIAsn1InputStream, ClpIAsn1Null, ClpIAsn1OctetString, 
-  ClpIAsn1OctetStringParser, ClpIAsn1OutputStream, ClpIAsn1Sequence, 
-  ClpIAsn1SequenceParser, ClpIAsn1Set, ClpIAsn1SetParser, 
-  ClpIAsn1StreamParser, ClpIAsn1String, ClpIAsn1TaggedObject, 
-  ClpIAsn1TaggedObjectParser, ClpIAsymmetricCipherKeyPair, 
-  ClpIAsymmetricCipherKeyPairGenerator, ClpIAsymmetricKeyParameter, 
-  ClpIBaseInputStream, ClpIBerApplicationSpecific, 
+  ClpIAsn1Generator, ClpIAsn1Null, ClpIAsn1OctetString, 
+  ClpIAsn1OctetStringParser, ClpIAsn1Sequence, ClpIAsn1SequenceParser, 
+  ClpIAsn1Set, ClpIAsn1SetParser, ClpIAsn1StreamParser, ClpIAsn1String, 
+  ClpIAsn1TaggedObject, ClpIAsn1TaggedObjectParser, 
+  ClpIAsymmetricCipherKeyPair, ClpIAsymmetricCipherKeyPairGenerator, 
+  ClpIAsymmetricKeyParameter, ClpIBerApplicationSpecific, 
   ClpIBerApplicationSpecificParser, ClpIBerBitString, ClpIBerGenerator, 
-  ClpIBerNull, ClpIBerOctetString, ClpIBerOctetStringParser, 
-  ClpIBerOutputStream, ClpIBerSequence, ClpIBerSequenceGenerator, 
-  ClpIBerSequenceParser, ClpIBerSet, ClpIBerSetParser, ClpIBerTaggedObject, 
-  ClpIBerTaggedObjectParser, ClpICipherParameters, ClpIConstructedOctetStream, 
-  ClpICryptoApiRandomGenerator, ClpIDefiniteLengthInputStream, 
+  ClpIBerNull, ClpIBerOctetString, ClpIBerOctetStringParser, ClpIBerSequence, 
+  ClpIBerSequenceGenerator, ClpIBerSequenceParser, ClpIBerSet, 
+  ClpIBerSetParser, ClpIBerTaggedObject, ClpIBerTaggedObjectParser, 
+  ClpICipherParameters, ClpICryptoApiRandomGenerator, 
   ClpIDerApplicationSpecific, ClpIDerBitString, ClpIDerBmpString, 
   ClpIDerBoolean, ClpIDerEnumerated, ClpIDerExternal, ClpIDerExternalParser, 
   ClpIDerGeneralString, ClpIDerGenerator, ClpIDerGraphicString, 
@@ -69,8 +67,7 @@ uses
   ClpIFixedPointCombMultiplier, ClpIFixedPointPreCompInfo, 
   ClpIGenericPolynomialExtensionField, ClpIGF2Polynomial, ClpIGlvEndomorphism, 
   ClpIGlvMultiplier, ClpIGlvTypeBEndomorphism, ClpIGlvTypeBParameters, 
-  ClpIIndefiniteLengthInputStream, ClpIKeyGenerationParameters, 
-  ClpILimitedInputStream, ClpIOidTokenizer, ClpIOSRandomNumberGenerator, 
+  ClpIKeyGenerationParameters, ClpIOidTokenizer, ClpIOSRandomNumberGenerator, 
   ClpIParametersWithRandom, ClpIPCGRandomNumberGenerator, ClpIPolynomial, 
   ClpIPolynomialExtensionField, ClpIPreCompInfo, ClpIPrimeField, 
   ClpIProxiedInterface, ClpIRandom, ClpIRandomDsaKCalculator, 

+ 2 - 3
CryptoLib/src/Utils/IO/ClpBaseInputStream.pas

@@ -23,11 +23,10 @@ interface
 
 uses
   Classes,
-  ClpCryptoLibTypes,
-  ClpIBaseInputStream;
+  ClpCryptoLibTypes;
 
 type
-  TBaseInputStream = class abstract(TStream, IBaseInputStream)
+  TBaseInputStream = class abstract(TStream)
 
   strict private
 

+ 2 - 2
CryptoLib/src/Utils/IO/ClpFilterStream.pas

@@ -24,8 +24,8 @@ interface
 uses
   Classes,
   ClpStreamHelper,
-  ClpDefiniteLengthInputStream,
-  ClpIFilterStream;
+  ClpIFilterStream,
+  ClpDefiniteLengthInputStream;
 
 type
   TFilterStream = class(TStream, IFilterStream)