static ECPoint validate(ECCurve c, ECPoint q) { if (q == null) { throw new IllegalArgumentException("Point has null value"); } q = ECAlgorithms.importPoint(c, q).normalize(); if (q.isInfinity()) { throw new IllegalArgumentException("Point at infinity"); } if (!q.isValid()) { throw new IllegalArgumentException("Point not on curve"); } return q; } }
public static ECPoint shamirsTrick(ECPoint P, BigInteger k, ECPoint Q, BigInteger l) { ECCurve cp = P.getCurve(); Q = importPoint(cp, Q); return implCheckResult(implShamirsTrickJsf(P, k, Q, l)); }
public static ECPoint shamirsTrick(ECPoint P, BigInteger k, ECPoint Q, BigInteger l) { ECCurve cp = P.getCurve(); Q = importPoint(cp, Q); return validatePoint(implShamirsTrickJsf(P, k, Q, l)); }
ECAlgorithms.importPoint(curve, Q2U == null ? parameters.getG().multiply(d2U.getD()) : Q2U.getQ()), ECAlgorithms.importPoint(curve, Q1V.getQ()), ECAlgorithms.importPoint(curve, Q2V.getQ()) };
for (int i = 1; i < count; ++i) imported[i] = importPoint(c, ps[i]);
for (int i = 1; i < count; ++i) imported[i] = importPoint(c, ps[i]);
public static ECPoint sumOfTwoMultiplies(ECPoint P, BigInteger a, ECPoint Q, BigInteger b) { ECCurve cp = P.getCurve(); Q = importPoint(cp, Q); // Point multiplication for Koblitz curves (using WTNAF) beats Shamir's trick if (cp instanceof ECCurve.F2m) { ECCurve.F2m f2mCurve = (ECCurve.F2m)cp; if (f2mCurve.isKoblitz()) { return validatePoint(P.multiply(a).add(Q.multiply(b))); } } ECEndomorphism endomorphism = cp.getEndomorphism(); if (endomorphism instanceof GLVEndomorphism) { return validatePoint( implSumOfMultipliesGLV(new ECPoint[]{ P, Q }, new BigInteger[]{ a, b }, (GLVEndomorphism)endomorphism)); } return validatePoint(implShamirsTrickWNaf(P, a, Q, b)); }
public static ECPoint sumOfTwoMultiplies(ECPoint P, BigInteger a, ECPoint Q, BigInteger b) { ECCurve cp = P.getCurve(); Q = importPoint(cp, Q); // Point multiplication for Koblitz curves (using WTNAF) beats Shamir's trick if (cp instanceof ECCurve.AbstractF2m) { ECCurve.AbstractF2m f2mCurve = (ECCurve.AbstractF2m)cp; if (f2mCurve.isKoblitz()) { return implCheckResult(P.multiply(a).add(Q.multiply(b))); } } ECEndomorphism endomorphism = cp.getEndomorphism(); if (endomorphism instanceof GLVEndomorphism) { return implCheckResult( implSumOfMultipliesGLV(new ECPoint[]{ P, Q }, new BigInteger[]{ a, b }, (GLVEndomorphism)endomorphism)); } return implCheckResult(implShamirsTrickWNaf(P, a, Q, b)); }