|
|
@@ -44,6 +44,218 @@ static constexpr u32 SanitizeJPEGSize(std::size_t size) {
|
|
|
return static_cast<u32>(std::min(size, max_jpeg_image_size));
|
|
|
}
|
|
|
|
|
|
+class IManagerForSystemService final : public ServiceFramework<IManagerForSystemService> {
|
|
|
+public:
|
|
|
+ explicit IManagerForSystemService(Common::UUID user_id)
|
|
|
+ : ServiceFramework("IManagerForSystemService") {
|
|
|
+ // clang-format off
|
|
|
+ static const FunctionInfo functions[] = {
|
|
|
+ {0, nullptr, "CheckAvailability"},
|
|
|
+ {1, nullptr, "GetAccountId"},
|
|
|
+ {2, nullptr, "EnsureIdTokenCacheAsync"},
|
|
|
+ {3, nullptr, "LoadIdTokenCache"},
|
|
|
+ {100, nullptr, "SetSystemProgramIdentification"},
|
|
|
+ {101, nullptr, "RefreshNotificationTokenAsync"}, // 7.0.0+
|
|
|
+ {110, nullptr, "GetServiceEntryRequirementCache"}, // 4.0.0+
|
|
|
+ {111, nullptr, "InvalidateServiceEntryRequirementCache"}, // 4.0.0+
|
|
|
+ {112, nullptr, "InvalidateTokenCache"}, // 4.0.0 - 6.2.0
|
|
|
+ {113, nullptr, "GetServiceEntryRequirementCacheForOnlinePlay"}, // 6.1.0+
|
|
|
+ {120, nullptr, "GetNintendoAccountId"},
|
|
|
+ {121, nullptr, "CalculateNintendoAccountAuthenticationFingerprint"}, // 9.0.0+
|
|
|
+ {130, nullptr, "GetNintendoAccountUserResourceCache"},
|
|
|
+ {131, nullptr, "RefreshNintendoAccountUserResourceCacheAsync"},
|
|
|
+ {132, nullptr, "RefreshNintendoAccountUserResourceCacheAsyncIfSecondsElapsed"},
|
|
|
+ {133, nullptr, "GetNintendoAccountVerificationUrlCache"}, // 9.0.0+
|
|
|
+ {134, nullptr, "RefreshNintendoAccountVerificationUrlCache"}, // 9.0.0+
|
|
|
+ {135, nullptr, "RefreshNintendoAccountVerificationUrlCacheAsyncIfSecondsElapsed"}, // 9.0.0+
|
|
|
+ {140, nullptr, "GetNetworkServiceLicenseCache"}, // 5.0.0+
|
|
|
+ {141, nullptr, "RefreshNetworkServiceLicenseCacheAsync"}, // 5.0.0+
|
|
|
+ {142, nullptr, "RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed"}, // 5.0.0+
|
|
|
+ {150, nullptr, "CreateAuthorizationRequest"},
|
|
|
+ };
|
|
|
+ // clang-format on
|
|
|
+
|
|
|
+ RegisterHandlers(functions);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// 3.0.0+
|
|
|
+class IFloatingRegistrationRequest final : public ServiceFramework<IFloatingRegistrationRequest> {
|
|
|
+public:
|
|
|
+ explicit IFloatingRegistrationRequest(Common::UUID user_id)
|
|
|
+ : ServiceFramework("IFloatingRegistrationRequest") {
|
|
|
+ // clang-format off
|
|
|
+ static const FunctionInfo functions[] = {
|
|
|
+ {0, nullptr, "GetSessionId"},
|
|
|
+ {12, nullptr, "GetAccountId"},
|
|
|
+ {13, nullptr, "GetLinkedNintendoAccountId"},
|
|
|
+ {14, nullptr, "GetNickname"},
|
|
|
+ {15, nullptr, "GetProfileImage"},
|
|
|
+ {21, nullptr, "LoadIdTokenCache"},
|
|
|
+ {100, nullptr, "RegisterUser"}, // [1.0.0-3.0.2] RegisterAsync
|
|
|
+ {101, nullptr, "RegisterUserWithUid"}, // [1.0.0-3.0.2] RegisterWithUidAsync
|
|
|
+ {102, nullptr, "RegisterNetworkServiceAccountAsync"}, // 4.0.0+
|
|
|
+ {103, nullptr, "RegisterNetworkServiceAccountWithUidAsync"}, // 4.0.0+
|
|
|
+ {110, nullptr, "SetSystemProgramIdentification"},
|
|
|
+ {111, nullptr, "EnsureIdTokenCacheAsync"},
|
|
|
+ };
|
|
|
+ // clang-format on
|
|
|
+
|
|
|
+ RegisterHandlers(functions);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+class IAdministrator final : public ServiceFramework<IAdministrator> {
|
|
|
+public:
|
|
|
+ explicit IAdministrator(Common::UUID user_id) : ServiceFramework("IAdministrator") {
|
|
|
+ // clang-format off
|
|
|
+ static const FunctionInfo functions[] = {
|
|
|
+ {0, nullptr, "CheckAvailability"},
|
|
|
+ {1, nullptr, "GetAccountId"},
|
|
|
+ {2, nullptr, "EnsureIdTokenCacheAsync"},
|
|
|
+ {3, nullptr, "LoadIdTokenCache"},
|
|
|
+ {100, nullptr, "SetSystemProgramIdentification"},
|
|
|
+ {101, nullptr, "RefreshNotificationTokenAsync"}, // 7.0.0+
|
|
|
+ {110, nullptr, "GetServiceEntryRequirementCache"}, // 4.0.0+
|
|
|
+ {111, nullptr, "InvalidateServiceEntryRequirementCache"}, // 4.0.0+
|
|
|
+ {112, nullptr, "InvalidateTokenCache"}, // 4.0.0 - 6.2.0
|
|
|
+ {113, nullptr, "GetServiceEntryRequirementCacheForOnlinePlay"}, // 6.1.0+
|
|
|
+ {120, nullptr, "GetNintendoAccountId"},
|
|
|
+ {121, nullptr, "CalculateNintendoAccountAuthenticationFingerprint"}, // 9.0.0+
|
|
|
+ {130, nullptr, "GetNintendoAccountUserResourceCache"},
|
|
|
+ {131, nullptr, "RefreshNintendoAccountUserResourceCacheAsync"},
|
|
|
+ {132, nullptr, "RefreshNintendoAccountUserResourceCacheAsyncIfSecondsElapsed"},
|
|
|
+ {133, nullptr, "GetNintendoAccountVerificationUrlCache"}, // 9.0.0+
|
|
|
+ {134, nullptr, "RefreshNintendoAccountVerificationUrlCacheAsync"}, // 9.0.0+
|
|
|
+ {135, nullptr, "RefreshNintendoAccountVerificationUrlCacheAsyncIfSecondsElapsed"}, // 9.0.0+
|
|
|
+ {140, nullptr, "GetNetworkServiceLicenseCache"}, // 5.0.0+
|
|
|
+ {141, nullptr, "RefreshNetworkServiceLicenseCacheAsync"}, // 5.0.0+
|
|
|
+ {142, nullptr, "RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed"}, // 5.0.0+
|
|
|
+ {150, nullptr, "CreateAuthorizationRequest"},
|
|
|
+ {200, nullptr, "IsRegistered"},
|
|
|
+ {201, nullptr, "RegisterAsync"},
|
|
|
+ {202, nullptr, "UnregisterAsync"},
|
|
|
+ {203, nullptr, "DeleteRegistrationInfoLocally"},
|
|
|
+ {220, nullptr, "SynchronizeProfileAsync"},
|
|
|
+ {221, nullptr, "UploadProfileAsync"},
|
|
|
+ {222, nullptr, "SynchronizaProfileAsyncIfSecondsElapsed"},
|
|
|
+ {250, nullptr, "IsLinkedWithNintendoAccount"},
|
|
|
+ {251, nullptr, "CreateProcedureToLinkWithNintendoAccount"},
|
|
|
+ {252, nullptr, "ResumeProcedureToLinkWithNintendoAccount"},
|
|
|
+ {255, nullptr, "CreateProcedureToUpdateLinkageStateOfNintendoAccount"},
|
|
|
+ {256, nullptr, "ResumeProcedureToUpdateLinkageStateOfNintendoAccount"},
|
|
|
+ {260, nullptr, "CreateProcedureToLinkNnidWithNintendoAccount"}, // 3.0.0+
|
|
|
+ {261, nullptr, "ResumeProcedureToLinkNnidWithNintendoAccount"}, // 3.0.0+
|
|
|
+ {280, nullptr, "ProxyProcedureToAcquireApplicationAuthorizationForNintendoAccount"},
|
|
|
+ {290, nullptr, "GetRequestForNintendoAccountUserResourceView"}, // 8.0.0+
|
|
|
+ {300, nullptr, "TryRecoverNintendoAccountUserStateAsync"}, // 6.0.0+
|
|
|
+ {400, nullptr, "IsServiceEntryRequirementCacheRefreshRequiredForOnlinePlay"}, // 6.1.0+
|
|
|
+ {401, nullptr, "RefreshServiceEntryRequirementCacheForOnlinePlayAsync"}, // 6.1.0+
|
|
|
+ {900, nullptr, "GetAuthenticationInfoForWin"}, // 9.0.0+
|
|
|
+ {901, nullptr, "ImportAsyncForWin"}, // 9.0.0+
|
|
|
+ {997, nullptr, "DebugUnlinkNintendoAccountAsync"},
|
|
|
+ {998, nullptr, "DebugSetAvailabilityErrorDetail"},
|
|
|
+ };
|
|
|
+ // clang-format on
|
|
|
+
|
|
|
+ RegisterHandlers(functions);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+class IAuthorizationRequest final : public ServiceFramework<IAuthorizationRequest> {
|
|
|
+public:
|
|
|
+ explicit IAuthorizationRequest(Common::UUID user_id)
|
|
|
+ : ServiceFramework("IAuthorizationRequest") {
|
|
|
+ // clang-format off
|
|
|
+ static const FunctionInfo functions[] = {
|
|
|
+ {0, nullptr, "GetSessionId"},
|
|
|
+ {10, nullptr, "InvokeWithoutInteractionAsync"},
|
|
|
+ {19, nullptr, "IsAuthorized"},
|
|
|
+ {20, nullptr, "GetAuthorizationCode"},
|
|
|
+ {21, nullptr, "GetIdToken"},
|
|
|
+ {22, nullptr, "GetState"},
|
|
|
+ };
|
|
|
+ // clang-format on
|
|
|
+
|
|
|
+ RegisterHandlers(functions);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+class IOAuthProcedure final : public ServiceFramework<IOAuthProcedure> {
|
|
|
+public:
|
|
|
+ explicit IOAuthProcedure(Common::UUID user_id) : ServiceFramework("IOAuthProcedure") {
|
|
|
+ // clang-format off
|
|
|
+ static const FunctionInfo functions[] = {
|
|
|
+ {0, nullptr, "PrepareAsync"},
|
|
|
+ {1, nullptr, "GetRequest"},
|
|
|
+ {2, nullptr, "ApplyResponse"},
|
|
|
+ {3, nullptr, "ApplyResponseAsync"},
|
|
|
+ {10, nullptr, "Suspend"},
|
|
|
+ };
|
|
|
+ // clang-format on
|
|
|
+
|
|
|
+ RegisterHandlers(functions);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// 3.0.0+
|
|
|
+class IOAuthProcedureForExternalNsa final : public ServiceFramework<IOAuthProcedureForExternalNsa> {
|
|
|
+public:
|
|
|
+ explicit IOAuthProcedureForExternalNsa(Common::UUID user_id)
|
|
|
+ : ServiceFramework("IOAuthProcedureForExternalNsa") {
|
|
|
+ // clang-format off
|
|
|
+ static const FunctionInfo functions[] = {
|
|
|
+ {0, nullptr, "PrepareAsync"},
|
|
|
+ {1, nullptr, "GetRequest"},
|
|
|
+ {2, nullptr, "ApplyResponse"},
|
|
|
+ {3, nullptr, "ApplyResponseAsync"},
|
|
|
+ {10, nullptr, "Suspend"},
|
|
|
+ {100, nullptr, "GetAccountId"},
|
|
|
+ {101, nullptr, "GetLinkedNintendoAccountId"},
|
|
|
+ {102, nullptr, "GetNickname"},
|
|
|
+ {103, nullptr, "GetProfileImage"},
|
|
|
+ };
|
|
|
+ // clang-format on
|
|
|
+
|
|
|
+ RegisterHandlers(functions);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+class IOAuthProcedureForNintendoAccountLinkage final
|
|
|
+ : public ServiceFramework<IOAuthProcedureForNintendoAccountLinkage> {
|
|
|
+public:
|
|
|
+ explicit IOAuthProcedureForNintendoAccountLinkage(Common::UUID user_id)
|
|
|
+ : ServiceFramework("IOAuthProcedureForNintendoAccountLinkage") {
|
|
|
+ // clang-format off
|
|
|
+ static const FunctionInfo functions[] = {
|
|
|
+ {0, nullptr, "PrepareAsync"},
|
|
|
+ {1, nullptr, "GetRequest"},
|
|
|
+ {2, nullptr, "ApplyResponse"},
|
|
|
+ {3, nullptr, "ApplyResponseAsync"},
|
|
|
+ {10, nullptr, "Suspend"},
|
|
|
+ {100, nullptr, "GetRequestWithTheme"},
|
|
|
+ {101, nullptr, "IsNetworkServiceAccountReplaced"},
|
|
|
+ {199, nullptr, "GetUrlForIntroductionOfExtraMembership"}, // 2.0.0 - 5.1.0
|
|
|
+ };
|
|
|
+ // clang-format on
|
|
|
+
|
|
|
+ RegisterHandlers(functions);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+class INotifier final : public ServiceFramework<INotifier> {
|
|
|
+public:
|
|
|
+ explicit INotifier(Common::UUID user_id) : ServiceFramework("INotifier") {
|
|
|
+ // clang-format off
|
|
|
+ static const FunctionInfo functions[] = {
|
|
|
+ {0, nullptr, "GetSystemEvent"},
|
|
|
+ };
|
|
|
+ // clang-format on
|
|
|
+
|
|
|
+ RegisterHandlers(functions);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
class IProfileCommon : public ServiceFramework<IProfileCommon> {
|
|
|
public:
|
|
|
explicit IProfileCommon(const char* name, bool editor_commands, Common::UUID user_id,
|
|
|
@@ -226,6 +438,54 @@ public:
|
|
|
: IProfileCommon("IProfileEditor", true, user_id, profile_manager) {}
|
|
|
};
|
|
|
|
|
|
+class IAsyncContext final : public ServiceFramework<IAsyncContext> {
|
|
|
+public:
|
|
|
+ explicit IAsyncContext(Common::UUID user_id) : ServiceFramework("IAsyncContext") {
|
|
|
+ // clang-format off
|
|
|
+ static const FunctionInfo functions[] = {
|
|
|
+ {0, nullptr, "GetSystemEvent"},
|
|
|
+ {1, nullptr, "Cancel"},
|
|
|
+ {2, nullptr, "HasDone"},
|
|
|
+ {3, nullptr, "GetResult"},
|
|
|
+ };
|
|
|
+ // clang-format on
|
|
|
+
|
|
|
+ RegisterHandlers(functions);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+class ISessionObject final : public ServiceFramework<ISessionObject> {
|
|
|
+public:
|
|
|
+ explicit ISessionObject(Common::UUID user_id) : ServiceFramework("ISessionObject") {
|
|
|
+ // clang-format off
|
|
|
+ static const FunctionInfo functions[] = {
|
|
|
+ {999, nullptr, "Dummy"},
|
|
|
+ };
|
|
|
+ // clang-format on
|
|
|
+
|
|
|
+ RegisterHandlers(functions);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+class IGuestLoginRequest final : public ServiceFramework<IGuestLoginRequest> {
|
|
|
+public:
|
|
|
+ explicit IGuestLoginRequest(Common::UUID) : ServiceFramework("IGuestLoginRequest") {
|
|
|
+ // clang-format off
|
|
|
+ static const FunctionInfo functions[] = {
|
|
|
+ {0, nullptr, "GetSessionId"},
|
|
|
+ {11, nullptr, "Unknown"}, // 1.0.0 - 2.3.0 (the name is blank on Switchbrew)
|
|
|
+ {12, nullptr, "GetAccountId"},
|
|
|
+ {13, nullptr, "GetLinkedNintendoAccountId"},
|
|
|
+ {14, nullptr, "GetNickname"},
|
|
|
+ {15, nullptr, "GetProfileImage"},
|
|
|
+ {21, nullptr, "LoadIdTokenCache"}, // 3.0.0+
|
|
|
+ };
|
|
|
+ // clang-format on
|
|
|
+
|
|
|
+ RegisterHandlers(functions);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
class IManagerForApplication final : public ServiceFramework<IManagerForApplication> {
|
|
|
public:
|
|
|
explicit IManagerForApplication(Common::UUID user_id)
|
|
|
@@ -265,6 +525,87 @@ private:
|
|
|
Common::UUID user_id;
|
|
|
};
|
|
|
|
|
|
+// 6.0.0+
|
|
|
+class IAsyncNetworkServiceLicenseKindContext final
|
|
|
+ : public ServiceFramework<IAsyncNetworkServiceLicenseKindContext> {
|
|
|
+public:
|
|
|
+ explicit IAsyncNetworkServiceLicenseKindContext(Common::UUID user_id)
|
|
|
+ : ServiceFramework("IAsyncNetworkServiceLicenseKindContext") {
|
|
|
+ // clang-format off
|
|
|
+ static const FunctionInfo functions[] = {
|
|
|
+ {0, nullptr, "GetSystemEvent"},
|
|
|
+ {1, nullptr, "Cancel"},
|
|
|
+ {2, nullptr, "HasDone"},
|
|
|
+ {3, nullptr, "GetResult"},
|
|
|
+ {4, nullptr, "GetNetworkServiceLicenseKind"},
|
|
|
+ };
|
|
|
+ // clang-format on
|
|
|
+
|
|
|
+ RegisterHandlers(functions);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// 8.0.0+
|
|
|
+class IOAuthProcedureForUserRegistration final
|
|
|
+ : public ServiceFramework<IOAuthProcedureForUserRegistration> {
|
|
|
+public:
|
|
|
+ explicit IOAuthProcedureForUserRegistration(Common::UUID user_id)
|
|
|
+ : ServiceFramework("IOAuthProcedureForUserRegistration") {
|
|
|
+ // clang-format off
|
|
|
+ static const FunctionInfo functions[] = {
|
|
|
+ {0, nullptr, "PrepareAsync"},
|
|
|
+ {1, nullptr, "GetRequest"},
|
|
|
+ {2, nullptr, "ApplyResponse"},
|
|
|
+ {3, nullptr, "ApplyResponseAsync"},
|
|
|
+ {10, nullptr, "Suspend"},
|
|
|
+ {100, nullptr, "GetAccountId"},
|
|
|
+ {101, nullptr, "GetLinkedNintendoAccountId"},
|
|
|
+ {102, nullptr, "GetNickname"},
|
|
|
+ {103, nullptr, "GetProfileImage"},
|
|
|
+ {110, nullptr, "RegisterUserAsync"},
|
|
|
+ {111, nullptr, "GetUid"},
|
|
|
+ };
|
|
|
+ // clang-format on
|
|
|
+
|
|
|
+ RegisterHandlers(functions);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+class DAUTH_O final : public ServiceFramework<DAUTH_O> {
|
|
|
+public:
|
|
|
+ explicit DAUTH_O(Common::UUID) : ServiceFramework("dauth:o") {
|
|
|
+ // clang-format off
|
|
|
+ static const FunctionInfo functions[] = {
|
|
|
+ {0, nullptr, "EnsureAuthenticationTokenCacheAsync"}, // [5.0.0-5.1.0] GeneratePostData
|
|
|
+ {1, nullptr, "LoadAuthenticationTokenCache"}, // 6.0.0+
|
|
|
+ {2, nullptr, "InvalidateAuthenticationTokenCache"}, // 6.0.0+
|
|
|
+ {10, nullptr, "EnsureEdgeTokenCacheAsync"}, // 6.0.0+
|
|
|
+ {11, nullptr, "LoadEdgeTokenCache"}, // 6.0.0+
|
|
|
+ {12, nullptr, "InvalidateEdgeTokenCache"}, // 6.0.0+
|
|
|
+ };
|
|
|
+ // clang-format on
|
|
|
+
|
|
|
+ RegisterHandlers(functions);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// 6.0.0+
|
|
|
+class IAsyncResult final : public ServiceFramework<IAsyncResult> {
|
|
|
+public:
|
|
|
+ explicit IAsyncResult(Common::UUID user_id) : ServiceFramework("IAsyncResult") {
|
|
|
+ // clang-format off
|
|
|
+ static const FunctionInfo functions[] = {
|
|
|
+ {0, nullptr, "GetResult"},
|
|
|
+ {1, nullptr, "Cancel"},
|
|
|
+ {2, nullptr, "IsAvailable"},
|
|
|
+ {3, nullptr, "GetSystemEvent"},
|
|
|
+ };
|
|
|
+ // clang-format on
|
|
|
+
|
|
|
+ RegisterHandlers(functions);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
void Module::Interface::GetUserCount(Kernel::HLERequestContext& ctx) {
|
|
|
LOG_DEBUG(Service_ACC, "called");
|
|
|
IPC::ResponseBuilder rb{ctx, 3};
|