|
|
@@ -100,9 +100,9 @@ type
|
|
|
xOff: Int32; const z: TCryptoLibUInt32Array; zOff: Int32);
|
|
|
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);
|
|
|
overload; static; inline;
|
|
|
@@ -927,21 +927,21 @@ begin
|
|
|
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)
|
|
|
: TCryptoLibUInt32Array;
|
|
|
@@ -1268,16 +1268,16 @@ end;
|
|
|
class function TNat.MulAddTo(len: Int32;
|
|
|
const x, y, zz: TCryptoLibUInt32Array): UInt32;
|
|
|
var
|
|
|
- zc, c: UInt64;
|
|
|
+ zc: UInt64;
|
|
|
I: Int32;
|
|
|
begin
|
|
|
zc := 0;
|
|
|
for I := 0 to System.Pred(len) do
|
|
|
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;
|
|
|
Result := UInt32(zc);
|
|
|
end;
|
|
|
@@ -1286,16 +1286,16 @@ class function TNat.MulAddTo(len: Int32; const x: TCryptoLibUInt32Array;
|
|
|
xOff: Int32; const y: TCryptoLibUInt32Array; yOff: Int32;
|
|
|
const zz: TCryptoLibUInt32Array; zzOff: Int32): UInt32;
|
|
|
var
|
|
|
- zc, c: UInt64;
|
|
|
+ zc: UInt64;
|
|
|
I: Int32;
|
|
|
begin
|
|
|
zc := 0;
|
|
|
for I := 0 to System.Pred(len) do
|
|
|
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);
|
|
|
end;
|
|
|
Result := UInt32(zc);
|