예제 #1
0
파일: Client.Recv.cs 프로젝트: TheaP/c-raft
        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();

        }
예제 #2
0
        public static void ReadEncryptionResponse(Client client, PacketReader reader)
        {
            EncryptionKeyResponse ekr = new EncryptionKeyResponse();
            ekr.Read(reader);

            if(!reader.Failed)
                Client.HandlePacketEncryptionResponse(client, ekr);
        }
예제 #3
0
        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();
        }