//==================================================================================================== //Ответ на попытку авторизации 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(); } }
public void GetClientInfHash(ClientCommands command) { try { byte[] login_hash = null; FileProtocolReader.Read(ref login_hash, networkStream); byte[] password_hash = null; FileProtocolReader.Read(ref password_hash, networkStream); ToUserHash(command, login_hash, password_hash); } catch (Exception error) { Console.Error.WriteLine(error.Message); Disconnect(); return; } }