/// <summary> /// /// </summary> /// <param name="netState"></param> /// <param name="packetReader"></param> public static void Realm_HandleRequestSession(NetState netState, PacketReader packetReader) { RealmExtendData extendData = netState.GetComponent <RealmExtendData>(RealmExtendData.COMPONENT_ID); if (extendData == null) { Debug.WriteLine("Realm_PacketHandlers.Realm_HandleRequestSession(...) - extendData == null error!"); return; } if (extendData.IsLoggedIn == false) { Debug.WriteLine("Realm_PacketHandlers.Realm_HandleRequestSession(...) - extendData.IsLoggedIn == false error!"); return; } uint iSerial = packetReader.ReadUInt32(); string strAccountName = packetReader.ReadUTF8StringSafe(); WowAccount wowAccount = WowAccountHandler.GetAccount(strAccountName); if (wowAccount == null) { netState.Send(new Realm_RequestSessionResultError(iSerial)); return; } SecureRemotePassword srp = SrpHandler.GetSRP(strAccountName); if (srp == null) { netState.Send(new Realm_RequestSessionResultError(iSerial)); return; } netState.Send(new Realm_RequestSessionResult(iSerial, wowAccount, srp)); }
/// <summary> /// 登陆验证 /// </summary> /// <param name="netState"></param> /// <param name="packetReader"></param> public static void Auth_HandleAuthProof(NetState netState, PacketReader packetReader) { AuthExtendData extendData = netState.GetComponent <AuthExtendData>(AuthExtendData.COMPONENT_ID); if (extendData == null) { Debug.WriteLine("Auth_PacketHandlers.Auth_AuthProof(...) - extendData == null error!"); return; } if (extendData.IsLoggedIn == false) { Debug.WriteLine("Auth_PacketHandlers.Auth_AuthProof(...) - extendData.IsLoggedIn == false error!"); return; } extendData.AuthProof.AuthLogonProof = AuthLogonProof.ReadAuthLogonProof(packetReader); extendData.SRP.PublicEphemeralValueA = extendData.AuthProof.AuthLogonProof.PublicEphemeralValueA; if (extendData.SRP.IsClientProofValid(extendData.AuthProof.AuthLogonProof.ClientProof) == false) { // Authentication failed. //netState.Send( new RealmList_AuthProofResultError( RealmListErrorsInfo.LOGIN_NO_ACCOUNT ) ); netState.Send(new Auth_AuthChallengeResultError(LogineErrorInfo.LOGIN_NO_ACCOUNT)); return; } // 添加到全局的Key中 SrpHandler.AddSRP(extendData.WowAccount.AccountName, extendData.SRP); // we're authenticated now :) extendData.IsAuthenticated = true; netState.Send(new Auth_AuthProofResult(extendData.SRP)); }