Exemplo n.º 1
0
        private static void InitAuthentication(MooNetClient client, bnet.protocol.authentication.LogonRequest request)
        {
            var account = AccountManager.GetAccountByEmail(request.Email.ToLower()); // check if account exists.

            if (account == null)                                                     // we should be returning an error to client /raist.
            {
                client.AuthenticationErrorCode = AuthenticationErrorCodes.NoGameAccount;
                client.AuthenticationCompleteSignal.Set();
                return;
            }

            var srp6a = new SRP6a(account); // create srp6 handler to process the authentication.

            OngoingAuthentications.Add(client, srp6a);

            // request client to load password.dll for authentication.
            var moduleLoadRequest = bnet.protocol.authentication.ModuleLoadRequest.CreateBuilder()
                                    .SetModuleHandle(bnet.protocol.ContentHandle.CreateBuilder()
                                                     .SetRegion(0x00005553) // us
                                                     .SetUsage(0x61757468)  // auth - password.dll
                                                     .SetHash(ByteString.CopyFrom(VersionInfo.MooNet.AuthModuleHashMap[client.Platform])))
                                    .SetMessage(ByteString.CopyFrom(srp6a.LogonChallenge))
                                    .Build();

            client.MakeRPCWithListenerId(request.ListenerId, () =>
                                         bnet.protocol.authentication.AuthenticationClient.CreateStub(client).ModuleLoad(null, moduleLoadRequest, ModuleLoadResponse));
        }