Beispiel #1
0
        private void GetSecret(string socketstr)
        {
            var lineByte = Crypt.Base64Decode(socketstr);

            if (lineByte.Length != 8)
            {
                return;
            }
            var serverkey = lineByte; //Crypt.DHExchange(lineByte);

//                Debug.Log("dhkey: " + Crypt.HexEncode(serverkey));

            _challenge.secret = Crypt.DHSecret(_challenge.clientkey, serverkey);;
//                Debug.Log("secret: " + Crypt.HexEncode(_challenge.secret));

            var hmackey = Crypt.HMAC64(_challenge.challenge, _challenge.secret);

//                Debug.Log("hmac: " + Crypt.HexEncode(hmackey));

            Request(hmackey);

            _state = LoginAuthState.SendLogin;

            DoLoginAction();
        }
Beispiel #2
0
        private void LoginResult(string socketstr)
        {
            AuthPackageResp resp = new AuthPackageResp();

            var code         = int.Parse(socketstr.Substring(0, 3));
            var subidByte    = Crypt.Base64Decode(socketstr.Substring(4));
            var resultString = Encoding.UTF8.GetString(subidByte);

            if (code == 200)
            {
                var split = Regex.Split(resultString, "['$']");
                resp.gate   = split[0];
                resp.port   = Int32.Parse(split[1]);
                resp.uid    = split[2];
                resp.secret = split[3];
                resp.subid  = split[4];
            }
//            Debug.Log("login result code:" + code);
//            Debug.Log("login result gate:" + resp.gate);
//            Debug.Log("login result port:" + resp.port);
//            Debug.Log("login result uid:" + resp.uid);
//            Debug.Log("login result subid:" + resp.subid);
//            Debug.Log("login result secret:" + resp.secret);
            _state = LoginAuthState.LoginFinished;
            OnLoginCallBack?.Invoke(code, resp);
        }
Beispiel #3
0
        private void DoLoginAction()
        {
            var token  = EncodeToken(_req);
            var etoken = Crypt.DesEncode(_challenge.secret, Encoding.UTF8.GetBytes(token));

            Request(etoken);
            _state = LoginAuthState.LoginResult;
        }
Beispiel #4
0
        public EventManager(AuthPackageReq req, Action <int, AuthPackageResp> loginCallBack, LoginClient c)
        {
            _challenge = new AuthChallenge();

            _state          = LoginAuthState.GetChallenge;
            _req            = req;
            _client         = c;
            OnLoginCallBack = loginCallBack;
        }
Beispiel #5
0
        private void GetChallenge(string socketline)
        {
            var challengeByte = Crypt.Base64Decode(socketline);

            if (challengeByte.Length != 8)
            {
                return;
            }
            _challenge.challenge = challengeByte;
            var dhkey = Crypt.RandomKey();

            _challenge.clientkey = Crypt.DHExchange(dhkey);
            Request(_challenge.clientkey);

            _state = LoginAuthState.GetSecret;
        }