Exemple #1
0
        public void ToByteArrayTest()
        {
            ECDomainParameters domain = ECDomains.GetDomainParameter(ECDomainNames.secp192r1);
            ECGroup            group  = domain.Group;
            ECPoint            p      = domain.Group.FiniteField.GetInfinityPoint(group);
            ECPoint            g      = domain.G.Export();

            byte[] tmp = p.ToByteArray(true);
            Assert.IsTrue(tmp.Length == 1, "#1");
            Assert.IsTrue(tmp[0] == 0, "#2");
            p = new ECPoint(group, tmp);
            Assert.IsTrue(p.IsInifinity(), "#3");

            tmp = domain.G.ToByteArray(false);
            Assert.IsTrue(tmp.Length == ((domain.Bits >> 3) + ((domain.Bits & 7) == 0 ? 0 : 1)) * 2 + 1, "#4");
            p = new ECPoint(group, tmp).Export();
            Assert.IsTrue(p.X.CompareTo(g.X) == 0, "#5");
            Assert.IsTrue(p.Y.CompareTo(g.Y) == 0, "#6");

            tmp = domain.G.ToByteArray(true);
            Assert.IsTrue(tmp.Length == ((domain.Bits >> 3) + ((domain.Bits & 7) == 0 ? 0 : 1)) + 1, "#7");
            p = new ECPoint(group, tmp).Export();
            Assert.IsTrue(p.X.CompareTo(g.X) == 0, "#8");
            Assert.IsTrue(p.Y.CompareTo(g.Y) == 0, "#9");
        }
Exemple #2
0
 public ECIES(ECDomainNames name)
 {
     _domain = ECDomains.GetDomainParameter(name);
     _kdf    = new ANSI_X963_KDF(new SHA1Managed());
     _params = new ECIESParameters(_domain);
     _mac    = new HMACSHA1();
 }
Exemple #3
0
        public void Test_secp256r1()
        {
            ECDomainParameters domain = ECDomains.GetDomainParameter(ECDomainNames.secp256r1);

            Test("FFFFFFFF 00000001 00000000 00000000 00000000 FFFFFFFF FFFFFFFF FFFFFFFF",
                 "FFFFFFFF 00000001 00000000 00000000 00000000 FFFFFFFF FFFFFFFF FFFFFFFC",
                 "5AC635D8 AA3A93E7 B3EBBD55 769886BC 651D06B0 CC53B0F6 3BCE3C3E 27D2604B",
                 "6B17D1F2 E12C4247 F8BCE6E5 63A440F2 77037D81 2DEB33A0 F4A13945 D898C296",
                 "4FE342E2 FE1A7F9B 8EE7EB4A 7C0F9E16 2BCE3357 6B315ECE CBB64068 37BF51F5",
                 "FFFFFFFF 00000000 FFFFFFFF FFFFFFFF BCE6FAAD A7179E84 F3B9CAC2 FC632551",
                 1, domain);
        }
Exemple #4
0
        public void Test_secp521r1()
        {
            ECDomainParameters domain = ECDomains.GetDomainParameter(ECDomainNames.secp521r1);

            Test("01FF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF",
                 "01FF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC",
                 "0051 953EB961 8E1C9A1F 929A21A0 B68540EE A2DA725B 99B315F3 B8B48991 8EF109E1 56193951 EC7E937B 1652C0BD 3BB1BF07 3573DF88 3D2C34F1 EF451FD4 6B503F00",
                 "00C6858E 06B70404 E9CD9E3E CB662395 B4429C64 8139053F B521F828 AF606B4D 3DBAA14B 5E77EFE7 5928FE1D C127A2FF A8DE3348 B3C1856A 429BF97E 7E31C2E5 BD66",
                 "0118 39296A78 9A3BC004 5C8A5FB4 2C7D1BD9 98F54449 579B4468 17AFBD17 273E662C 97EE7299 5EF42640 C550B901 3FAD0761 353C7086 A272C240 88BE9476 9FD16650",
                 "01FF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFA 51868783 BF2F966B 7FCC0148 F709A5D0 3BB5C9B8 899C47AE BB6FB71E 91386409",
                 1, domain);
        }
Exemple #5
0
        public void Test_secp192r1()
        {
            ECDomainParameters domain = ECDomains.GetDomainParameter(ECDomainNames.secp192r1);

            Test("FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFFFF FFFFFFFF",
                 "FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFFFF FFFFFFFC",
                 "64210519 E59C80E7 0FA7E9AB 72243049 FEB8DEEC C146B9B1",
                 "188DA80E B03090F6 7CBF20EB 43A18800 F4FF0AFD 82FF1012",
                 " 7192B95 FFC8DA78 631011ED 6B24CDD5 73F977A1 1E794811",
                 "FFFFFFFF FFFFFFFF FFFFFFFF 99DEF836 146BC9B1 B4D22831",
                 1, domain);
        }
