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(); }
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); }
private void DoLoginAction() { var token = EncodeToken(_req); var etoken = Crypt.DesEncode(_challenge.secret, Encoding.UTF8.GetBytes(token)); Request(etoken); _state = LoginAuthState.LoginResult; }
public EventManager(AuthPackageReq req, Action <int, AuthPackageResp> loginCallBack, LoginClient c) { _challenge = new AuthChallenge(); _state = LoginAuthState.GetChallenge; _req = req; _client = c; OnLoginCallBack = loginCallBack; }
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; }