Jelajahi Sumber

minor refactoring to ECSchnorr

Ugochukwu Mmaduekwe 7 tahun lalu
induk
melakukan
1864923602

+ 15 - 8
CryptoLib.Tests/src/Others/ECSchnorrTests.pas

@@ -34,6 +34,8 @@ uses
 {$ENDIF FPC}
 {$ENDIF FPC}
   ClpSecureRandom,
   ClpSecureRandom,
   ClpISecureRandom,
   ClpISecureRandom,
+  ClpFixedSecureRandom,
+  ClpIFixedSecureRandom,
   ClpECSchnorrSigner,
   ClpECSchnorrSigner,
   ClpIECSchnorrSigner,
   ClpIECSchnorrSigner,
   ClpISigner,
   ClpISigner,
@@ -46,6 +48,8 @@ uses
   ClpIECKeyPairGenerator,
   ClpIECKeyPairGenerator,
   ClpECKeyPairGenerator,
   ClpECKeyPairGenerator,
   ClpIECKeyGenerationParameters,
   ClpIECKeyGenerationParameters,
+  ClpIParametersWithRandom,
+  ClpParametersWithRandom,
   ClpECKeyGenerationParameters,
   ClpECKeyGenerationParameters,
   ClpIAsymmetricCipherKeyPair,
   ClpIAsymmetricCipherKeyPair,
   ClpIX9ECParameters,
   ClpIX9ECParameters,
@@ -304,7 +308,8 @@ var
   point: IECPoint;
   point: IECPoint;
   LCurve: IX9ECParameters;
   LCurve: IX9ECParameters;
   signer: ISigner;
   signer: ISigner;
-  k: TBigInteger;
+  k: ISecureRandom;
+  param: IParametersWithRandom;
 begin
 begin
 
 
   LCurve := TSecNamedCurves.GetByName('secp256k1');
   LCurve := TSecNamedCurves.GetByName('secp256k1');
@@ -333,11 +338,18 @@ begin
   RegeneratedPrivateKey := TECPrivateKeyParameters.Create('ECSCHNORR',
   RegeneratedPrivateKey := TECPrivateKeyParameters.Create('ECSCHNORR',
     TBigInteger.Create(PrivateKeyByteArray), domain);
     TBigInteger.Create(PrivateKeyByteArray), domain);
 
 
+  k := TFixedSecureRandom.From(TCryptoLibMatrixByteArray.Create
+    (TBigInteger.Create
+    ('4242424242424242424242424242424242424242424242424242424242424242',
+    16).ToByteArrayUnsigned()));
+
+  param := TParametersWithRandom.Create(RegeneratedPrivateKey, k);
+
   signer := TSignerUtilities.GetSigner('SHA-256withECSCHNORRLIBSECP');
   signer := TSignerUtilities.GetSigner('SHA-256withECSCHNORRLIBSECP');
 
 
   // sign
   // sign
 
 
-  signer.Init(true, RegeneratedPrivateKey);
+  signer.Init(true, param);
 
 
   &message := TBigInteger.Create
   &message := TBigInteger.Create
     ('0101010101010101010101010101010101010101010101010101010101010101', 16)
     ('0101010101010101010101010101010101010101010101010101010101010101', 16)
@@ -345,12 +357,7 @@ begin
 
 
   signer.BlockUpdate(&message, 0, System.Length(&message));
   signer.BlockUpdate(&message, 0, System.Length(&message));
 
 
-  k := TBigInteger.Create
-    ('4242424242424242424242424242424242424242424242424242424242424242', 16);
-
-  // cast ISigner instance to be able to access specific method for test purposees.
-  // do not do this.
-  sigBytes := (signer as IECSchnorrSigner).Sign_K(RegeneratedPrivateKey, k);
+  sigBytes := signer.GenerateSignature();
 
 
   // verify
   // verify
 
 

+ 0 - 24
CryptoLib/src/Crypto/Signers/ClpECSchnorrSigner.pas

@@ -64,24 +64,6 @@ type
 
 
     function Aggregate: TCryptoLibByteArray; inline;
     function Aggregate: TCryptoLibByteArray; inline;
 
 
-    /// <summary>
-    /// <para>
-    /// Warning...
-    /// </para>
-    /// <para>
-    /// do not use this method, it was exposed solely for testing
-    /// purposes.
-    /// </para>
-    /// </summary>
-    /// <param name="pv_key">
-    /// private key
-    /// </param>
-    /// <param name="k">
-    /// known random number
-    /// </param>
-    function Sign_K(const pv_key: IECPrivateKeyParameters; const k: TBigInteger)
-      : TCryptoLibByteArray;
-
   public
   public
 
 
     function Do_Sign(const pv_key: IECPrivateKeyParameters;
     function Do_Sign(const pv_key: IECPrivateKeyParameters;
@@ -360,12 +342,6 @@ begin
   FBuffer.SetSize(0);
   FBuffer.SetSize(0);
 end;
 end;
 
 
-function TECSchnorrSigner.Sign_K(const pv_key: IECPrivateKeyParameters;
-  const k: TBigInteger): TCryptoLibByteArray;
-begin
-  Result := Do_Sign(pv_key, k);
-end;
-
 procedure TECSchnorrSigner.Update(input: Byte);
 procedure TECSchnorrSigner.Update(input: Byte);
 begin
 begin
   FBuffer.Write(TCryptoLibByteArray.Create(input)[0], 1);
   FBuffer.Write(TCryptoLibByteArray.Create(input)[0], 1);

+ 0 - 18
CryptoLib/src/Interfaces/ClpIECSchnorrSigner.pas

@@ -38,24 +38,6 @@ type
     function Do_Verify(const pu_key: IECPublicKeyParameters;
     function Do_Verify(const pu_key: IECPublicKeyParameters;
       sig: TCryptoLibByteArray): Boolean;
       sig: TCryptoLibByteArray): Boolean;
 
 
-    /// <summary>
-    /// <para>
-    /// Warning...
-    /// </para>
-    /// <para>
-    /// do not use this method, it was exposed solely for testing
-    /// purposes.
-    /// </para>
-    /// </summary>
-    /// <param name="pv_key">
-    /// private key
-    /// </param>
-    /// <param name="k">
-    /// known random number
-    /// </param>
-    function Sign_K(const pv_key: IECPrivateKeyParameters; const k: TBigInteger)
-      : TCryptoLibByteArray;
-
   end;
   end;
 
 
 implementation
 implementation