Esempio n. 1
0
        static ECDomainParameters Create_secp160r2()
        {
            Number     p     = new Number(new uint[] { 4294945907, 4294967294, 4294967295, 4294967295, 4294967295 });
            Number     a     = new Number(new uint[] { 4294945904, 4294967294, 4294967295, 4294967295, 4294967295 });
            Number     b     = new Number(new uint[] { 4110649530, 73813338, 2874615625, 4216974219, 3034658003 });
            Number     gX    = new Number(new uint[] { 826592877, 821500317, 525332763, 691671422, 1390194740 });
            Number     gY    = new Number(new uint[] { 2815704878, 4187499774, 3765565965, 3811701398, 4272946930 });
            Number     order = new Number(new uint[] { 4087456107, 3884361752, 13598, 0, 0, 1 });
            Montgomery mont  = new Montgomery(p);

            return(Create(a, b, gX, gY, order, 1, mont, _oidReverseMap[ECDomainNames.secp160r2]));
        }
Esempio n. 2
0
        static ECDomainParameters Create_secp128r2()
        {
            Number     p     = new Number(new uint[] { 4294967295, 4294967295, 4294967295, 4294967293 });
            Number     a     = new Number(new uint[] { 3220811489, 3210333339, 3518217214, 3590527384 });
            Number     b     = new Number(new uint[] { 3144518237, 3693897048, 2161125657, 1592720547 });
            Number     gX    = new Number(new uint[] { 3454779712, 3875222183, 1582770563, 2070586840 });
            Number     gY    = new Number(new uint[] { 1606634308, 1896283776, 2303539950, 666276202 });
            Number     order = new Number(new uint[] { 101954979, 3187680370, 2147483647, 1073741823 });
            Montgomery mont  = new Montgomery(p);

            return(Create(a, b, gX, gY, order, 4, mont, _oidReverseMap[ECDomainNames.secp128r2]));
        }
Esempio n. 3
0
        static ECDomainParameters Create_secp160r1()
        {
            Number     p     = new Number(new uint[] { 2147483647, 4294967295, 4294967295, 4294967295, 4294967295 });
            Number     a     = new Number(new uint[] { 2147483644, 4294967295, 4294967295, 4294967295, 4294967295 });
            Number     b     = new Number(new uint[] { 3311794757, 2178208941, 1705834655, 1421703819, 479706876 });
            Number     gX    = new Number(new uint[] { 332135554, 1757645753, 1180985737, 2398450472, 1251390824 });
            Number     gY    = new Number(new uint[] { 2059795250, 69423415, 1507641618, 828937341, 598091861 });
            Number     order = new Number(new uint[] { 3396674135, 4180127443, 128200, 0, 0, 1 });
            Montgomery mont  = new Montgomery(p);

            return(Create(a, b, gX, gY, order, 1, mont, _oidReverseMap[ECDomainNames.secp160r1]));
        }
Esempio n. 4
0
        static ECDomainParameters Create_secp128r1()
        {
            Number     p     = new Number(new uint[] { 4294967295, 4294967295, 4294967295, 4294967293 });
            Number     a     = new Number(new uint[] { 4294967292, 4294967295, 4294967295, 4294967293 });
            Number     b     = new Number(new uint[] { 753819347, 3626277180, 276427837, 3900012993 });
            Number     gX    = new Number(new uint[] { 2771147654, 203972732, 2341051181, 371193682 });
            Number     gY    = new Number(new uint[] { 3723328131, 3224216210, 1538255635, 3478833209 });
            Number     order = new Number(new uint[] { 2419630357, 1973619995, 0, 4294967294 });
            Montgomery mont  = new Montgomery(p);

            return(Create(a, b, gX, gY, order, 1, mont, _oidReverseMap[ECDomainNames.secp128r1]));
        }
Esempio n. 5
0
        static ECDomainParameters Create_secp112r2()
        {
            Number     p     = new Number(new uint[] { 3199017099, 1583775862, 717185763, 56188 });
            Number     a     = new Number(new uint[] { 1544482860, 2315954934, 3259762163, 24871 });
            Number     b     = new Number(new uint[] { 1283839753, 3983867075, 4051787189, 20958 });
            Number     gX    = new Number(new uint[] { 3499263555, 3034670237, 179693714, 19363 });
            Number     gY    = new Number(new uint[] { 1855286935, 927457011, 1190496302, 44493 });
            Number     order = new Number(new uint[] { 86036555, 3612966049, 179296440, 14047 });
            Montgomery mont  = new Montgomery(p);

            return(Create(a, b, gX, gY, order, 4, mont, _oidReverseMap[ECDomainNames.secp112r2]));
        }
Esempio n. 6
0
        static ECDomainParameters Create_secp112r1()
        {
            Number     p     = new Number(new uint[] { 3199017099, 1583775862, 717185763, 56188 });
            Number     a     = new Number(new uint[] { 3199017096, 1583775862, 717185763, 56188 });
            Number     b     = new Number(new uint[] { 292563746, 384753289, 4172940345, 26014 });
            Number     gX    = new Number(new uint[] { 4190302360, 1592224597, 1916377434, 2376 });
            Number     gY    = new Number(new uint[] { 267875584, 3231858190, 3853485860, 43164 });
            Number     order = new Number(new uint[] { 2892325317, 1584802015, 717185763, 56188 });
            Montgomery mont  = new Montgomery(p);

            return(Create(a, b, gX, gY, order, 1, mont, _oidReverseMap[ECDomainNames.secp112r1]));
        }
Esempio n. 7
0
        public void SqrtTest()
        {
            IFiniteField[] ffList = new IFiniteField[2];
            ffList[0] = new SECP192r1();
            ffList[1] = new Montgomery(ffList[0].Modulus);
            int repeats = 10;

            foreach (IFiniteField ff in ffList)
            {
                for (int i = 0; i < repeats; i++)
                {
                    Number x    = ff.ToElement(Number.CreateRandomElement(ff.Modulus));
                    Number xx   = ff.Multiply(x, x);
                    Number sqrt = ff.Sqrt(xx);
                    Assert.IsTrue(ff.Multiply(sqrt, sqrt).CompareTo(xx) == 0);
                }
            }
        }
Esempio n. 8
0
 public void PowTest()
 {
     IFiniteField[] ffList = new IFiniteField[2];
     ffList[0] = new SECP192r1();
     ffList[1] = new Montgomery(ffList[0].Modulus);
     foreach (IFiniteField ff in ffList)
     {
         Number x    = ff.ToElement(Number.CreateRandomElement(ff.Modulus));
         Number pow2 = ff.Multiply(x, x);
         Number pow3 = ff.Multiply(pow2, x);
         Number pow4 = ff.Multiply(pow3, x);
         Assert.IsTrue(ff.Pow(x, Number.Zero).CompareTo(ff.ToElement(Number.One)) == 0);
         Assert.IsTrue(ff.Pow(x, Number.One).CompareTo(x) == 0);
         Assert.IsTrue(ff.Pow(x, Number.Two).CompareTo(pow2) == 0);
         Assert.IsTrue(ff.Pow(x, Number.Three).CompareTo(pow3) == 0);
         Assert.IsTrue(ff.Pow(x, Number.Four).CompareTo(pow4) == 0);
     }
 }