public void AuthTest() { if (!Sender1F.IsReg || !Sender1F.IsConnected) { RegisterNewUserTest(); } var oldTupl = UserFormTuplFrodo1; var oldSender = Sender1F; Sender1F = new MolePushServerSender(ListnerF.CryptoFactories, ListnerF.PossibleCrypto, true); Sender1F.InitializeConnectionAsync(ListnerF.EndPoint.Address, ListnerF.EndPoint.Port).Wait(); var authForm = new AuthenticationFormSign() { CryptoProvider = Sender2F.CryptoInfoChoosen.Provider, Login = UserFormTuplFrodo1.Item1.Login, HashAlgotitmName = Sender2F.CryptoInfoChoosen.Hash, SignantureAlgoritmName = Sender2F.CryptoInfoChoosen.Sign }; var signAlg = oldTupl.Item3 as ISign; Assert.NotNull(signAlg); var hashAlg = oldSender.FactoryChoosen.CreateHashAlgorithm(oldSender.CryptoInfoChoosen.Provider, oldSender.CryptoInfoChoosen.Hash); authForm.Hash = hashAlg.ComputeHash(Encoding.UTF8.GetBytes(oldTupl.Item1.Password)); authForm.Sign = signAlg.SignDataAsync(authForm.Hash).Result; Sender1F.GetSessionKey().Wait(); var offlineMess = Sender1F.AuthenticateUserAsync(authForm).Result; }
public MolePushServerRecieverTests(PushServerFixture fixture) { Sender1F = fixture.Sender1; Sender2F = fixture.Sender2; ListnerF = fixture.Listner; UserFormTuplFrodo1 = fixture.UserFormTuplFrodo1; UserFormTuplFrodo2 = fixture.UserFormTuplFrodo2; }
public MoleClientSenderTests(ClientFixture fixture) { PServSenderFromClientA = fixture.PServSenderFromClientA; PServSenderFromClientB = fixture.PServSenderFromClientB; SenderClientA = fixture.SenderToClientA; SenderClientB = fixture.SenderToClientB; CoreClientA = fixture.CoreClientAF; CoreClientB = fixture.CoreClientBF; }
public ClientFixture() { try { PushServerFixture.PrepareProtoBufSerrializer(); PrepareProtoBuf(); ServerListnerF = new PushServerListner(); var users = ServerListnerF.DbContext.Users.ToArray(); ServerListnerF.DbContext.RemoveRange(users); ServerListnerF.DbContext.SaveChanges(); while (ServerListnerF.CryptoFactories == null || ServerListnerF.PossibleCrypto == null) { } IPAddress[] localIPs = Dns.GetHostAddressesAsync(Dns.GetHostName()).Result; var ip = localIPs.First(address => address.AddressFamily == AddressFamily.InterNetwork); var rand = new Random(); var clientATupl = PushServerFixture.CreateForm("Frodo1", true, ip, rand); clientATupl.Item1.Accessibility = new AccessibilityInfo(100, 5); clientATupl.Item1.Accessibility.AddToConst("Frodo2"); CoreClientAF = new MoleClientCore(new ProtoBufSerializer(), @"C:\MoleFileSavingA", ServerListnerF.CryptoFactories, clientATupl.Item1, (ISign)clientATupl.Item3); var clientBTupl = PushServerFixture.CreateForm("Frodo2", true, ip, rand); clientBTupl.Item1.Accessibility = new AccessibilityInfo(100, 5); clientBTupl.Item1.Accessibility.AddToConst("Frodo1"); CoreClientBF = new MoleClientCore(new ProtoBufSerializer(), @"C:\MoleFileSavingB", ServerListnerF.CryptoFactories, clientBTupl.Item1, (ISign)clientBTupl.Item3); PServSenderFromClientA = new MolePushServerSender(ServerListnerF.CryptoFactories, ServerListnerF.PossibleCrypto); PServSenderFromClientA.InitializeConnectionAsync(ServerListnerF.EndPoint.Address, ServerListnerF.EndPoint.Port).Wait(); PServSenderFromClientA.RegisterNewUserAsync(CoreClientAF.MyUserForm).Wait(); PServSenderFromClientB = new MolePushServerSender(ServerListnerF.CryptoFactories, ServerListnerF.PossibleCrypto); PServSenderFromClientB.InitializeConnectionAsync(ServerListnerF.EndPoint.Address, ServerListnerF.EndPoint.Port).Wait(); PServSenderFromClientB.RegisterNewUserAsync(CoreClientBF.MyUserForm).Wait(); ListnerClientAF = new ClientListner(clientATupl, CoreClientAF.DirForFileSaving, PServSenderFromClientA, new IPEndPoint(ip, rand.Next(20000, 60000)), ServerListnerF.CryptoFactories, CoreClientAF); ListnerClientBF = new ClientListner(clientBTupl, CoreClientBF.DirForFileSaving, PServSenderFromClientB, new IPEndPoint(ip, rand.Next(20000, 60000)), ServerListnerF.CryptoFactories, CoreClientBF); SenderToClientA = new MoleClientSender(CoreClientAF.MyUserForm, ServerListnerF.PossibleCrypto, CoreClientBF); SenderToClientA.Inicialize(ListnerClientAF.EndPoint).Wait(); SenderToClientB = new MoleClientSender(CoreClientBF.MyUserForm, ServerListnerF.PossibleCrypto, CoreClientAF); SenderToClientB.Inicialize(ListnerClientBF.EndPoint).Wait(); //SetFuncOnEvents(CoreClientAF); } catch (Exception) { throw; } }
public PushServerFixture() { Listner = new PushServerListner(); while (Listner.CryptoFactories == null || Listner.PossibleCrypto == null) { } Sender1 = new MolePushServerSender(Listner.CryptoFactories, Listner.PossibleCrypto); Sender2 = new MolePushServerSender(Listner.CryptoFactories, Listner.PossibleCrypto); var random = new Random(); UserFormTuplFrodo1 = CreateForm(random: random, login: "******", ip: Listner.EndPoint.Address, listenPorts: true); UserFormTuplFrodo2 = CreateForm(random: random, login: "******", ip: Listner.EndPoint.Address, listenPorts: true); using (UserFormContext bdContext = new UserFormContext()) { var users = bdContext.Users.ToArray(); bdContext.RemoveRange(users); bdContext.SaveChanges(); } PrepareProtoBufSerrializer(); }
public ClientListner(Tuple <UserForm, IEnumerable <TcpListener>, IAsymmetricKeysExchange> clientTupl, string dirForFileSaving, MolePushServerSender serverSender, IPEndPoint endPoint, IEnumerable <CryptoFactoryBase> factories, MoleClientCore core) { if (clientTupl == null) { throw new ArgumentNullException(nameof(clientTupl)) { Source = GetType().AssemblyQualifiedName } } ; if (!Directory.Exists(dirForFileSaving)) { throw new ArgumentException("Указанной директории для сохранения файлов не существует.", nameof(dirForFileSaving)) { Source = GetType().AssemblyQualifiedName } } ; if (serverSender == null) { throw new ArgumentNullException(nameof(serverSender)) { Source = GetType().AssemblyQualifiedName } } ; if (!serverSender.IsReg || !serverSender.IsAuth) { throw new ArgumentException( $"{nameof(serverSender)} не зарегистрировал или не авторизовал клиента на сервере.") { Source = GetType().AssemblyQualifiedName } } ; if (endPoint == null) { throw new ArgumentNullException(nameof(endPoint)) { Source = GetType().AssemblyQualifiedName } } ; if (factories == null) { throw new ArgumentNullException(nameof(factories)) { Source = GetType().AssemblyQualifiedName } } ; if (!factories.Any()) { throw new ArgumentException("factories.Any() == false.") { Source = GetType().AssemblyQualifiedName } } ; Core = core; ClientFormTupl = clientTupl; FileSavingDirectory = dirForFileSaving; ServerSender = serverSender; EndPoint = endPoint; Factories = factories.ToList(); var listner = new TcpListener(EndPoint); listner.Start(); ListenTaskF = Task.Run(async() => await Listen(listner).ConfigureAwait(false)); while (Core == null) { } PossibleCrypto = Core.PossibleAlgs; while (!ReadyToAcceptClient) { } }