diff --git a/src/core/hle/service/ssl/ssl.cpp b/src/core/hle/service/ssl/ssl.cpp index 61ef6d4bd..f0a92a581 100644 --- a/src/core/hle/service/ssl/ssl.cpp +++ b/src/core/hle/service/ssl/ssl.cpp @@ -529,7 +529,7 @@ public: {7, nullptr, "SetDebugOption"}, {8, nullptr, "GetDebugOption"}, {9, nullptr, "ClearTls12FallbackFlag"}, - {100, nullptr, "CreateContextForSystem"}, + {100, &ISslService::CreateContextForSystem, "CreateContextForSystem"}, {101, nullptr, "SetThreadCoreMask"}, {102, nullptr, "GetThreadCoreMask"}, {103, nullptr, "VerifySignature"}, // 18.0.0+ @@ -559,6 +559,25 @@ private: rb.PushIpcInterface(system, parameters.ssl_version); } + void CreateContextForSystem(HLERequestContext& ctx) { + struct Parameters { + SslVersion ssl_version; + INSERT_PADDING_BYTES(0x4); + u64 pid_placeholder; + }; + static_assert(sizeof(Parameters) == 0x10, "Parameters is an invalid size"); + + IPC::RequestParser rp{ctx}; + const auto parameters = rp.PopRaw(); + + LOG_WARNING(Service_SSL, "(STUBBED) called, api_version={}, pid_placeholder={}", + parameters.ssl_version.api_version, parameters.pid_placeholder); + + IPC::ResponseBuilder rb{ctx, 2, 0, 1}; + rb.Push(ResultSuccess); + rb.PushIpcInterface(system, parameters.ssl_version); + } + void SetInterfaceVersion(HLERequestContext& ctx) { IPC::RequestParser rp{ctx}; u32 ssl_version = rp.Pop();