From 60f3ed76072e7af6776c432075078df9076a51ec Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sat, 12 Oct 2019 12:48:44 +0200 Subject: [PATCH] stub cellSsl --- rpcs3/Emu/Cell/Modules/cellSsl.cpp | 218 ++++++++++++++++++++++++----- rpcs3/Emu/Cell/Modules/cellSsl.h | 204 +++++++++++++++++++++++++++ rpcs3/emucore.vcxproj | 1 + rpcs3/emucore.vcxproj.filters | 9 +- 4 files changed, 397 insertions(+), 35 deletions(-) create mode 100644 rpcs3/Emu/Cell/Modules/cellSsl.h diff --git a/rpcs3/Emu/Cell/Modules/cellSsl.cpp b/rpcs3/Emu/Cell/Modules/cellSsl.cpp index 9c448e3953..207ca5a4b9 100644 --- a/rpcs3/Emu/Cell/Modules/cellSsl.cpp +++ b/rpcs3/Emu/Cell/Modules/cellSsl.cpp @@ -3,25 +3,69 @@ #include #include +#include "cellSsl.h" #include "Emu/Cell/PPUModule.h" #include "Utilities/File.h" #include "Emu/VFS.h" +#include "Emu/IdManager.h" + +#include "cellRtc.h" LOG_CHANNEL(cellSsl); - - -enum SpecialCerts { BaltimoreCert = 6, Class3G2V2Cert = 13, ClassSSV4Cert = 15, EntrustNetCert = 18, GTECyberTrustGlobalCert = 23 }; - -s32 cellSslInit(vm::ptr pool, u32 poolSize) +template<> +void fmt_class_string::format(std::string& out, u64 arg) { - cellSsl.todo("cellSslInit(pool=0x%x, poolSize=%d)", pool, poolSize); + format_enum(out, arg, [](auto error) + { + switch (error) + { + STR_CASE(CELL_SSL_ERROR_NOT_INITIALIZED); + STR_CASE(CELL_SSL_ERROR_ALREADY_INITIALIZED); + STR_CASE(CELL_SSL_ERROR_INITIALIZATION_FAILED); + STR_CASE(CELL_SSL_ERROR_NO_BUFFER); + STR_CASE(CELL_SSL_ERROR_INVALID_CERTIFICATE); + STR_CASE(CELL_SSL_ERROR_UNRETRIEVABLE); + STR_CASE(CELL_SSL_ERROR_INVALID_FORMAT); + STR_CASE(CELL_SSL_ERROR_NOT_FOUND); + STR_CASE(CELL_SSL_ERROR_INVALID_TIME); + STR_CASE(CELL_SSL_ERROR_INAVLID_NEGATIVE_TIME); + STR_CASE(CELL_SSL_ERROR_INCORRECT_TIME); + STR_CASE(CELL_SSL_ERROR_UNDEFINED_TIME_TYPE); + STR_CASE(CELL_SSL_ERROR_NO_MEMORY); + STR_CASE(CELL_SSL_ERROR_NO_STRING); + STR_CASE(CELL_SSL_ERROR_UNKNOWN_LOAD_CERT); + } + + return unknown; + }); +} + +error_code cellSslInit(vm::ptr pool, u32 poolSize) +{ + cellSsl.todo("cellSslInit(pool=*0x%x, poolSize=%d)", pool, poolSize); + + const auto manager = g_fxo->get(); + + if (manager->is_init) + return CELL_SSL_ERROR_ALREADY_INITIALIZED; + + manager->is_init = true; + return CELL_OK; } -s32 cellSslEnd() +error_code cellSslEnd() { - UNIMPLEMENTED_FUNC(cellSsl); + cellSsl.todo("cellSslEnd()"); + + const auto manager = g_fxo->get(); + + if (!manager->is_init) + return CELL_SSL_ERROR_NOT_INITIALIZED; + + manager->is_init = false; + return CELL_OK; } @@ -58,9 +102,9 @@ std::string getCert(const std::string certPath, const int certID, const bool isN return fs::file(filePath).to_string(); } -s32 cellSslCertificateLoader(u64 flag, vm::ptr buffer, u32 size, vm::ptr required) +error_code cellSslCertificateLoader(u64 flag, vm::ptr buffer, u32 size, vm::ptr required) { - cellSsl.trace("cellSslCertificateLoader(flag=%llu, buffer=0x%x, size=%zu, required=0x%x)", flag, buffer, size, required); + cellSsl.trace("cellSslCertificateLoader(flag=%llu, buffer=*0x%x, size=%zu, required=*0x%x)", flag, buffer, size, required); const std::bitset<58> flagBits(flag); const std::string certPath = vfs::get("/dev_flash/data/cert/"); @@ -94,69 +138,179 @@ s32 cellSslCertificateLoader(u64 flag, vm::ptr buffer, u32 size, vm::ptr sslCert, vm::cpptr sboData, vm::ptr sboLength) { - UNIMPLEMENTED_FUNC(cellSsl); + cellSsl.todo("cellSslCertGetSerialNumber(sslCert=*0x%x, sboData=**0x%x, sboLength=*0x%x)", sslCert, sboData, sboLength); + + if (!g_fxo->get()->is_init) + return CELL_SSL_ERROR_NOT_INITIALIZED; + + if (!sslCert) + return CELL_SSL_ERROR_INVALID_CERTIFICATE; + + if (!sboData || !sboLength) + return CELL_SSL_ERROR_NO_BUFFER; + return CELL_OK; } -s32 cellSslCertGetPublicKey() +error_code cellSslCertGetPublicKey(vm::cptr sslCert, vm::cpptr sboData, vm::ptr sboLength) { - UNIMPLEMENTED_FUNC(cellSsl); + cellSsl.todo("cellSslCertGetPublicKey(sslCert=*0x%x, sboData=**0x%x, sboLength=*0x%x)", sslCert, sboData, sboLength); + + if (!g_fxo->get()->is_init) + return CELL_SSL_ERROR_NOT_INITIALIZED; + + if (!sslCert) + return CELL_SSL_ERROR_INVALID_CERTIFICATE; + + if (!sboData || !sboLength) + return CELL_SSL_ERROR_NO_BUFFER; + return CELL_OK; } -s32 cellSslCertGetRsaPublicKeyModulus() +error_code cellSslCertGetRsaPublicKeyModulus(vm::cptr sslCert, vm::cpptr sboData, vm::ptr sboLength) { - UNIMPLEMENTED_FUNC(cellSsl); + cellSsl.todo("cellSslCertGetRsaPublicKeyModulus(sslCert=*0x%x, sboData=**0x%x, sboLength=*0x%x)", sslCert, sboData, sboLength); + + if (!g_fxo->get()->is_init) + return CELL_SSL_ERROR_NOT_INITIALIZED; + + if (!sslCert) + return CELL_SSL_ERROR_INVALID_CERTIFICATE; + + if (!sboData || !sboLength) + return CELL_SSL_ERROR_NO_BUFFER; + return CELL_OK; } -s32 cellSslCertGetRsaPublicKeyExponent() +error_code cellSslCertGetRsaPublicKeyExponent(vm::cptr sslCert, vm::cpptr sboData, vm::ptr sboLength) { - UNIMPLEMENTED_FUNC(cellSsl); + cellSsl.todo("cellSslCertGetRsaPublicKeyExponent(sslCert=*0x%x, sboData=**0x%x, sboLength=*0x%x)", sslCert, sboData, sboLength); + + if (!g_fxo->get()->is_init) + return CELL_SSL_ERROR_NOT_INITIALIZED; + + if (!sslCert) + return CELL_SSL_ERROR_INVALID_CERTIFICATE; + + if (!sboData || !sboLength) + return CELL_SSL_ERROR_NO_BUFFER; + return CELL_OK; } -s32 cellSslCertGetNotBefore() +error_code cellSslCertGetNotBefore(vm::cptr sslCert, vm::ptr begin) { - UNIMPLEMENTED_FUNC(cellSsl); + cellSsl.todo("cellSslCertGetNotBefore(sslCert=*0x%x, begin=*0x%x)", sslCert, begin); + + if (!g_fxo->get()->is_init) + return CELL_SSL_ERROR_NOT_INITIALIZED; + + if (!sslCert) + return CELL_SSL_ERROR_INVALID_CERTIFICATE; + + if (!begin) + return CELL_SSL_ERROR_NO_BUFFER; + return CELL_OK; } -s32 cellSslCertGetNotAfter() +error_code cellSslCertGetNotAfter(vm::cptr sslCert, vm::ptr limit) { - UNIMPLEMENTED_FUNC(cellSsl); + cellSsl.todo("cellSslCertGetNotAfter(sslCert=*0x%x, limit=*0x%x)", sslCert, limit); + + if (!g_fxo->get()->is_init) + return CELL_SSL_ERROR_NOT_INITIALIZED; + + if (!sslCert) + return CELL_SSL_ERROR_INVALID_CERTIFICATE; + + if (!limit) + return CELL_SSL_ERROR_NO_BUFFER; + return CELL_OK; } -s32 cellSslCertGetSubjectName() +error_code cellSslCertGetSubjectName(vm::cptr sslCert, vm::cpptr certName) { - UNIMPLEMENTED_FUNC(cellSsl); + cellSsl.todo("cellSslCertGetSubjectName(sslCert=*0x%x, certName=**0x%x)", sslCert, certName); + + if (!g_fxo->get()->is_init) + return CELL_SSL_ERROR_NOT_INITIALIZED; + + if (!sslCert) + return CELL_SSL_ERROR_INVALID_CERTIFICATE; + + if (!certName) + return CELL_SSL_ERROR_NO_BUFFER; + return CELL_OK; } -s32 cellSslCertGetIssuerName() +error_code cellSslCertGetIssuerName(vm::cptr sslCert, vm::cpptr certName) { - UNIMPLEMENTED_FUNC(cellSsl); + cellSsl.todo("cellSslCertGetIssuerName(sslCert=*0x%x, certName=**0x%x)", sslCert, certName); + + if (!g_fxo->get()->is_init) + return CELL_SSL_ERROR_NOT_INITIALIZED; + + if (!sslCert) + return CELL_SSL_ERROR_INVALID_CERTIFICATE; + + if (!certName) + return CELL_SSL_ERROR_NO_BUFFER; + return CELL_OK; } -s32 cellSslCertGetNameEntryCount() +error_code cellSslCertGetNameEntryCount(vm::cptr certName, vm::ptr entryCount) { - UNIMPLEMENTED_FUNC(cellSsl); + cellSsl.todo("cellSslCertGetNameEntryCount(certName=*0x%x, entryCount=*0x%x)", certName, entryCount); + + if (!g_fxo->get()->is_init) + return CELL_SSL_ERROR_NOT_INITIALIZED; + + if (!certName) + return CELL_SSL_ERROR_INVALID_CERTIFICATE; + + if (!entryCount) + return CELL_SSL_ERROR_NO_BUFFER; + return CELL_OK; } -s32 cellSslCertGetNameEntryInfo() +error_code cellSslCertGetNameEntryInfo(vm::cptr certName, u32 entryNum, vm::cpptr oidName, vm::cpptr value, vm::ptr valueLength, s32 flag) { - UNIMPLEMENTED_FUNC(cellSsl); + cellSsl.todo("cellSslCertGetNameEntryInfo(certName=*0x%x, entryNum=%d, oidName=**0x%x, value=**0x%x, valueLength=*0x%x, flag=0x%x)", certName, entryNum, oidName, value, valueLength, flag); + + if (!g_fxo->get()->is_init) + return CELL_SSL_ERROR_NOT_INITIALIZED; + + if (!certName) + return CELL_SSL_ERROR_INVALID_CERTIFICATE; + + if (!oidName || !value || !valueLength) + return CELL_SSL_ERROR_NO_BUFFER; + return CELL_OK; } -s32 cellSslCertGetMd5Fingerprint() +error_code cellSslCertGetMd5Fingerprint(vm::cptr sslCert, vm::cptr buf, vm::cptr plen) { - UNIMPLEMENTED_FUNC(cellSsl); + cellSsl.todo("cellSslCertGetMd5Fingerprint(sslCert=*0x%x, buf=*0x%x, plen=*0x%x)", sslCert, buf, plen); + + if (!g_fxo->get()->is_init) + return CELL_SSL_ERROR_NOT_INITIALIZED; + + if (!sslCert) + return CELL_SSL_ERROR_INVALID_CERTIFICATE; + + if (!buf || !plen) + return CELL_SSL_ERROR_NO_BUFFER; + return CELL_OK; } diff --git a/rpcs3/Emu/Cell/Modules/cellSsl.h b/rpcs3/Emu/Cell/Modules/cellSsl.h new file mode 100644 index 0000000000..3324e8e001 --- /dev/null +++ b/rpcs3/Emu/Cell/Modules/cellSsl.h @@ -0,0 +1,204 @@ +#pragma once + +enum CellSslError : u32 +{ + CELL_SSL_ERROR_NOT_INITIALIZED = 0x80740001, + CELL_SSL_ERROR_ALREADY_INITIALIZED = 0x80740002, + CELL_SSL_ERROR_INITIALIZATION_FAILED = 0x80740003, + CELL_SSL_ERROR_NO_BUFFER = 0x80740004, + CELL_SSL_ERROR_INVALID_CERTIFICATE = 0x80740005, + CELL_SSL_ERROR_UNRETRIEVABLE = 0x80740006, + CELL_SSL_ERROR_INVALID_FORMAT = 0x80740007, + CELL_SSL_ERROR_NOT_FOUND = 0x80740008, + CELL_SSL_ERROR_INVALID_TIME = 0x80740031, + CELL_SSL_ERROR_INAVLID_NEGATIVE_TIME = 0x80740032, + CELL_SSL_ERROR_INCORRECT_TIME = 0x80740033, + CELL_SSL_ERROR_UNDEFINED_TIME_TYPE = 0x80740034, + CELL_SSL_ERROR_NO_MEMORY = 0x80740035, + CELL_SSL_ERROR_NO_STRING = 0x80740036, + CELL_SSL_ERROR_UNKNOWN_LOAD_CERT = 0x80740037 +}; + +enum // Certificate load flags +{ + CELL_SSL_LOAD_CERT_SCE01 = 0x0000000000000001ULL, + CELL_SSL_LOAD_CERT_SCE02 = 0x0000000000000002ULL, + CELL_SSL_LOAD_CERT_SCE03 = 0x0000000000000004ULL, + CELL_SSL_LOAD_CERT_SCE04 = 0x0000000000000008ULL, + CELL_SSL_LOAD_CERT_SCE05 = 0x0000000000000010ULL, + CELL_SSL_LOAD_CERT_BALTIMORE_CT = 0x0000000000000020ULL, + CELL_SSL_LOAD_CERT_CLASS1_PCA_G2_V2 = 0x0000000000000040ULL, + CELL_SSL_LOAD_CERT_CLASS1_PCA_G3_V2 = 0x0000000000000080ULL, + CELL_SSL_LOAD_CERT_CLASS1_PCA_SS_V4 = 0x0000000000000100ULL, + CELL_SSL_LOAD_CERT_CLASS2_PCA_G2_V2 = 0x0000000000000200ULL, + CELL_SSL_LOAD_CERT_CLASS2_PCA_G3_V2 = 0x0000000000000400ULL, + CELL_SSL_LOAD_CERT_CLASS2_PCA_SS_V4 = 0x0000000000000800ULL, + CELL_SSL_LOAD_CERT_CLASS3_PCA_G2_V2 = 0x0000000000001000ULL, + CELL_SSL_LOAD_CERT_CLASS3_PCA_G3_V2 = 0x0000000000002000ULL, + CELL_SSL_LOAD_CERT_CLASS3_PCA_SS_V4 = 0x0000000000004000ULL, + CELL_SSL_LOAD_CERT_CLASS4_PCA_G2_V2 = 0x0000000000008000ULL, + CELL_SSL_LOAD_CERT_CLASS4_PCA_G3_V2 = 0x0000000000010000ULL, + CELL_SSL_LOAD_CERT_ENTRUST_NET_SS_CA = 0x0000000000020000ULL, + CELL_SSL_LOAD_CERT_EQUIFAX_SEC_CA = 0x0000000000040000ULL, + CELL_SSL_LOAD_CERT_EQUIFAX_SEC_EBUS1 = 0x0000000000080000ULL, + CELL_SSL_LOAD_CERT_GEOTRUST_GCA = 0x0000000000100000ULL, + CELL_SSL_LOAD_CERT_GLOBALSIGN_RCA = 0x0000000000200000ULL, + CELL_SSL_LOAD_CERT_GTE_CT_G_RCA = 0x0000000000400000ULL, + CELL_SSL_LOAD_CERT_GTE_CT_ROOT = 0x0000000000800000ULL, + CELL_SSL_LOAD_CERT_RSA1024_V1 = 0x0000000001000000ULL, + CELL_SSL_LOAD_CERT_RSA2048_V3 = 0x0000000002000000ULL, + CELL_SSL_LOAD_CERT_RSA_SECURE_SERVER = 0x0000000004000000ULL, + CELL_SSL_LOAD_CERT_THAWTE_PREM_SCA = 0x0000000008000000ULL, + CELL_SSL_LOAD_CERT_THAWTE_SCA = 0x0000000010000000ULL, + CELL_SSL_LOAD_CERT_VALICERT_CLASS2 = 0x0000000020000000ULL, + CELL_SSL_LOAD_CERT_VERISIGN_TSA_CA = 0x0000000040000000ULL, + CELL_SSL_LOAD_CERT_AAA_CERT_SERVICES = 0x0000000080000000ULL, + CELL_SSL_LOAD_CERT_ADDTRUST_EXT_CA = 0x0000000100000000ULL, + CELL_SSL_LOAD_CERT_UTN_USERFIRST_HW = 0x0000000200000000ULL, + CELL_SSL_LOAD_CERT_EQUIFAX_SEC_G_EBUS1 = 0x0000000400000000ULL, + CELL_SSL_LOAD_CERT_CLASS3_PCA_G5 = 0x0000000800000000ULL, + CELL_SSL_LOAD_CERT_DIGICERT_HA_EV_RCA = 0x0000001000000000ULL, + CELL_SSL_LOAD_CERT_DIGICERT_A_ID_RCA = 0x0000002000000000ULL, + CELL_SSL_LOAD_CERT_DIGICERT_GLOBAL_RCA = 0x0000004000000000ULL, + CELL_SSL_LOAD_CERT_CT_G_ROOT = 0x0000008000000000ULL, + CELL_SSL_LOAD_CERT_ENTRUST_CA2048 = 0x0000010000000000ULL, + CELL_SSL_LOAD_CERT_ENTRUST_RCA = 0x0000020000000000ULL, + CELL_SSL_LOAD_CERT_GLOBALSIGN_RCA_R2 = 0x0000040000000000ULL, + CELL_SSL_LOAD_CERT_GODADDY_CLASS2_CA = 0x0000080000000000ULL, + CELL_SSL_LOAD_CERT_STARFIELD_CLASS2_CA = 0x0000100000000000ULL, + CELL_SSL_LOAD_CERT_STARFIELD_S_RC = 0x0000200000000000ULL, + CELL_SSL_LOAD_CERT_THATE_PRIMARY_RCA = 0x0000400000000000ULL, + CELL_SSL_LOAD_CERT_VALICERT_CLASS1_VA = 0x0000800000000000ULL, + CELL_SSL_LOAD_CERT_SECOM_RCA1 = 0x0001000000000000ULL, + CELL_SSL_LOAD_CERT_SECURE_TRUST_CA = 0x0002000000000000ULL, + CELL_SSL_LOAD_CERT_ENTRUST_RCA_G2 = 0x0004000000000000ULL, + CELL_SSL_LOAD_CERT_VERISIGN_U_RCA = 0x0008000000000000ULL, + CELL_SSL_LOAD_CERT_GODADDY_C2_CA_G2 = 0x0010000000000000ULL, + CELL_SSL_LOAD_CERT_STARFIELD_C2_CA_G2 = 0x0020000000000000ULL, + CELL_SSL_LOAD_CERT_STARFIELD_S_RC_G2 = 0x0040000000000000ULL, + CELL_SSL_LOAD_CERT_STARTCOM_CA = 0x0080000000000000ULL, + CELL_SSL_LOAD_CERT_STARTCOM_CA_G2 = 0x0100000000000000ULL, + CELL_SSL_LOAD_CERT_SECOM_RCA2 = 0x0200000000000000ULL, + + // Composite Flags + + CELL_SSL_LOAD_CERT_SCE = + ( + CELL_SSL_LOAD_CERT_SCE01 | + CELL_SSL_LOAD_CERT_SCE02 | + CELL_SSL_LOAD_CERT_SCE03 | + CELL_SSL_LOAD_CERT_SCE04 | + CELL_SSL_LOAD_CERT_SCE05 + ), + CELL_SSL_LOAD_CERT_SHA256 = + ( + CELL_SSL_LOAD_CERT_GLOBALSIGN_RCA_R2 | + CELL_SSL_LOAD_CERT_ENTRUST_RCA_G2 | + CELL_SSL_LOAD_CERT_VERISIGN_U_RCA | + CELL_SSL_LOAD_CERT_GODADDY_C2_CA_G2 | + CELL_SSL_LOAD_CERT_STARFIELD_C2_CA_G2 | + CELL_SSL_LOAD_CERT_STARFIELD_S_RC_G2 | + CELL_SSL_LOAD_CERT_STARTCOM_CA | + CELL_SSL_LOAD_CERT_STARTCOM_CA_G2 | + CELL_SSL_LOAD_CERT_SECOM_RCA2 + ), + CELL_SSL_LOAD_CERT_NORMAL = + ( + CELL_SSL_LOAD_CERT_BALTIMORE_CT | + CELL_SSL_LOAD_CERT_CLASS3_PCA_G2_V2 | + CELL_SSL_LOAD_CERT_CLASS3_PCA_G3_V2 | + CELL_SSL_LOAD_CERT_CLASS3_PCA_SS_V4 | + CELL_SSL_LOAD_CERT_ENTRUST_NET_SS_CA | + CELL_SSL_LOAD_CERT_EQUIFAX_SEC_CA | + CELL_SSL_LOAD_CERT_EQUIFAX_SEC_EBUS1 | + CELL_SSL_LOAD_CERT_GEOTRUST_GCA | + CELL_SSL_LOAD_CERT_GLOBALSIGN_RCA | + CELL_SSL_LOAD_CERT_GTE_CT_G_RCA | + CELL_SSL_LOAD_CERT_RSA1024_V1 | + CELL_SSL_LOAD_CERT_RSA2048_V3 | + CELL_SSL_LOAD_CERT_THAWTE_PREM_SCA | + CELL_SSL_LOAD_CERT_THAWTE_SCA | + CELL_SSL_LOAD_CERT_VALICERT_CLASS2 | + CELL_SSL_LOAD_CERT_AAA_CERT_SERVICES | + CELL_SSL_LOAD_CERT_ADDTRUST_EXT_CA | + CELL_SSL_LOAD_CERT_UTN_USERFIRST_HW | + CELL_SSL_LOAD_CERT_EQUIFAX_SEC_G_EBUS1 | + CELL_SSL_LOAD_CERT_CLASS3_PCA_G5 | + CELL_SSL_LOAD_CERT_DIGICERT_HA_EV_RCA | + CELL_SSL_LOAD_CERT_DIGICERT_A_ID_RCA | + CELL_SSL_LOAD_CERT_DIGICERT_GLOBAL_RCA | + CELL_SSL_LOAD_CERT_CT_G_ROOT | + CELL_SSL_LOAD_CERT_ENTRUST_CA2048 | + CELL_SSL_LOAD_CERT_ENTRUST_RCA | + CELL_SSL_LOAD_CERT_GODADDY_CLASS2_CA | + CELL_SSL_LOAD_CERT_STARFIELD_CLASS2_CA | + CELL_SSL_LOAD_CERT_STARFIELD_S_RC | + CELL_SSL_LOAD_CERT_THATE_PRIMARY_RCA | + CELL_SSL_LOAD_CERT_VALICERT_CLASS1_VA | + CELL_SSL_LOAD_CERT_SECOM_RCA1 | + CELL_SSL_LOAD_CERT_SECURE_TRUST_CA | + CELL_SSL_LOAD_CERT_SHA256 + ), + CELL_SSL_LOAD_CERT_ALL = + ( + CELL_SSL_LOAD_CERT_SCE | + CELL_SSL_LOAD_CERT_NORMAL + ), + CELL_SSL_LOAD_CERT_OBSOLETE = + ( + CELL_SSL_LOAD_CERT_RSA_SECURE_SERVER | + CELL_SSL_LOAD_CERT_VERISIGN_TSA_CA | + CELL_SSL_LOAD_CERT_GTE_CT_ROOT + ), + CELL_SSL_LOAD_CERT_NOT_FOR_SERVER = + ( + CELL_SSL_LOAD_CERT_CLASS1_PCA_G2_V2 | + CELL_SSL_LOAD_CERT_CLASS1_PCA_G3_V2 | + CELL_SSL_LOAD_CERT_CLASS1_PCA_SS_V4 | + CELL_SSL_LOAD_CERT_CLASS2_PCA_G2_V2 | + CELL_SSL_LOAD_CERT_CLASS2_PCA_G3_V2 | + CELL_SSL_LOAD_CERT_CLASS2_PCA_SS_V4 | + CELL_SSL_LOAD_CERT_CLASS4_PCA_G2_V2 | + CELL_SSL_LOAD_CERT_CLASS4_PCA_G3_V2 + ), +}; + +enum // Cipher +{ + CELL_SSL_CIPHER_UNKNOWN = -1, + CELL_SSL_CIPHER_RSA_WITH_3DES_EDE_CBC_SHA = 0, + CELL_SSL_CIPHER_RSA_WITH_RC4_128_SHA = 1, + CELL_SSL_CIPHER_RSA_WITH_RC4_128_MD5 = 2, + CELL_SSL_CIPHER_RSA_WITH_DES_CBC_SHA = 3, + CELL_SSL_CIPHER_RSA_EXPORT1024_WITH_DES_CBC_SHA = 4, + CELL_SSL_CIPHER_RSA_EXPORT1024_WITH_RC4_56_SHA = 5, + CELL_SSL_CIPHER_RSA_EXPORT_WITH_DES40_CBC_SHA = 6, + CELL_SSL_CIPHER_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = 7, + CELL_SSL_CIPHER_RSA_EXPORT_WITH_RC4_40_MD5 = 8 +}; + +enum // Version +{ + CELL_SSL_VERSION_UNKNOWN = -1, + CELL_SSL_VERSION_TLS1 = 0, + CELL_SSL_VERSION_SSL3 = 1 +}; + +enum // Other Constants +{ + CELL_SSL_MD5_FINGERPRINT_MAX_SIZE = 20 +}; + +enum SpecialCerts +{ + BaltimoreCert = 6, + Class3G2V2Cert = 13, + ClassSSV4Cert = 15, + EntrustNetCert = 18, + GTECyberTrustGlobalCert = 23 +}; + +struct ssl_manager +{ + atomic_t is_init{ false }; +}; diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index 5293f2abc8..32628d265f 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -382,6 +382,7 @@ + diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index 0431e61eff..f3f66f034b 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -825,10 +825,10 @@ Emu\Io - Source Files + Utilities - Source Files + Crypto @@ -1565,10 +1565,13 @@ Emu\Io - Header Files + Crypto Emu\GPU\RSX\Common + + Emu\Cell\Modules + \ No newline at end of file