|
@@ -327,7 +327,7 @@ type
|
|
|
bSquared: IECFieldElement): IECFieldElement; virtual;
|
|
bSquared: IECFieldElement): IECFieldElement; virtual;
|
|
|
|
|
|
|
|
function CalculateJacobianModifiedW(const Z: IECFieldElement;
|
|
function CalculateJacobianModifiedW(const Z: IECFieldElement;
|
|
|
- ZSquared: IECFieldElement): IECFieldElement; virtual;
|
|
|
|
|
|
|
+ const ZSquared: IECFieldElement): IECFieldElement; virtual;
|
|
|
|
|
|
|
|
function GetJacobianModifiedW(): IECFieldElement; virtual;
|
|
function GetJacobianModifiedW(): IECFieldElement; virtual;
|
|
|
|
|
|
|
@@ -2182,23 +2182,24 @@ begin
|
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
function TFpPoint.CalculateJacobianModifiedW(const Z: IECFieldElement;
|
|
function TFpPoint.CalculateJacobianModifiedW(const Z: IECFieldElement;
|
|
|
- ZSquared: IECFieldElement): IECFieldElement;
|
|
|
|
|
|
|
+ const ZSquared: IECFieldElement): IECFieldElement;
|
|
|
var
|
|
var
|
|
|
- a4, W, a4Neg: IECFieldElement;
|
|
|
|
|
|
|
+ a4, W, a4Neg, LZSquared: IECFieldElement;
|
|
|
begin
|
|
begin
|
|
|
a4 := curve.a;
|
|
a4 := curve.a;
|
|
|
|
|
+ LZSquared := ZSquared;
|
|
|
if ((a4.IsZero) or (Z.IsOne)) then
|
|
if ((a4.IsZero) or (Z.IsOne)) then
|
|
|
begin
|
|
begin
|
|
|
result := a4;
|
|
result := a4;
|
|
|
Exit;
|
|
Exit;
|
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
- if (ZSquared = Nil) then
|
|
|
|
|
|
|
+ if (LZSquared = Nil) then
|
|
|
begin
|
|
begin
|
|
|
- ZSquared := Z.Square();
|
|
|
|
|
|
|
+ LZSquared := Z.Square();
|
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
- W := ZSquared.Square();
|
|
|
|
|
|
|
+ W := LZSquared.Square();
|
|
|
a4Neg := a4.Negate();
|
|
a4Neg := a4.Negate();
|
|
|
if (a4Neg.BitLength < a4.BitLength) then
|
|
if (a4Neg.BitLength < a4.BitLength) then
|
|
|
begin
|
|
begin
|