Port both getters from LibreSSL 4.0.0 rsa_lib.c: each output pointer is
optional, outputs are written in upstream's order, and the key is read
through the existing LibreSsl3Rsa layout, whose p, q, dmp1, dmq1 and iqmp
offsets are now pinned to rsa_local.h. A null key with a requested output,
which upstream dereferences, throws.
The additional export inventory now counts the names #13831 added: 174
callable exports, 164 named and 10 known only by NID.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Close the pkey_getters Windows environment block in libSceLibreSsl3/CMakeLists.txt: the branch lost its closing path line and endif(), so CMake did not parse the file.
libSceLibreSsl3 forwards EC_KEY_new, EC_KEY_new_by_curve_name and
EC_KEY_free here, while its EC_KEY_up_ref increments the counter at
offset 48 of LibreSSL 4.0.0's 64-byte EC_KEY. On the 8-byte keys of the
previous commit, that write lands past the end of the key.
Keys now have that layout and LibreSSL 2.5.4 EC_KEY_new's defaults:
version 1, uncompressed conversion form, the group in its group slot
and the reference count, starting at one, at offset 48. EC_KEY_free
decrements it atomically and frees the key at zero or below, as
LibreSSL does.
libSceLibreSsl3's interface and code are unchanged.
Co-authored-by: Ahmad Mujahid <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Implement strict UTC and GeneralizedTime parsing and signed day/second differences independently using C++20 calendar types. Preserve outputs on malformed input and support host wall-clock endpoints.
Validation: focused production-source regression; ASan/UBSan with leak detection disabled; 88,902 differential cases against LibreSSL 4.0.0; main stub negative control fails as expected; conventions, public headers and script registration pass. Full product Release build is still in progress; this is a recoverable candidate, not yet a ready PR.
All 1,667 open PRs were scanned. All 22 shared-file branches were manually compared, including 11 that cannot merge into main. No same-function implementation found. Remaining textual overlap concerns common declarations/registrations and debt counts.
asn1_c2i in LibreSSL 4.0.0 rejects content over INT_MAX bytes before
c2i_ASN1_INTEGER_cbs runs, so the old output stays and nothing is allocated.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Rejected encodings and allocation failures now return NULL with the error
queue, the old output and the input pointer that firmware 13.42's module and
LibreSSL 4.0.0 leave.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Return the inner key of a matching EVP_PKEY as LibreSSL 4.0.0's p_lib.c
does, accepting RSA-PSS keys in EVP_PKEY_get0_RSA. A key of another type
throws, since the LibreSSL3 error queue that would receive the expecting-key
error is not modelled, and so does a null key.