mirror of
https://git.suyu.dev/suyu/suyu
synced 2024-11-06 07:17:53 +00:00
5b0a9f8ba8
Applies the override specifier where applicable. In the case of destructors that are defaulted in their definition, they can simply be removed. This also removes the unnecessary inclusions being done in audin_u and audrec_u, given their close proximity.
130 lines
4.2 KiB
C++
130 lines
4.2 KiB
C++
// Copyright 2018 yuzu emulator team
|
|
// Licensed under GPLv2 or any later version
|
|
// Refer to the license.txt file included.
|
|
|
|
#include "core/hle/ipc_helpers.h"
|
|
#include "core/hle/kernel/hle_ipc.h"
|
|
#include "core/hle/service/service.h"
|
|
#include "core/hle/service/sm/sm.h"
|
|
#include "core/hle/service/ssl/ssl.h"
|
|
|
|
namespace Service::SSL {
|
|
|
|
class ISslConnection final : public ServiceFramework<ISslConnection> {
|
|
public:
|
|
ISslConnection() : ServiceFramework("ISslConnection") {
|
|
static const FunctionInfo functions[] = {
|
|
{0, nullptr, "SetSocketDescriptor"},
|
|
{1, nullptr, "SetHostName"},
|
|
{2, nullptr, "SetVerifyOption"},
|
|
{3, nullptr, "SetIoMode"},
|
|
{4, nullptr, "GetSocketDescriptor"},
|
|
{5, nullptr, "GetHostName"},
|
|
{6, nullptr, "GetVerifyOption"},
|
|
{7, nullptr, "GetIoMode"},
|
|
{8, nullptr, "DoHandshake"},
|
|
{9, nullptr, "DoHandshakeGetServerCert"},
|
|
{10, nullptr, "Read"},
|
|
{11, nullptr, "Write"},
|
|
{12, nullptr, "Pending"},
|
|
{13, nullptr, "Peek"},
|
|
{14, nullptr, "Poll"},
|
|
{15, nullptr, "GetVerifyCertError"},
|
|
{16, nullptr, "GetNeededServerCertBufferSize"},
|
|
{17, nullptr, "SetSessionCacheMode"},
|
|
{18, nullptr, "GetSessionCacheMode"},
|
|
{19, nullptr, "FlushSessionCache"},
|
|
{20, nullptr, "SetRenegotiationMode"},
|
|
{21, nullptr, "GetRenegotiationMode"},
|
|
{22, nullptr, "SetOption"},
|
|
{23, nullptr, "GetOption"},
|
|
{24, nullptr, "GetVerifyCertErrors"},
|
|
{25, nullptr, "GetCipherInfo"},
|
|
};
|
|
RegisterHandlers(functions);
|
|
}
|
|
};
|
|
|
|
class ISslContext final : public ServiceFramework<ISslContext> {
|
|
public:
|
|
ISslContext() : ServiceFramework("ISslContext") {
|
|
static const FunctionInfo functions[] = {
|
|
{0, &ISslContext::SetOption, "SetOption"},
|
|
{1, nullptr, "GetOption"},
|
|
{2, &ISslContext::CreateConnection, "CreateConnection"},
|
|
{3, nullptr, "GetConnectionCount"},
|
|
{4, nullptr, "ImportServerPki"},
|
|
{5, nullptr, "ImportClientPki"},
|
|
{6, nullptr, "RemoveServerPki"},
|
|
{7, nullptr, "RemoveClientPki"},
|
|
{8, nullptr, "RegisterInternalPki"},
|
|
{9, nullptr, "AddPolicyOid"},
|
|
{10, nullptr, "ImportCrl"},
|
|
{11, nullptr, "RemoveCrl"},
|
|
};
|
|
RegisterHandlers(functions);
|
|
}
|
|
|
|
private:
|
|
void SetOption(Kernel::HLERequestContext& ctx) {
|
|
LOG_WARNING(Service_SSL, "(STUBBED) called");
|
|
|
|
IPC::RequestParser rp{ctx};
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2};
|
|
rb.Push(RESULT_SUCCESS);
|
|
}
|
|
|
|
void CreateConnection(Kernel::HLERequestContext& ctx) {
|
|
LOG_WARNING(Service_SSL, "(STUBBED) called");
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
rb.Push(RESULT_SUCCESS);
|
|
rb.PushIpcInterface<ISslConnection>();
|
|
}
|
|
};
|
|
|
|
class SSL final : public ServiceFramework<SSL> {
|
|
public:
|
|
explicit SSL() : ServiceFramework{"ssl"} {
|
|
// clang-format off
|
|
static const FunctionInfo functions[] = {
|
|
{0, &SSL::CreateContext, "CreateContext"},
|
|
{1, nullptr, "GetContextCount"},
|
|
{2, nullptr, "GetCertificates"},
|
|
{3, nullptr, "GetCertificateBufSize"},
|
|
{4, nullptr, "DebugIoctl"},
|
|
{5, &SSL::SetInterfaceVersion, "SetInterfaceVersion"},
|
|
{6, nullptr, "FlushSessionCache"},
|
|
};
|
|
// clang-format on
|
|
|
|
RegisterHandlers(functions);
|
|
}
|
|
|
|
private:
|
|
u32 ssl_version{};
|
|
void CreateContext(Kernel::HLERequestContext& ctx) {
|
|
LOG_WARNING(Service_SSL, "(STUBBED) called");
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
rb.Push(RESULT_SUCCESS);
|
|
rb.PushIpcInterface<ISslContext>();
|
|
}
|
|
|
|
void SetInterfaceVersion(Kernel::HLERequestContext& ctx) {
|
|
LOG_DEBUG(Service_SSL, "called");
|
|
|
|
IPC::RequestParser rp{ctx};
|
|
ssl_version = rp.Pop<u32>();
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2};
|
|
rb.Push(RESULT_SUCCESS);
|
|
}
|
|
};
|
|
|
|
void InstallInterfaces(SM::ServiceManager& service_manager) {
|
|
std::make_shared<SSL>()->InstallAsService(service_manager);
|
|
}
|
|
|
|
} // namespace Service::SSL
|