Skip to content

Add entertainment-only fake report (2.0.5) - #25

Open
RGWS-LiuLai wants to merge 1 commit into
VisionR1:masterfrom
RGWS-LiuLai:feat/fake-report
Open

RGWS-LiuLai wants to merge 1 commit into
VisionR1:masterfrom
RGWS-LiuLai:feat/fake-report

Conversation

@RGWS-LiuLai

Copy link
Copy Markdown

Adds an entertainment-only fake report that changes what is shown on screen without touching the parsed attestation, the certificate chain, the keystore or any revocation data. Everything lives in memory and is restored when the app is closed.

What can be spoofed

  • Root certificate / keybox, independently. Options mirror every RootPublicKey.Status the app can really produce: Google, Google RKP, AOSP, Knox, OEM, unknown root, untrusted chain, RKP failure.
  • Bootloader state, independently. Options mirror RootOfTrust.KM_VERIFIED_BOOT_* plus the "no root of trust" case, so all four real states can be reproduced distinctly.
  • Certificate status and revocation list, each on its own.
  • Whole report, as one of the AttestationException error pages: unparsable chain, out of keys, keys not provisioned, RKP failure, StrongBox/DeviceID unavailable, and so on.

Design notes

  • Every spoofable item defaults to "follow the real result", so changing one item never drags the others into an abnormal state. Turning the feature on starts from an all-normal state.
  • No banner or badge is drawn, so an enabled fake report looks like the real one.
  • Menu entry plus a separate options item; the state resets on exit.
  • New strings are provided for all nine existing locales.

Note I could only build this on an aarch64 host, so I had to work around local toolchain limits there; the branch itself keeps the standard Gradle setup (AIDL, generateLocaleConfig, original resources) untouched. It has not been built on a standard x86_64 host yet, so the CI result is worth watching.

Add an entertainment-only fake report that changes what is shown on
screen without touching the parsed attestation, the certificate chain,
the keystore or any revocation data.

- Menu entry "Fake report (fun)" plus a separate options item; the
  state lives in memory only and is restored when the app is closed.
- Root certificate / keybox can be spoofed with every status the app
  can really produce (Google, Google RKP, AOSP, Knox, OEM, unknown,
  untrusted chain, RKP failure).
- Bootloader state can be spoofed independently with all four
  KM_VERIFIED_BOOT_* values plus the missing-root-of-trust case.
- Certificate status and revocation list can be spoofed on their own.
- The whole report can be spoofed as one of the AttestationException
  error pages (unparsable chain, out of keys, keys not provisioned,
  RKP failure, StrongBox/DeviceID unavailable, ...).
- Every spoofable item defaults to following the real result, so
  changing one item never drags the others into an abnormal state.
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.

1 participant