public static void HandlePacketEncryptionResponse(Client client, EncryptionKeyResponse packet) { client.SharedKey = PacketCryptography.Decrypt(packet.SharedSecret); RijndaelManaged recv = PacketCryptography.GenerateAES(client.SharedKey); RijndaelManaged send = PacketCryptography.GenerateAES(client.SharedKey); client.Decrypter = recv.CreateDecryptor(); byte[] packetToken = PacketCryptography.Decrypt(packet.VerifyToken); if (!packetToken.SequenceEqual(PacketCryptography.VerifyToken)) { client.Kick("Wrong token"); return; } client.Send_Sync_Packet(new EncryptionKeyResponse()); client.Encrypter = send.CreateEncryptor(); }
public static void ReadEncryptionResponse(Client client, PacketReader reader) { EncryptionKeyResponse ekr = new EncryptionKeyResponse(); ekr.Read(reader); if(!reader.Failed) Client.HandlePacketEncryptionResponse(client, ekr); }
public static void HandlePacketEncryptionResponse(Client client, EncryptionKeyResponse packet) { client.SharedKey = PacketCryptography.Decrypt(packet.SharedSecret); RijndaelManaged recv = PacketCryptography.GenerateAES(client.SharedKey); RijndaelManaged send = PacketCryptography.GenerateAES(client.SharedKey); /*AesCryptoServiceProvider provider = new AesCryptoServiceProvider(); provider.Mode = CipherMode.CFB; provider.FeedbackSize = 8; provider.KeySize = 128; provider.Key = client.SharedKey; provider.IV = client.SharedKey;*/ client.Decrypter = recv.CreateDecryptor(); byte[] packetToken; packetToken = PacketCryptography.Decrypt(packet.VerifyToken); if (!packetToken.SequenceEqual(PacketCryptography.VerifyToken)) { client.Kick("Wrong token"); return; } client.Send_Sync_Packet(new EncryptionKeyResponse()); client.Encrypter = send.CreateEncryptor(); }