Esempio n. 1
0
 public NetworkLogin()
 {
     client = new NetworkClient();
     //this.recvState = Erecv.RECVCHANLLENGECOUNT;
     this.recvState = Erecv.RECVCHALLENGE;
     this.sendstate = Esend.SENDCLIENTDH;
     buffer         = new byte[BUFFERSIZE];
 }
Esempio n. 2
0
        private void recvChallenge(NetworkIOArgs args)
        {
            this.challenge = Convert.FromBase64String(Encoding.UTF8.GetString(args.Data, 0, args.Count));

            Array.Clear(args.Data, 0, args.Count);
            this.recvState = Erecv.RECVSERVERDH;
            byte[] clientkey = kcrypt.randomkey();
            this.clientkey = BitConverter.ToUInt64(clientkey, 0);
            client.SendPackage(kcrypt.encode64str(kcrypt.dhexchange(this.clientkey)));
        }
Esempio n. 3
0
        private void recvServerDH(NetworkIOArgs args)
        {
            Debug.Log(string.Format("serverDH is {0}", Encoding.UTF8.GetString(args.Data, 0, args.Count)));
            this.serverDH = BitConverter.ToUInt64(Convert.FromBase64String(Encoding.UTF8.GetString(args.Data, 0, args.Count)), 0);
            Array.Clear(args.Data, 0, args.Count);

            this.recvState = Erecv.RECVSERVERSCOUNT;
            this.secret    = kcrypt.dhsecret(this.serverDH, this.clientkey);
            Debug.Log(string.Format("serverDH is {0}", Convert.ToBase64String(BitConverter.GetBytes(this.secret))));
            kcrypt.SetDesKey(secret);
            ulong sChall = kcrypt.hmac64(BitConverter.ToUInt64(this.challenge, 0), this.secret);

            client.SendPackage(Convert.ToBase64String(BitConverter.GetBytes(sChall)));
        }