Exemple #6
0
        public void Test_secp160r2()
        {
            ECDomainParameters domain = ECDomains.GetDomainParameter(ECDomainNames.secp160r2);

            Test("FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFAC73",
                 "FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFAC70",
                 "B4E134D3 FB59EB8B AB572749 04664D5A F50388BA",
                 "52DCB034 293A117E 1F4FF11B 30F7199D 3144CE6D",
                 "FEAFFEF2 E331F296 E071FA0D F9982CFE A7D43F2E",
                 "01 00000000 00000000 0000351E E786A818 F3A1A16B",
                 1, domain);
        }
Exemple #7
0
        public void Test_secp112r1()
        {
            ECDomainParameters domain = ECDomains.GetDomainParameter(ECDomainNames.secp112r1);

            Test("DB7C 2ABF62E3 5E668076 BEAD208B",
                 "DB7C 2ABF62E3 5E668076 BEAD2088",
                 "659E F8BA0439 16EEDE89 11702B22",
                 "09487239 995A5EE7 6B55F9C2 F098",
                 "A89C E5AF8724 C0A23E0E 0FF77500",
                 "DB7C 2ABF62E3 5E7628DF AC6561C5",
                 1, domain);
        }
Exemple #8
0
        public void Test_secp112r2()
        {
            ECDomainParameters domain = ECDomains.GetDomainParameter(ECDomainNames.secp112r2);

            Test("DB7C 2ABF62E3 5E668076 BEAD208B",
                 "6127 C24C05F3 8A0AAAF6 5C0EF02C",
                 "51DE F1815DB5 ED74FCC3 4C85D709",
                 "4BA30AB5 E892B4E1 649DD092 8643",
                 "ADCD 46F5882E 3747DEF3 6E956E97",
                 "36DF 0AAFD8B8 D7597CA1 0520D04B",
                 4, domain);
        }
Exemple #9
0
        public void Test_secp128r1()
        {
            ECDomainParameters domain = ECDomains.GetDomainParameter(ECDomainNames.secp128r1);

            Test("FFFFFFFD FFFFFFFF FFFFFFFF FFFFFFFF",
                 "FFFFFFFD FFFFFFFF FFFFFFFF FFFFFFFC",
                 "E87579C1 1079F43D D824993C 2CEE5ED3",
                 "161FF752 8B899B2D 0C28607C A52C5B86",
                 "CF5AC839 5BAFEB13 C02DA292 DDED7A83",
                 "FFFFFFFE 00000000 75A30D1B 9038A115",
                 1, domain);
        }
Exemple #10
0
        public void Test_secp128r2()
        {
            ECDomainParameters domain = ECDomains.GetDomainParameter(ECDomainNames.secp128r2);

            Test("FFFFFFFD FFFFFFFF FFFFFFFF FFFFFFFF",
                 "D6031998 D1B3BBFE BF59CC9B BFF9AEE1",
                 "5EEEFCA3 80D02919 DC2C6558 BB6D8A5D",
                 "7B6AA5D8 5E572983 E6FB32A7 CDEBC140",
                 "27B6916A 894D3AEE 7106FE80 5FC34B44",
                 "3FFFFFFF 7FFFFFFF BE002472 0613B5A3",
                 4, domain);
        }
Exemple #11
0
        public void Test_secp160r1()
        {
            ECDomainParameters domain = ECDomains.GetDomainParameter(ECDomainNames.secp160r1);

            Test("FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 7FFFFFFF",
                 "FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 7FFFFFFC",
                 "1C97BEFC 54BD7A8B 65ACF89F 81D4D4AD C565FA45",
                 "4A96B568 8EF57328 46646989 68C38BB9 13CBFC82",
                 "23A62855 3168947D 59DCC912 04235137 7AC5FB32",
                 "01 00000000 00000000 0001F4C8 F927AED3 CA752257",
                 1, domain);
        }
Exemple #12
0
        public void Test_secp384r1()
        {
            ECDomainParameters domain = ECDomains.GetDomainParameter(ECDomainNames.secp384r1);

            Test("FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFFFF 00000000 00000000 FFFFFFFF",
                 "FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFFFF 00000000 00000000 FFFFFFFC",
                 "B3312FA7 E23EE7E4 988E056B E3F82D19 181D9C6E FE814112 0314088F 5013875A C656398D 8A2ED19D 2A85C8ED D3EC2AEF",
                 "AA87CA22 BE8B0537 8EB1C71E F320AD74 6E1D3B62 8BA79B98 59F741E0 82542A38 5502F25D BF55296C 3A545E38 72760AB7",
                 "3617DE4A 96262C6F 5D9E98BF 9292DC29 F8F41DBD 289A147C E9DA3113 B5F0B8C0 0A60B1CE 1D7E819D 7A431D7C 90EA0E5F",
                 "FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF C7634D81 F4372DDF 581A0DB2 48B0A77A ECEC196A CCC52973",
                 1, domain);
        }
