docs(release): add v5.1.1 changelog for pre-stash restoration fixes

This commit is contained in:
Enginex0
2026-03-22 01:50:02 +01:00
parent 315f41f434
commit 6e74ebbe82
2 changed files with 24 additions and 1 deletions
+1 -1
View File
@@ -29,7 +29,7 @@ val gitExecutor = objects.newInstance(GitExecutor::class.java)
val gitCommitCount = gitExecutor.execute("git rev-list HEAD --count", rootDir).toInt() val gitCommitCount = gitExecutor.execute("git rev-list HEAD --count", rootDir).toInt()
val gitCommitHash = gitExecutor.execute("git rev-parse --verify --short HEAD", rootDir) val gitCommitHash = gitExecutor.execute("git rev-parse --verify --short HEAD", rootDir)
val verName = "v5.1" val verName = "v5.1.1"
android { android {
namespace = "org.matrix.TEESimulator" namespace = "org.matrix.TEESimulator"
+23
View File
@@ -1,3 +1,26 @@
## TEESimulator-RS v5.1.1: Pre-Stash Restoration
Restores all custom hardening fixes that were lost during the PR #157 migration. These were working in pre-stash builds but never carried over to the post-stash codebase, causing user-reported regressions (boot hash instability, DuckDetector score regression, config crash on file deletion).
- **Boot hash persistence** restored: 4-step fallback (sysprop, TEE, file, random) with file writes at every step. Fixes "Boot: Unavailable" where boot hash randomized every reboot on devices without `ro.boot.vbmeta.digest`
- **Presence-based findBoolean** for KeyMint tags: boolean tags are presence-based per AIDL spec, `.boolValue` field isn't reliably populated across Android versions
- **noAuthRequired** defaults to true when not explicitly false, matching AOSP KeyMint behavior
- **callerNonce** tag now flows through to software-enforced attestation list
- **CTR block mode** restored in cipher algorithm mapping (was dropped in PR #157)
- **AEAD guard** on updateAad: non-GCM operations throw INVALID_TAG
- **Error code resolution** via lazy reflection with correct KeyMint AIDL fallback values
- **Latency floor** on SoftwareOperation.finish() for StrongBox timing simulation
- **FileObserver NPE** fixed: null-safe handling on config file DELETE events
- **system=prop** consistency: forces boot/vendor patch levels to derive from device props
- **StrongBox simulation** restored: capability checks (RSA<=2048, EC=P256), concurrent op limits (4 max), keygen latency floor (250ms), op latency floor (80ms)
- **Binder buffer guard**: MAX_ALIAS_LENGTH (256KB) rejects oversized aliases before processing
- **Key lifecycle tracking**: deletedSoftwareKeys set prevents ghost key responses after deletion
- **Per-UID operation limits**: 15 TEE, 4 StrongBox with LRU eviction
- **EC+DECRYPT rejection** in createOperation, matching AOSP unsupported purpose check
- **Attest key nspace update** aligned with upstream PR #169
---
## TEESimulator-RS v5.1: Interception Architecture Rewrite ## TEESimulator-RS v5.1: Interception Architecture Rewrite
Major release. 27 files changed, 2300 lines rewritten. The entire Kotlin interception layer has been rebuilt with a clean architecture, proper AIDL alignment, and significantly lower binder overhead. Major release. 27 files changed, 2300 lines rewritten. The entire Kotlin interception layer has been rebuilt with a clean architecture, proper AIDL alignment, and significantly lower binder overhead.