Browse Source

Minor refactoring in mulAddTo methods

Ugochukwu Mmaduekwe 6 years ago
parent
commit
ad9a00074d

+ 28 - 28
CryptoLib/src/Math/Raw/ClpNat.pas

@@ -100,9 +100,9 @@ type
       xOff: Int32; const z: TCryptoLibUInt32Array; zOff: Int32);
       xOff: Int32; const z: TCryptoLibUInt32Array; zOff: Int32);
       overload; static;
       overload; static;
 
 
-    class procedure CMov(len, mask: Int32; const x: TCryptoLibInt32Array;
-      xOff: Int32; const z: TCryptoLibInt32Array; zOff: Int32);
-      overload; static;
+    // class procedure CMov(len, mask: Int32; const x: TCryptoLibInt32Array;
+    // xOff: Int32; const z: TCryptoLibInt32Array; zOff: Int32);
+    // overload; static;
 
 
     class procedure Copy(len: Int32; const x, z: TCryptoLibUInt32Array);
     class procedure Copy(len: Int32; const x, z: TCryptoLibUInt32Array);
       overload; static; inline;
       overload; static; inline;
@@ -927,21 +927,21 @@ begin
   end;
   end;
 end;
 end;
 
 
-class procedure TNat.CMov(len, mask: Int32; const x: TCryptoLibInt32Array;
-  xOff: Int32; const z: TCryptoLibInt32Array; zOff: Int32);
-var
-  z_i, diff, I: Int32;
-begin
-  mask := -(mask and 1);
-
-  for I := 0 to System.Pred(len) do
-  begin
-    z_i := z[zOff + I];
-    diff := z_i xor x[xOff + I];
-    z_i := z_i xor ((diff and mask));
-    z[zOff + I] := z_i;
-  end;
-end;
+// class procedure TNat.CMov(len, mask: Int32; const x: TCryptoLibInt32Array;
+// xOff: Int32; const z: TCryptoLibInt32Array; zOff: Int32);
+// var
+// z_i, diff, I: Int32;
+// begin
+// mask := -(mask and 1);
+//
+// for I := 0 to System.Pred(len) do
+// begin
+// z_i := z[zOff + I];
+// diff := z_i xor x[xOff + I];
+// z_i := z_i xor ((diff and mask));
+// z[zOff + I] := z_i;
+// end;
+// end;
 
 
 class function TNat.Copy(len: Int32; const x: TCryptoLibUInt32Array)
 class function TNat.Copy(len: Int32; const x: TCryptoLibUInt32Array)
   : TCryptoLibUInt32Array;
   : TCryptoLibUInt32Array;
@@ -1268,16 +1268,16 @@ end;
 class function TNat.MulAddTo(len: Int32;
 class function TNat.MulAddTo(len: Int32;
   const x, y, zz: TCryptoLibUInt32Array): UInt32;
   const x, y, zz: TCryptoLibUInt32Array): UInt32;
 var
 var
-  zc, c: UInt64;
+  zc: UInt64;
   I: Int32;
   I: Int32;
 begin
 begin
   zc := 0;
   zc := 0;
   for I := 0 to System.Pred(len) do
   for I := 0 to System.Pred(len) do
   begin
   begin
-    c := MulWordAddTo(len, x[I], y, 0, zz, I) and M;
-    c := c + (zc + (zz[I + len] and M));
-    zz[I + len] := UInt32(c);
-    zc := c shr 32;
+    zc := zc + (MulWordAddTo(len, x[I], y, 0, zz, I) and M);
+    zc := zc + (zz[I + len] and M);
+    zz[I + len] := UInt32(zc);
+    zc := zc shr 32;
   end;
   end;
   Result := UInt32(zc);
   Result := UInt32(zc);
 end;
 end;
@@ -1286,16 +1286,16 @@ class function TNat.MulAddTo(len: Int32; const x: TCryptoLibUInt32Array;
   xOff: Int32; const y: TCryptoLibUInt32Array; yOff: Int32;
   xOff: Int32; const y: TCryptoLibUInt32Array; yOff: Int32;
   const zz: TCryptoLibUInt32Array; zzOff: Int32): UInt32;
   const zz: TCryptoLibUInt32Array; zzOff: Int32): UInt32;
 var
 var
