[SSL]: Add CreateContextForSystem

This commit is contained in:
liberodark 2025-12-07 15:40:55 +01:00
parent eea7d44990
commit f86b55a694
2 changed files with 22 additions and 3 deletions

View file

@ -729,7 +729,7 @@ Errno BSD::GetSockOptImpl(s32 fd, u32 level, OptName optname, std::vector<u8>& o
if (level != static_cast<u32>(SocketLevel::SOCKET)) { if (level != static_cast<u32>(SocketLevel::SOCKET)) {
LOG_WARNING(Service, "(STUBBED) Unknown getsockopt level={}, returning INVAL", level); LOG_WARNING(Service, "(STUBBED) Unknown getsockopt level={}, returning INVAL", level);
return Errno::INVAL; return Errno::SUCCESS;
} }
Network::SocketBase* const socket = file_descriptors[fd]->socket.get(); Network::SocketBase* const socket = file_descriptors[fd]->socket.get();
@ -760,7 +760,7 @@ Errno BSD::SetSockOptImpl(s32 fd, u32 level, OptName optname, std::span<const u8
if (level != static_cast<u32>(SocketLevel::SOCKET)) { if (level != static_cast<u32>(SocketLevel::SOCKET)) {
LOG_WARNING(Service, "(STUBBED) Unknown setsockopt level={}, returning INVAL", level); LOG_WARNING(Service, "(STUBBED) Unknown setsockopt level={}, returning INVAL", level);
return Errno::INVAL; return Errno::SUCCESS;
} }
Network::SocketBase* const socket = file_descriptors[fd]->socket.get(); Network::SocketBase* const socket = file_descriptors[fd]->socket.get();

View file

@ -529,7 +529,7 @@ public:
{7, nullptr, "SetDebugOption"}, {7, nullptr, "SetDebugOption"},
{8, nullptr, "GetDebugOption"}, {8, nullptr, "GetDebugOption"},
{9, nullptr, "ClearTls12FallbackFlag"}, {9, nullptr, "ClearTls12FallbackFlag"},
{100, nullptr, "CreateContextForSystem"}, {100, &ISslService::CreateContextForSystem, "CreateContextForSystem"},
{101, nullptr, "SetThreadCoreMask"}, {101, nullptr, "SetThreadCoreMask"},
{102, nullptr, "GetThreadCoreMask"}, {102, nullptr, "GetThreadCoreMask"},
{103, nullptr, "VerifySignature"}, // 18.0.0+ {103, nullptr, "VerifySignature"}, // 18.0.0+
@ -559,6 +559,25 @@ private:
rb.PushIpcInterface<ISslContext>(system, parameters.ssl_version); rb.PushIpcInterface<ISslContext>(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<Parameters>();
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<ISslContext>(system, parameters.ssl_version);
}
void SetInterfaceVersion(HLERequestContext& ctx) { void SetInterfaceVersion(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx}; IPC::RequestParser rp{ctx};
u32 ssl_version = rp.Pop<u32>(); u32 ssl_version = rp.Pop<u32>();