//==================================================================================================== //Ответ на попытку авторизации private void AUTH_Send_Message() { this.response_buf = new byte[Client.command_length]; if (UsersData.IsUserExist(ref user_inf, ref Server.UserList)) { this.flag = true; //Взаимодействие с пользователем активировано this.folder = Encoding.Default.GetString(user_inf.login_hash) + "//"; //Задаём персональное имя папки пользователя //Отправляем ответ об успешной авторизации this.response_buf[0] = Convert.ToByte(ServerAnswers.OK); networkStream.Write(response_buf, 0, response_buf.Length); //Обмениваемся ключами и создаём секретный aes = new DIFFIE_HELMAN(); file.KeysExchange(client, networkStream, aes); //Ждать зашифрованные хэши while (client.Connected) { if (networkStream.DataAvailable) { byte[] login = null; FileProtocolReader.Read(ref login, networkStream); login = aes.Decript(login); byte[] password = null; FileProtocolReader.Read(ref password, networkStream); password = aes.Decript(password); SHA256 sHA = SHA256Managed.Create(); if (sHA.ComputeHash(login).ToString() == user_inf.login_hash.ToString() && sHA.ComputeHash(password).ToString() == user_inf.login_hash.ToString()) { this.response_buf[0] = Convert.ToByte(ServerAnswers.OK); networkStream.Write(response_buf, 0, response_buf.Length); //Посылаем информацию о названиях всех доступных файлах FileHierarchy fileHierarchy = new FileHierarchy(this.folder); fileHierarchy.NetworkSendInfo(networkStream, aes); } else { this.response_buf[0] = Convert.ToByte(ServerAnswers.NOPE); networkStream.Write(response_buf, 0, response_buf.Length); } break; } } } else { this.response_buf[0] = Convert.ToByte(ServerAnswers.NOPE); networkStream.Write(response_buf, 0, response_buf.Length); Disconnect(); } }
//==================================================================================================== //Ответ на попытку регистрации private void REG_Send_Message() { this.response_buf = new byte[Client.command_length]; if (UsersData.IsUserExist(ref user_inf, ref Server.UserList)) { this.response_buf[0] = Convert.ToByte(ServerAnswers.NOPE); //Такой пользователь существует } else { user_inf.key = RandomKey.GetKey(8); Server.UserList.Add(user_inf); //Пополняем список новым пользователем UsersData.WriteUsersInf(Server.users_inf_way, Server.UserList); this.folder = Encoding.Default.GetString(user_inf.login_hash) + "//"; Directory.CreateDirectory(this.folder); this.response_buf[0] = Convert.ToByte(ServerAnswers.OK); //Регистрания пройдена успешно } networkStream.Write(response_buf, 0, response_buf.Length); }