Files
AnyPS5/docs/dev/debt/libSceSsl.md
T

4.2 KiB

libSceSsl technical debt

Unknown function info

  • sceSslCreateConnection, sceSslDeleteConnection, sceSslSetVerifyCallback, sceSslConnect, sceSslRead, sceSslWrite (libSceSsl) - imported by ffmpeg.prx. The repository has no TLS client, so a connection only records its context, socket, host and verification callback, and sceSslConnect, sceSslRead and sceSslWrite throw NotImplemented_nid_no_patch(__func__) until there is a transport. Signatures follow SharpProspero, which also says the socket stays open after sceSslDeleteConnection. An unknown context returns SSL_ERROR_INVALID_ID (0x8095F006), as sceSslGetMemoryPoolStats does on the console and as KytyPS5 and sharpemu return for other context calls; for an unknown connection, a connection whose context was terminated and a null host the console's codes are unknown, so these throw. The socket is not checked when the connection is created, sceSslTerm leaves the context's connections to sceSslDeleteConnection, and sceSslSetVerifyCallback accepts any callback, null included, and returns 0; none of this is verified on the console. SSL_ERROR_BEFORE_INIT (0x8095F001) is never returned, as the library keeps no state apart from its contexts
  • sceSslClose (libSceSsl) - unknown signature
  • sceSslGetSerialNumber (libSceSsl) - unknown signature
  • sceSslGetCaList, sceSslFreeCaList, sceSslUnloadCert (libSceSsl) - signatures and the 16-byte SceSslCaList layout (an array of certificate handles and a 32-bit count) follow SharpProspero and shadPS4's OrbisSslCaList, not confirmed for the PS5. On the console the list holds the certificate authorities the SSL service has; shadPS4 returns a placeholder certificate from sceSslGetCaCerts because Rise of the Tomb Raider fails its initialization checks without one. No root certificate bundle is shipped and no loaded certificate is kept, so here a context holds none: sceSslGetCaList clears the list and returns NOT_FOUND, as sceSslGetCaCerts does, sceSslFreeCaList accepts only that cleared list, and sceSslUnloadCert (imported by PPSA15508) has nothing to drop and is assumed to return 0. A null list returns 0x8095177A, which sceSslGetCaCerts and KytyPS5 return for a null argument (shadPS4, PS4, returns 0x8095F007). An unknown context throws (KytyPS5 returns SSL_ERROR_INVALID_ID, 0x8095F006, from sceSslGetCaCerts), and so does a list sceSslGetCaList did not return
  • PPSA01317 imports declared without parameters, signatures unknown: sceSslDisableVerifyOption, sceSslGetAlpnSelected, sceSslSetAlpn, sceSslSetMinSslVersion (libSceSsl). They act on a connection, which sceSslCreateConnection does not create yet, so they throw until connections exist

Functional