Example #1
0
        private void OnReceive(BufferData data)
        {
            switch (State)
            {
            case QueueState.Authenticating:
                var keyPacket = new ClientKeyPacket();

                keyPacket.Read(data.GetReader());

                if (keyPacket.PublicKey != Manager.Config.PublicKey)
                {
                    Close();
                    return;
                }

                Socket.Send(new ClientKeyOkPacket());

                State = QueueState.Authenticated;

                break;

            case QueueState.Authenticated:
                if (data[data.Offset++] != 7)
                {
                    throw new Exception("Invalid opcode???");
                }

                var loginPacket = new QueueLoginPacket();

                loginPacket.Read(data.GetReader());

                UserId     = loginPacket.UserId;
                OneTimeKey = loginPacket.OneTimeKey;
                State      = QueueState.InQueue;

                Manager.Enqueue(this);
                EnqueueTime = DateTime.Now;
                break;

            default:
                throw new Exception("Received packet in a invalid queue state!");
            }
        }
Example #2
0
        private void OnReceive(BufferData data)
        {
            var packet = new ClientKeyPacket();

            packet.Read(data.GetReader());

            DHKeyExchange.GenerateServerK(PrivateKey, packet.B, K);

            var key = new byte[64];

            K.WriteToBigEndian(key, 0, key.Length);

            GameCryptManager.Initialize(Data, key);

            Socket.Send(new ClientKeyOkPacket());

            Cleanup();

            Manager.ExchangeDone(this);
        }