-  zc, c: UInt64;
+  zc: UInt64;
   I: Int32;
   I: Int32;
 begin
 begin
   zc := 0;
   zc := 0;
   for I := 0 to System.Pred(len) do
   for I := 0 to System.Pred(len) do
   begin
   begin
-    c := MulWordAddTo(len, x[xOff + I], y, yOff, zz, zzOff) and M;
-    c := c + (zc + (zz[zzOff + len] and M));
-    zz[zzOff + len] := UInt32(c);
-    zc := c shr 32;
+    zc := zc + (MulWordAddTo(len, x[xOff + I], y, yOff, zz, zzOff) and M);
+    zc := zc + (zz[zzOff + len] and M);
+    zz[zzOff + len] := UInt32(zc);
+    zc := zc shr 32;
     System.Inc(zzOff);
     System.Inc(zzOff);
   end;
   end;
   Result := UInt32(zc);
   Result := UInt32(zc);

+ 6 - 6
CryptoLib/src/Math/Raw/ClpNat192.pas

@@ -760,9 +760,9 @@ begin
     c := c + (x_i * y_5 + zz[i + 5]);
     c := c + (x_i * y_5 + zz[i + 5]);
     zz[i + 5] := UInt32(c);
     zz[i + 5] := UInt32(c);
     c := c shr 32;
     c := c shr 32;
-    c := c + (zc + zz[i + 6]);
-    zz[i + 6] := UInt32(c);
-    zc := c shr 32;
+    zc := zc + (c + (zz[i + 6] and M));
+    zz[i + 6] := UInt32(zc);
+    zc := zc shr 32;
   end;
   end;
   result := UInt32(zc);
   result := UInt32(zc);
 end;
 end;
@@ -804,9 +804,9 @@ begin
     c := c + (x_i * y_5 + zz[zzOff + 5]);
     c := c + (x_i * y_5 + zz[zzOff + 5]);
     zz[zzOff + 5] := UInt32(c);
     zz[zzOff + 5] := UInt32(c);
     c := c shr 32;
     c := c shr 32;
-    c := c + (zc + zz[zzOff + 6]);
-    zz[zzOff + 6] := UInt32(c);
-    zc := c shr 32;
+    zc := zc + (c + (zz[zzOff + 6] and M));
+    zz[zzOff + 6] := UInt32(zc);
+    zc := zc shr 32;
     System.Inc(zzOff);
     System.Inc(zzOff);
   end;
   end;
   result := UInt32(zc);
   result := UInt32(zc);

+ 6 - 6
CryptoLib/src/Math/Raw/ClpNat256.pas

@@ -908,9 +908,9 @@ begin
     c := c + (x_i * y_7 + zz[i + 7]);
     c := c + (x_i * y_7 + zz[i + 7]);
     zz[i + 7] := UInt32(c);
     zz[i + 7] := UInt32(c);
     c := c shr 32;
     c := c shr 32;
-    c := c + (zc + zz[i + 8]);
-    zz[i + 8] := UInt32(c);
-    zc := c shr 32;
+    zc := zc + (c + (zz[i + 8] and M));
+    zz[i + 8] := UInt32(zc);
+    zc := zc shr 32;
   end;
   end;
   result := UInt32(zc);
   result := UInt32(zc);
 end;
 end;
@@ -960,9 +960,9 @@ begin
     c := c + (x_i * y_7 + zz[zzOff + 7]);
     c := c + (x_i * y_7 + zz[zzOff + 7]);
     zz[zzOff + 7] := UInt32(c);
     zz[zzOff + 7] := UInt32(c);
     c := c shr 32;
     c := c shr 32;
-    c := c + (zc + zz[zzOff + 8]);
-    zz[zzOff + 8] := UInt32(c);
-    zc := c shr 32;
+    zc := zc + (c + (zz[zzOff + 8] and M));
+    zz[zzOff + 8] := UInt32(zc);
+    zc := zc shr 32;
     System.Inc(zzOff);
     System.Inc(zzOff);
   end;
   end;
   result := UInt32(zc);
   result := UInt32(zc);