|
|
@ -10,6 +10,11 @@ |
|
|
|
|
|
|
|
|
namespace Service::SSL { |
|
|
namespace Service::SSL { |
|
|
|
|
|
|
|
|
|
|
|
enum class CertificateFormat : u32 { |
|
|
|
|
|
Pem = 1, |
|
|
|
|
|
Der = 2, |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
class ISslConnection final : public ServiceFramework<ISslConnection> { |
|
|
class ISslConnection final : public ServiceFramework<ISslConnection> { |
|
|
public: |
|
|
public: |
|
|
explicit ISslConnection(Core::System& system_) : ServiceFramework{system_, "ISslConnection"} { |
|
|
explicit ISslConnection(Core::System& system_) : ServiceFramework{system_, "ISslConnection"} { |
|
|
@ -58,8 +63,8 @@ public: |
|
|
{1, nullptr, "GetOption"}, |
|
|
{1, nullptr, "GetOption"}, |
|
|
{2, &ISslContext::CreateConnection, "CreateConnection"}, |
|
|
{2, &ISslContext::CreateConnection, "CreateConnection"}, |
|
|
{3, nullptr, "GetConnectionCount"}, |
|
|
{3, nullptr, "GetConnectionCount"}, |
|
|
{4, nullptr, "ImportServerPki"}, |
|
|
|
|
|
{5, nullptr, "ImportClientPki"}, |
|
|
|
|
|
|
|
|
{4, &ISslContext::ImportServerPki, "ImportServerPki"}, |
|
|
|
|
|
{5, &ISslContext::ImportClientPki, "ImportClientPki"}, |
|
|
{6, nullptr, "RemoveServerPki"}, |
|
|
{6, nullptr, "RemoveServerPki"}, |
|
|
{7, nullptr, "RemoveClientPki"}, |
|
|
{7, nullptr, "RemoveClientPki"}, |
|
|
{8, nullptr, "RegisterInternalPki"}, |
|
|
{8, nullptr, "RegisterInternalPki"}, |
|
|
@ -94,6 +99,39 @@ private: |
|
|
rb.Push(RESULT_SUCCESS); |
|
|
rb.Push(RESULT_SUCCESS); |
|
|
rb.PushIpcInterface<ISslConnection>(system); |
|
|
rb.PushIpcInterface<ISslConnection>(system); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void ImportServerPki(Kernel::HLERequestContext& ctx) { |
|
|
|
|
|
IPC::RequestParser rp{ctx}; |
|
|
|
|
|
const auto certificate_format = rp.PopEnum<CertificateFormat>(); |
|
|
|
|
|
const auto pkcs_12_certificates = ctx.ReadBuffer(0); |
|
|
|
|
|
|
|
|
|
|
|
constexpr u64 server_id = 0; |
|
|
|
|
|
|
|
|
|
|
|
LOG_WARNING(Service_SSL, "(STUBBED) called, certificate_format={}", certificate_format); |
|
|
|
|
|
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 4}; |
|
|
|
|
|
rb.Push(RESULT_SUCCESS); |
|
|
|
|
|
rb.Push(server_id); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void ImportClientPki(Kernel::HLERequestContext& ctx) { |
|
|
|
|
|
const auto pkcs_12_certificate = ctx.ReadBuffer(0); |
|
|
|
|
|
const auto ascii_password = [&ctx] { |
|
|
|
|
|
if (ctx.CanReadBuffer(1)) { |
|
|
|
|
|
return ctx.ReadBuffer(1); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return std::vector<u8>{}; |
|
|
|
|
|
}(); |
|
|
|
|
|
|
|
|
|
|
|
constexpr u64 client_id = 0; |
|
|
|
|
|
|
|
|
|
|
|
LOG_WARNING(Service_SSL, "(STUBBED) called"); |
|
|
|
|
|
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2}; |
|
|
|
|
|
rb.Push(RESULT_SUCCESS); |
|
|
|
|
|
rb.Push(client_id); |
|
|
|
|
|
} |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
class SSL final : public ServiceFramework<SSL> { |
|
|
class SSL final : public ServiceFramework<SSL> { |
|
|
|