Esempio n. 1
0
 public ECMParams(CurveType curve, CoordinatesType coordinates, TorsionType torsion,
                  bool autoApprox, int curves, int B1, int B2)
 {
     this.curveType         = curve;
     this.coordinatesType   = coordinates;
     this.torsionType       = torsion;
     this.autoApproximation = autoApprox;
     this.curves            = curves;
     this.B1 = B1;
     this.B2 = B2;
 }
Esempio n. 2
0
        }//inverted

        public static BigInteger GetFactorExtended(BigInteger n, int B1, int B2, TorsionType type)
        {
            BigInteger x, y;
            var        E = GenerateCurve(n, out x, out y, type);
            var        P = new PointEdwardsExtended(x, y, E);

            //STEP 1
            var P1     = P as IPoint;
            var result = StageOneEdwardsProjective(ref P1, n, B1);

            if (result > 1 || result == 0)
            {
                return(result);
            }

            //STEP 2
            result = StageTwoEdwardsProjective(ref P1, n, B1, B2);

            return(result);
        }//extended
Esempio n. 3
0
        public static BigInteger GetFactorProjective(BigInteger n, int B1, int B2, TorsionType type)
        {
            BigInteger x;
            BigInteger y;
            var        E = GenerateCurve(n, out x, out y, type);
            var        P = new PointMontgomery(x, y, E);
            //STEP 1
            var P1     = P as IPoint;
            var result = StageOneProjective(ref P1, n, B1);

            if (result > 1 || result == 0)
            {
                return(result);
            }

            //STEP 2
            result = StageTwoProjective2(ref P1, n, B1, B2);

            return(result);
        }//Montgomery
Esempio n. 4
0
        }//extended

        private static EllipticCurveEdwards GenerateCurve(BigInteger n, out BigInteger x, out BigInteger y, TorsionType type)
        {
            switch (type)
            {
            case TorsionType.RandomCurve:
                return(EllipticCurveEdwards.GenerateCurveRandom(n, out x, out y));

            case TorsionType.Curve12:
                return(EllipticCurveEdwards.GenerateCurve12(n, out x, out y));

            case TorsionType.Curve2x8:
                return(EllipticCurveEdwards.GenerateCurve2x8(n, out x, out y));

            case TorsionType.Curve12FromFile:
                return(EllipticCurveEdwards.GetCurve(n, out x, out y, "curve12.txt"));

            case TorsionType.Curve2x8FromFile:
                return(EllipticCurveEdwards.GetCurve(n, out x, out y, "curve2x8.txt"));

            default:
                return(EllipticCurveEdwards.GenerateCurveRandom(n, out x, out y));
            }
        }
Esempio n. 5
0
        }//Montgomery

        private static EllipticCurveMontgomery GenerateCurve(BigInteger n, out BigInteger x, out BigInteger y, TorsionType type)
        {
            switch (type)
            {
            case TorsionType.RandomCurve:
                return(EllipticCurveMontgomery.GenerateCurveRandom(n, out x, out y));

            case TorsionType.Curve6:
                return(EllipticCurveMontgomery.GenerateCurve6(n, out x, out y));

            default:
                return(EllipticCurveMontgomery.GenerateCurveRandom(n, out x, out y));
            }
        }