Skip to content

Default the device-id chain to unknown, and resolve it in one place - #316

Merged
JingMatrix merged 1 commit into
devfrom
fix/harvest-fallback-attestation-ids
Oct 19, 2026
Merged

JingMatrix merged 1 commit into
devfrom
fix/harvest-fallback-attestation-ids

Conversation

@JingMatrix

@JingMatrix JingMatrix commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

devicePropId followed the framework's property chain but not its defaults: Build.getString falls back to "unknown", ours fell back to blank and then collapsed a read "unknown" to blank as well. A chain unset the whole way down therefore recorded nothing, while the provider -- which adds all five ATTESTATION_ID_* tags whenever device properties are included, and omits none -- asked us to attest the literal "unknown". The TA compared "" against it and refused with CANNOT_ATTEST_IDS. The #313 and #279 device resolves its product id that way.

#258 resolved those five ids through devicePropId, but the no-TEE fallback record filled them itself from the plain property, so that path's "already set" guard skipped its own resolution and the chain was spelled out twice with only one copy following the framework. The record now leaves them blank, like the telephony ids beside it, so one site resolves all nine. buildId goes with it.

devicePropId's comment credited keystore with filling ATTESTATION_ID_*; it is the framework's provider, in the caller's process, and Build backs only two of the three legs.

@JingMatrix
JingMatrix force-pushed the fix/harvest-fallback-attestation-ids branch from 4adbc9f to bd53dfd Compare October 19, 2026 11:33
@JingMatrix JingMatrix changed the title Resolve the fallback's device ids the way keystore fills ATTESTATION_ID_* Resolve fallback device ids as the framework does Oct 19, 2026
@JingMatrix

Copy link
Copy Markdown
Owner Author

@lvyin555 Thanks for the complete log in #306 — it turned out to be our bug: with no working TEE the harvest recorded ro.product.model (PJE110), while apps attest the vendor-resolved value (CPH2585), so every device-ID attestation failed with CANNOT_ATTEST_IDS. Could you try this build and confirm Strong Integrity comes back? https://github.com/JingMatrix/TEESimulator/actions/runs/39245491473 (sign in, grab the Debug or Release artifact at the bottom)

@lvyin555

Copy link
Copy Markdown

TEESimulator-report-v4.0-74-604dfb0-release-20261019-213754.zip
I can't understand logs, so I'm just posting them directly.

@lvyin555

Copy link
Copy Markdown

In addition, the integrity of the equipment has not been restored.

@JingMatrix
JingMatrix force-pushed the fix/harvest-fallback-attestation-ids branch from bd53dfd to 07fd0c3 Compare October 19, 2026 13:42
@JingMatrix JingMatrix changed the title Resolve fallback device ids as the framework does Leave the no-TEE fallback's device ids to the supplement path Oct 19, 2026
@JingMatrix
JingMatrix force-pushed the fix/harvest-fallback-attestation-ids branch from 07fd0c3 to 651dd89 Compare October 19, 2026 14:45
@JingMatrix JingMatrix changed the title Leave the no-TEE fallback's device ids to the supplement path Keep unattested keys in the real TEE, and resolve fallback ids once Oct 19, 2026
@JingMatrix

Copy link
Copy Markdown
Owner Author

@lvyin555 Thank for feedback, please test https://github.com/JingMatrix/TEESimulator/actions/runs/39271858356 now.

@JingMatrix JingMatrix changed the title Keep unattested keys in the real TEE, and resolve fallback ids once Keep unattested keys in the real TEE, and resolve device ids like Build Oct 19, 2026
@JingMatrix
JingMatrix force-pushed the fix/harvest-fallback-attestation-ids branch from 651dd89 to 3c98a5f Compare October 19, 2026 15:29
@lvyin555

Copy link
Copy Markdown

TEESimulator-report-v4.0-74-88c4ab6-release-20261020-001901.zip
There was no red error message.But the yellow warning also

@lvyin555

Copy link
Copy Markdown

I contacted deepseek, and they said the problem isn't with the TEES, but with the ROM; perhaps the issue has been resolved.

devicePropId followed the framework's property chain but not its defaults: Build.getString falls
back to "unknown", ours fell back to blank and then collapsed a read "unknown" to blank as well. A
chain unset the whole way down therefore recorded nothing, while the provider -- which adds all
five ATTESTATION_ID_* tags whenever device properties are included, and omits none -- asked us to
attest the literal "unknown". The TA compared "" against it and refused with CANNOT_ATTEST_IDS. The
#313 and #279 device resolves its product id that way.

#258 resolved those five ids through devicePropId, but the no-TEE fallback record filled them
itself from the plain property, so that path's "already set" guard skipped its own resolution and
the chain was spelled out twice with only one copy following the framework. The record now leaves
them blank, like the telephony ids beside it, so one site resolves all nine. buildId goes with it.

devicePropId's comment credited keystore with filling ATTESTATION_ID_*; it is the framework's
provider, in the caller's process, and Build backs only two of the three legs.
@JingMatrix JingMatrix changed the title Keep unattested keys in the real TEE, and resolve device ids like Build Default the device-id chain to unknown, and resolve it in one place Oct 19, 2026
@JingMatrix
JingMatrix force-pushed the fix/harvest-fallback-attestation-ids branch from 3c98a5f to 6f3b538 Compare October 19, 2026 16:35
@JingMatrix

Copy link
Copy Markdown
Owner Author

Try my PlayIntegrityFix fork here: https://github.com/JingMatrix/PlayIntegrityFix. Flash its latest CI build.

@JingMatrix
JingMatrix merged commit 09ed792 into dev Oct 19, 2026
1 check passed
JingMatrix added a commit that referenced this pull request Oct 19, 2026
…316)

devicePropId followed the framework's property chain but not its defaults: Build.getString falls
back to "unknown", ours fell back to blank and collapsed a read "unknown" to blank as well. A chain
unset the whole way down recorded nothing, while the provider -- which adds all five
ATTESTATION_ID_* tags and omits none -- asked us to attest the literal "unknown", so the TA
compared "" against it and refused with CANNOT_ATTEST_IDS. The no-TEE fallback filled those ids
itself too, defeating #258's resolution; it now leaves them blank so one site resolves all nine.
buildId goes with it.
Zhanfg added a commit to Zhanfg/TEESimulator that referenced this pull request Oct 22, 2026
Adapt 2fda3b1 to existing OnePlus/StrongBox Harvester without overwriting fork logic.
@JingMatrix
JingMatrix deleted the fix/harvest-fallback-attestation-ids branch October 24, 2026 09:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TEESimulator v4 fails Strong Integrity (passes only Basic) Please help me read the log.

2 participants