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)); }
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)); }
/// <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); }