diff --git a/src/core/libraries/network/http.cpp b/src/core/libraries/network/http.cpp index 9a6fb9927..7177da638 100644 --- a/src/core/libraries/network/http.cpp +++ b/src/core/libraries/network/http.cpp @@ -492,8 +492,9 @@ int PS4_SYSV_ABI sceHttpsFreeCaList() { return ORBIS_OK; } -int PS4_SYSV_ABI sceHttpsGetCaList() { - LOG_ERROR(Lib_Http, "(STUBBED) called"); +int PS4_SYSV_ABI sceHttpsGetCaList(int httpCtxId, OrbisHttpsCaList* list) { + LOG_ERROR(Lib_Http, "(DUMMY) called, httpCtxId = {}", httpCtxId); + list->certsNum = 0; return ORBIS_OK; } diff --git a/src/core/libraries/network/http.h b/src/core/libraries/network/http.h index cc9ca57af..228080207 100644 --- a/src/core/libraries/network/http.h +++ b/src/core/libraries/network/http.h @@ -4,6 +4,7 @@ #pragma once #include "common/types.h" +#include "core/libraries/network/ssl.h" namespace Core::Loader { class SymbolsResolver; @@ -24,6 +25,8 @@ struct OrbisHttpUriElement { u8 reserved[10]; }; +using OrbisHttpsCaList = Libraries::Ssl::OrbisSslCaList; + int PS4_SYSV_ABI sceHttpAbortRequest(); int PS4_SYSV_ABI sceHttpAbortRequestForce(); int PS4_SYSV_ABI sceHttpAbortWaitRequest(); @@ -120,7 +123,7 @@ int PS4_SYSV_ABI sceHttpSetResponseHeaderMaxSize(); int PS4_SYSV_ABI sceHttpSetSendTimeOut(); int PS4_SYSV_ABI sceHttpSetSocketCreationCallback(); int PS4_SYSV_ABI sceHttpsFreeCaList(); -int PS4_SYSV_ABI sceHttpsGetCaList(); +int PS4_SYSV_ABI sceHttpsGetCaList(int httpCtxId, OrbisHttpsCaList* list); int PS4_SYSV_ABI sceHttpsGetSslError(); int PS4_SYSV_ABI sceHttpsLoadCert(); int PS4_SYSV_ABI sceHttpsSetMinSslVersion(); diff --git a/src/core/libraries/network/ssl.cpp b/src/core/libraries/network/ssl.cpp index 1e013bc26..8d6e691d4 100644 --- a/src/core/libraries/network/ssl.cpp +++ b/src/core/libraries/network/ssl.cpp @@ -633,8 +633,17 @@ int PS4_SYSV_ABI sceSslFreeSslCertName() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSslGetCaCerts() { +struct OrbisSslCaCerts { + void* certs; + u64 num; + void* pool; +}; + +int PS4_SYSV_ABI sceSslGetCaCerts(int sslCtxId, OrbisSslCaCerts* certs) { LOG_ERROR(Lib_Ssl, "(STUBBED) called"); + certs->certs = nullptr; + certs->num = 0; + certs->pool = nullptr; return ORBIS_OK; } diff --git a/src/core/libraries/network/ssl.h b/src/core/libraries/network/ssl.h index 051c6363e..fd55f528e 100644 --- a/src/core/libraries/network/ssl.h +++ b/src/core/libraries/network/ssl.h @@ -11,6 +11,13 @@ class SymbolsResolver; namespace Libraries::Ssl { +struct OrbisSslCaCerts; + +struct OrbisSslCaList { + void* certs; + int certsNum; +}; + int PS4_SYSV_ABI CA_MGMT_allocCertDistinguishedName(); int PS4_SYSV_ABI CA_MGMT_certDistinguishedNameCompare(); int PS4_SYSV_ABI CA_MGMT_convertKeyBlobToPKCS8Key(); @@ -136,7 +143,7 @@ int PS4_SYSV_ABI sceSslEnableOptionInternal(); int PS4_SYSV_ABI sceSslFreeCaCerts(); int PS4_SYSV_ABI sceSslFreeCaList(); int PS4_SYSV_ABI sceSslFreeSslCertName(); -int PS4_SYSV_ABI sceSslGetCaCerts(); +int PS4_SYSV_ABI sceSslGetCaCerts(int sslCtxId, OrbisSslCaCerts* certs); int PS4_SYSV_ABI sceSslGetCaList(); int PS4_SYSV_ABI sceSslGetIssuerName(); int PS4_SYSV_ABI sceSslGetMemoryPoolStats(); diff --git a/src/core/libraries/network/ssl2.cpp b/src/core/libraries/network/ssl2.cpp index 701f091a3..4289a7382 100644 --- a/src/core/libraries/network/ssl2.cpp +++ b/src/core/libraries/network/ssl2.cpp @@ -128,8 +128,18 @@ int PS4_SYSV_ABI sceSslGetAlpnSelected() { return ORBIS_OK; } -int PS4_SYSV_ABI sceSslGetCaCerts() { - LOG_ERROR(Lib_Ssl2, "(STUBBED) called"); +struct OrbisSslCaCerts { + void* certs; + u64 num; + void* pool; +}; + +int PS4_SYSV_ABI sceSslGetCaCerts(int sslCtxId, OrbisSslCaCerts* certs) { + // check if it is same as libSceSsl + LOG_ERROR(Lib_Ssl2, "(DUMMY) called"); + certs->certs = nullptr; + certs->num = 0; + certs->pool = nullptr; return ORBIS_OK; }