mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-30 12:25:49 +00:00
3.3 KiB
3.3 KiB
libSceLibreSsl3 technical debt
Unknown function info
- libSceLibreSsl3 pending exports - 81 named callable exports, excluding
CRYPTO_memcmp,MD5,SHA1,d2i_ASN1_INTEGER,EVP_PKEY_up_refandEC_KEY_up_ref, remain unimplemented from the PS5 3.20 export table, cross-checked against the same module in PS5 firmware 13.60. Their signatures and behaviour are unverified; the declarations use the no-parameter unknown-signature convention and throw throughNotImplemented_nid_no_patch.
Functional
- ASN.1 integer decoding throws on rejected encodings/allocation failures instead of matching native NULL/error handling. Redundant-sign/empty-content rejection retains old output that the module frees and clears. The decoder does not populate the legacy queue; remaining LibreSSL3 ERR exports throw. 13.42 native-PC evidence, using a recording allocator, confirms tested replacement/free order, allocation cleanup and negative-length NULL returns. Nonnegative null input faults natively and throws here. Console/application-heap ABI and untested error-precedence/overflow combinations remain unverified. Contracts follow LibreSSL 4.0.0. Closes when: error/replacement semantics and console/allocator interoperability are verified.
- CRYPTO_memcmp follows the public LibreSSL signature and equality contract, without PS5 verification. The exact nonzero result for unequal buffers is unspecified by that contract. Content-independent execution of its volatile byte reads still depends on the compiler; inspect optimized code when changing toolchains. Closes when: measured on a PS5 and the supported toolchains' generated code is checked.
- MD5 and SHA1 (libSceLibreSsl3) - follow LibreSSL's md5.c, sha1.c and hash through libSceLibreSsl's
MD5_*andSHA1_*. A null digest buffer, which LibreSSL 4.0.0 does not check, throws. Nothing is checked on the console - EVP_PKEY_up_ref and EC_KEY_up_ref - console layouts and retain/release interoperability are unverified. The 32-byte EVP and 64-byte EC layouts, with counters at offsets 4 and 48, follow LibreSSL 4.0.0
evp/evp_local.h,evp/p_lib.c,ec/ec_local.handec/ec_key.c. Atomic retains replace its internal mutex; future releases must synchronize with the same counters. With no key constructors/destructors in this module, tests use caller-owned objects without validating allocator or destruction compatibility. Null keys and signed-counter overflow, undefined upstream, throw without mutation. Closes when: console layouts and lifetime interoperability are measured.