Esempio n. 1
0
        public static Tuple <UserForm, IEnumerable <TcpListener>, IAsymmetricKeysExchange> CreateForm(string login, bool listenPorts,
                                                                                                      IPAddress ip, Random random)
        {
            var rand      = random ?? new Random();
            var ecdsa     = new MoleECDsaCng();
            var publicKey = ecdsa.Export(false);
            //PossibleCryptoAlgs = new PossibleCryptoInfo(new[] { "CngMicrosoft" }, new[] { "Sha1", "Md5", "Sha256" },
            //    new[] { "Rsa" }, new[] { "Aes", "Des" }, new[] { "Ecc" });
            var hashAlg       = SHA1.Create();
            var hash          = hashAlg.ComputeHash(publicKey);
            var publicKeyForm = new PublicKeyForm()
            {
                CryptoAlg      = "Ecc",
                CryptoProvider = "CngMicrosoft",
                Key            = publicKey,
                Hash           = hash,
                HashAlg        = "Sha1"
            };
            var form = new UserForm()
            {
                Accessibility = new AccessibilityInfo(100, 5)
                {
                    IsPublicProfile = true
                },
                Login               = login,
                Password            = "******",
                PortClientToClient1 = (ushort)rand.Next(20000, 60000),
                PortClientToClient2 = (ushort)rand.Next(20000, 60000),
                PortClientToClient3 = (ushort)rand.Next(20000, 60000),
                PortServerToClient  = (ushort)rand.Next(20000, 60000),
                KeyParametrsBlob    = publicKeyForm
            };
            //192.168.65.129
            var listners = new List <TcpListener>(4);

            if (listenPorts)
            {
                var listner = new TcpListener(ip, form.PortClientToClient1);
                listner.Start();
                listners.Add(listner);

                listner = new TcpListener(ip, form.PortClientToClient2);
                listner.Start();
                listners.Add(listner);

                listner = new TcpListener(ip, form.PortClientToClient3);
                listner.Start();
                listners.Add(listner);

                listner = new TcpListener(ip, form.PortServerToClient);
                listner.Start();
                listners.Add(listner);
            }
            return(new Tuple <UserForm, IEnumerable <TcpListener>, IAsymmetricKeysExchange>(form, listners, ecdsa));
        }
Esempio n. 2
0
        public static Tuple <UserForm, IEnumerable <TcpListener>, IAsymmetricKeysExchange> CreateForm(string login, bool listenPorts,
                                                                                                      IPAddress ip, Random random)
        {
            var rand      = random ?? new Random();
            var ecdsa     = new MoleECDsaCng();
            var publicKey = ecdsa.Export(false);
            var form      = new UserForm()
            {
                Accessibility = new AccessibilityInfo(100, 5)
                {
                    IsPublicProfile = true
                },
                Login               = login,
                Password            = "******",
                PortClientToClient1 = (ushort)rand.Next(20000, 60000),
                PortClientToClient2 = (ushort)rand.Next(20000, 60000),
                PortClientToClient3 = (ushort)rand.Next(20000, 60000),
                PortServerToClient  = (ushort)rand.Next(20000, 60000),
                KeyParametrsBlob    = publicKey
            };
            //192.168.65.129
            var listners = new List <TcpListener>(4);

            if (listenPorts)
            {
                var listner = new TcpListener(ip, form.PortClientToClient1);
                listner.Start();
                listners.Add(listner);

                listner = new TcpListener(ip, form.PortClientToClient2);
                listner.Start();
                listners.Add(listner);

                listner = new TcpListener(ip, form.PortClientToClient3);
                listner.Start();
                listners.Add(listner);

                listner = new TcpListener(ip, form.PortServerToClient);
                listner.Start();
                listners.Add(listner);
            }
            return(new Tuple <UserForm, IEnumerable <TcpListener>, IAsymmetricKeysExchange>(form, listners, ecdsa));
        }
Esempio n. 3
0
        /// <exception cref="ArgumentNullException">nameOfCryptoProvider == null. -or- nameOfAlg == null. -or-
        /// key == null. Source: <see cref="MoleECDsaCng(CngKey)"/>. -or-
        /// key == null. Source: <see cref="MoleRsaCng(CngKey)"/>.</exception>
        /// <exception cref="ArgumentOutOfRangeException">Криптопровайдера с таким названием не нашлось. -or-
        /// Криптоалгоритма с таким названием не нашлось. -or-
        /// key.Algorithm. Source: <see cref="MoleECDsaCng(CngKey)"/>. -or-
        /// keySize. Source: <see cref="MoleECDsaCng(int)"/>. -or-
        /// key.Algorithm != CngAlgorithm.Rsa. Source: <see cref="MoleRsaCng(CngKey)"/>. -or-
        /// keySize. Source: <see cref="MoleRsaCng(int)"/>.</exception>
        public override byte[] CreateAsymmetricKey <TKeyOptions>(string nameOfCryptoProvider, string nameOfAlg, int length, TKeyOptions options)
        {
            CheckParams(nameOfCryptoProvider, nameOfAlg);

            switch (nameOfCryptoProvider)
            {
            case "CngMicrosoft":
                switch (nameOfAlg)
                {
                case "Rsa":
                    var rsa = new MoleRsaCng(length);
                    return(rsa.Export(true));

                case "Ecc":
                    var ecc = new MoleECDsaCng(length);
                    break;
                }
                break;
            }
            return(null);
        }