Files
AXP-Resurection/specs/005-restricted-signature-spoofing/research.md
T
sunfish-admin 12d2179c20 AXP Magisk resurrection track: Speckit 009 port AXP/LOS22 to LOS23.
Ship Magisk like GOLDEN; KernelSU optional recycle only; parallel to sunfish-a16-rom standby.
2026-09-16 21:56:22 +00:00

105 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Research: 005 restricted signature spoofing
## Decision: First working stack = `004` leftovers + spoofing + modern location
**Decision**: Ship one LAB validation build that includes (1) unfinished `004`
packaging fixes, (2) restricted spoofing, (3) BeaconDB location docs — and
**exclude** `006` banking and `007` root.
**Rationale**: Owner: first phase that must work is microG + patched Play +
spoofing. Banking/root are later regressions.
**Alternatives considered**: Separate tiny `004b` rebuild only — rejected;
wastes a flash cycle before spoofing lands. Pulling `006` early — rejected;
blocks focus.
## Decision: Spoofing implementation source = EXTENDROM / AXP (port to A16)
**Decision**: Use [EXTENDROM_SIGNATURE_SPOOFING](https://github.com/sfX-android/android_vendor_extendrom/wiki/EXTENDROM_SIGNATURE_SPOOFING)
as the attributable primary source (matches GOLDEN behaviour:
`allow_signature_fake`, Developer Options, per-app `FAKE_PACKAGE_SIGNATURE`).
Port patches from the closest supported Android line (**A15** is STABLE/tested;
GOLDEN is A15) onto **A16 / LOS 23.2**.
**Rationale**: Stock LOS 23.2 tree on `rom-dev01` has **no**
`FAKE_PACKAGE_SIGNATURE` / `allow_signature_fake` (inventory 2026-09-15). AXP
GOLDEN proves the UX and setting key. Old `android_signature_spoofing` repo is
obsolete per upstream.
**Alternatives considered**:
| Option | Why not |
|--------|---------|
| lineageos4microg unrestricted spoof | Constitution forbids open spoofing |
| Magisk / LSPosed FakeGApps | Forbidden; rootless Compatibility MVP |
| Wait for LOS to grow A16 EXTENDROM dir | Blocks first stack; we port ourselves |
**A16 note**: EXTENDROM wiki table lists A15, not A16. Expect conflict resolution
(`repo diff` / split patches) per EXTENDROM porting guide. Record deltas in
`docs/a15-a16-delta.md`.
## Decision: Must spoof `signingInfo`, not only `signatures[]`
**Decision**: Implementation MUST spoof both legacy `PackageInfo.signatures` and
modern `PackageInfo.signingInfo` (GET_SIGNING_CERTIFICATES).
**Rationale**: microG #2680 / EXTENDROM #48 — Google/Play check `signingInfo` on
modern Android; Self-Check “correct signature” fails if only legacy arrays are
faked. LOS Gerrit has A13–A15 fixes; ensure A16 port includes equivalent.
## Decision: Allow-list = microG GmsCore + project Phonesky
**Decision**: Effective spoofing limited to:
- `com.google.android.gms` — official microG signer (`73aaa390…` short on GOLDEN)
- `com.android.vending` — project Phonesky JKS
SHA-256 digest
`31:31:86:CB:7D:F2:D4:01:33:72:12:07:B7:29:73:E8:52:F6:1C:87:67:C3:21:E5:C7:50:39:01:1B:83:BD:56`
Privapp/default XMLs that bind by cert digest MUST use **our** digest (not
AXP’s `00:5C:98:05:…`).
**Rationale**: Constitution + GOLDEN grants; AXP `er_*` XMLs bind Phonesky by
digest.
## Decision: Global toggle default OFF
**Decision**: `allow_signature_fake` defaults to disabled; user enables in
Developer Options (AXP setup guide).
**Rationale**: Matches oracle docs and reduces surprise attack surface.
## Decision: `004` packaging leftovers are a `005` ship gate
**Decision**: Before declaring `005` done, the flashable zip MUST include:
1. `LOCAL_REPLACE_PREBUILT_APK_INSTALLED` for GmsCore/Gsf/Phonesky (already in
working-tree `vendor/sunfish-a16/Android.mk`)
2. Phonesky privapp extras for Play 52 / A16 FGS:
`FOREGROUND_SERVICE_SYSTEM_EXEMPTED`, `SCHEDULE_EXACT_ALARM` /
`USE_EXACT_ALARM`, plus prior grammatical/status-bar entries
**Rationale**: Measured LAB failures — PRESIGNED strip → no `pm path`; missing
FGS allowlist → VpaService/DownloadService crash. Remount pushes are not the
shipped artifact.
## Decision: Modern location = BeaconDB (not UnifiedNlp backends)
**Decision**: Document configuring microG Location to use an Ichnaea-compatible
URL (`https://api.beacondb.net` or documented successor). Do **not** package
Déjà Vu / Nominatim NLP / MLS apps.
**Rationale**: microG 0.3.x dropped UnifiedNlp backends; MLS retired (2025);
GOLDEN also has no NLP backend packages. Owner wants modern stack.
**Alternatives considered**: Ship UnifiedNlp backends — rejected (obsolete for
0.3.x primary path).
## Decision: Out of scope remains `006`/`007`
**Decision**: No Insular/banking hard-gates; no KSU/SusFS in this feature’s
acceptance.
**Rationale**: Owner confirmation 2026-09-15 — first phase is microG + Play +
spoofing only.