protected override ECPoint MultiplyPositive(ECPoint p, BigInteger k) { ECCurve curve = p.Curve; ECCurve eCCurve = ConfigureCurve(curve, additionCoord); ECCurve eCCurve2 = ConfigureCurve(curve, doublingCoord); int[] array = WNafUtilities.GenerateCompactNaf(k); ECPoint eCPoint = eCCurve.Infinity; ECPoint eCPoint2 = eCCurve2.ImportPoint(p); int num = 0; foreach (int num2 in array) { int num3 = num2 >> 16; num += (num2 & 0xFFFF); eCPoint2 = eCPoint2.TimesPow2(num); ECPoint eCPoint3 = eCCurve.ImportPoint(eCPoint2); if (num3 < 0) { eCPoint3 = eCPoint3.Negate(); } eCPoint = eCPoint.Add(eCPoint3); num = 1; } return(curve.ImportPoint(eCPoint)); }
protected override ECPoint MultiplyPositive(ECPoint p, BigInteger k) { int[] array = WNafUtilities.GenerateCompactNaf(k); ECPoint eCPoint = p.Curve.Infinity; ECPoint eCPoint2 = p; int num = 0; foreach (int num2 in array) { int num3 = num2 >> 16; num += (num2 & 0xFFFF); eCPoint2 = eCPoint2.TimesPow2(num); eCPoint = eCPoint.Add((num3 < 0) ? eCPoint2.Negate() : eCPoint2); num = 1; } return(eCPoint); }
protected override ECPoint MultiplyPositive(ECPoint p, BigInteger k) { int[] array = WNafUtilities.GenerateCompactNaf(k); ECPoint eCPoint = p.Normalize(); ECPoint eCPoint2 = eCPoint.Negate(); ECPoint eCPoint3 = p.Curve.Infinity; int num = array.Length; while (--num >= 0) { int num2 = array[num]; int num3 = num2 >> 16; int e = num2 & 0xFFFF; eCPoint3 = eCPoint3.TwicePlus((num3 < 0) ? eCPoint2 : eCPoint); eCPoint3 = eCPoint3.TimesPow2(e); } return(eCPoint3); }
protected override ECPoint MultiplyPositive(ECPoint p, BigInteger k) { int[] naf = WNafUtilities.GenerateCompactNaf(k); ECPoint addP = p.Normalize(), subP = addP.Negate(); ECPoint R = p.Curve.Infinity; int i = naf.Length; while (--i >= 0) { int ni = naf[i]; int digit = ni >> 16, zeroes = ni & 0xFFFF; R = R.TwicePlus(digit < 0 ? subP : addP); R = R.TimesPow2(zeroes); } return(R); }
protected override ECPoint MultiplyPositive(ECPoint p, BigInteger k) { int[] naf = WNafUtilities.GenerateCompactNaf(k); ECPoint R0 = p.Curve.Infinity, R1 = p; int zeroes = 0; for (int i = 0; i < naf.Length; ++i) { int ni = naf[i]; int digit = ni >> 16; zeroes += ni & 0xFFFF; R1 = R1.TimesPow2(zeroes); R0 = R0.Add(digit < 0 ? R1.Negate() : R1); zeroes = 1; } return(R0); }