Exemple #13
0
        public void Test_secp224r1()
        {
            ECDomainParameters domain = ECDomains.GetDomainParameter(ECDomainNames.secp224r1);

            Test("FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 00000000 00000001",
                 "FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFE",
                 "B4050A85 0C04B3AB F5413256 5044B0B7 D7BFD8BA 270B3943 2355FFB4",
                 "B70E0CBD 6BB4BF7F 321390B9 4A03C1D3 56C21122 343280D6 115C1D21",
                 "BD376388 B5F723FB 4C22DFE6 CD4375A0 5A074764 44D58199 85007E34",
                 "FFFFFFFF FFFFFFFF FFFFFFFF FFFF16A2 E0B8F03E 13DD2945 5C5C2A3D",
                 1, domain);
        }
Exemple #14
0
        public void Test_GEC2()
        {
            ECDomainNames      domainName = ECDomainNames.secp160r1;
            ECDomainParameters domain     = ECDomains.GetDomainParameter(domainName);
            ECIES     ecies     = new ECIES(domainName);
            Number    V_Private = Number.Parse("45FB58A92A17AD4B15101C66E74F277E2B460866", 16);
            ECKeyPair pair      = new ECKeyPair(V_Private, null, domain);

            pair.CreatePublicKeyFromPrivateKey();
            ecies.Parameters._Q = pair._Q;
            byte[] M         = System.Text.Encoding.ASCII.GetBytes("abcdefghijklmnopqrst");
            byte[] k         = Number.Parse("702232148019446860144825009548118511996283736794", 10).ToByteArray(20, false);
            byte[] C         = ecies.Encrypt(M, k);
            byte[] expectedC = new byte[] { 0x02, 0xCE, 0x28, 0x73, 0xE5, 0xBE, 0x44, 0x95, 0x63, 0x39, 0x1F, 0xEB, 0x47, 0xDD, 0xCB, 0xA2, 0xDC, 0x16, 0x37, 0x91, 0x91, 0x71, 0x23, 0xC8, 0x70, 0xA3, 0x1A, 0x81, 0xEA, 0x75, 0x83, 0x29, 0x0D, 0x1B, 0xA1, 0x7B, 0xC8, 0x75, 0x94, 0x35, 0xED, 0x1C, 0xCD, 0xA9, 0xEB, 0x4E, 0xD2, 0x73, 0x60, 0xBE, 0x89, 0x67, 0x29, 0xAD, 0x18, 0x54, 0x93, 0x62, 0x25, 0x91, 0xE5 };
            Assert.AreEqual(expectedC, C, "Encryption");

            ecies = new ECIES(domainName);
            ecies.Parameters._d = V_Private;
            byte[] M2 = ecies.Decrypt(C);
            Assert.AreEqual(M, M2, "Decryption");
        }
 static void Validate(ECDomainNames name)
 {
     Assert.IsTrue(ECDomains.GetDomainParameter(name).Validate(), name.ToString());
 }
Exemple #16
0
        void PointCompressTest(ECDomainNames name, int repeats)
        {
            ECDomainParameters domain = ECDomains.GetDomainParameter(name);

            PointCompressTest((int)domain.Bits, domain.Group, domain.G, repeats, name.ToString());
        }
Exemple #17
0
 public ECDiffieHellman(Uri oid)
     : this(new ECDiffieHellmanParameters(null, null, ECDomains.GetDomainParameter(oid)))
 {
 }
Exemple #18
0
 public ECDSA(ECDomainNames domain)
     : this(ECDomains.GetDomainParameter(domain))
 {
 }
Exemple #19
0
 public ECDSA(Uri domain_oid)
     : this(ECDomains.GetDomainParameter(domain_oid))
 {
 }
Exemple #20
0
 public ECMQV(ECDomainNames name)
     : this(ECDomains.GetDomainParameter(name))
 {
 }
Exemple #21
0
 public ECMQV(Uri oid)
     : this(ECDomains.GetDomainParameter(oid))
 {
 }
Exemple #22
0
 public ECDiffieHellman(ECDomainNames name)
     : this(new ECDiffieHellmanParameters(null, null, ECDomains.GetDomainParameter(name)))
 {
 }