private static void InitAuthentication(MooNetClient client, bnet.protocol.authentication.LogonRequest request) { var account = AccountManager.GetAccountByEmail(request.Email); // 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(ModuleHash))) .SetMessage(ByteString.CopyFrom(srp6a.LogonChallenge)) .Build(); client.MakeRPCWithListenerId(request.ListenerId, () => bnet.protocol.authentication.AuthenticationClient.CreateStub(client).ModuleLoad(null, moduleLoadRequest, ModuleLoadResponse)); }