test: SQLCipher auf Android-Emulator verifiziert (Neuanlage verschluesselt, Klartext-Migration, Neustart ohne Re-Migration)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+53
@@ -13,6 +13,59 @@ Schritt (und beim Abbruch mitten im Schritt den Zwischenstand). Format:
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-06 – SQLCipher auf ANDROID getestet (Emulator API 36): Neuanlage, Migration und Neustart grün
|
||||
|
||||
**Erledigt:** Der größte offene Teil von Testplan Punkt 4
|
||||
(`docs/SQLCIPHER_MIGRATION.md`) ist jetzt real auf Android belegt – kein
|
||||
Gerät angeschlossen, aber der vorhandene Emulator (Medium Phone API 36.1,
|
||||
x86_64, MIT Play Services) reicht für die DB-Schicht:
|
||||
|
||||
- **Szenario A – frische Installation:** Debug-APK installiert, App
|
||||
gestartet → `pyramid.sqlite` wird von Anfang an VERSCHLÜSSELT angelegt
|
||||
(Header = Zufallsbytes statt „SQLite format 3", per `run-as`/`od`
|
||||
verifiziert); auth_log ohne Cipher-Fallback oder Fehler.
|
||||
- **Szenario B – Update-Szenario (Utas Fall):** `pm clear` (auch der
|
||||
Keystore-Eintrag weg) + synthetische Klartext-DB (2 Tabellen, 550
|
||||
Zeilen) VOR dem ersten Start in `files/` gelegt → beim Start lief die
|
||||
echte Migration: auth_log „Klartext-DB erfolgreich nach SQLCipher
|
||||
migriert (2 Tabellen verifiziert)", `.premigration`-Backup liegt da,
|
||||
DB danach verschlüsselt, App lief normal weiter (Login-Screen,
|
||||
Screenshot geprüft). **Bewusst NICHT mit Bernds echter DB getestet** –
|
||||
die enthält seine Session/Olm-Account, ein Duplikat auf einem zweiten
|
||||
„Gerät" würde den E2EE-State korrumpieren.
|
||||
- **Szenario C – Neustart:** force-stop + Relaunch → verschlüsselte DB
|
||||
öffnet mit dem Schlüssel aus dem Android-Keystore, KEINE zweite
|
||||
Migration, kein Fehler. Damit sind `openCipherOnAndroid`,
|
||||
`sqlcipher_export` und flutter_secure_storage auf Android
|
||||
(Haupt-Isolate) praktisch belegt.
|
||||
- Doku nachgezogen: Status-Kopf `docs/SQLCIPHER_MIGRATION.md`,
|
||||
ROADMAP-M1-Vermerk. Emulator danach heruntergefahren. Nebenbei:
|
||||
`android/gradle.properties` bekam beim APK-Build automatisch zwei
|
||||
Flutter-Migrator-Flags (`builtInKotlin=false`, `newDsl=false` – pinnt
|
||||
bestehendes Verhalten), mit committet.
|
||||
|
||||
**UNGETESTET bleibt (ROADMAP-Punkt weiter NICHT abgehakt):** echtes
|
||||
ARM-Gerät, Migration einer ECHTEN eingeloggten Session auf Android und
|
||||
der Push-Test (FCM-Background-Isolate liest verschlüsselte DB,
|
||||
secure_storage im Background-Isolate) – braucht ein Testgerät mit
|
||||
eingeloggtem Account (Login-Daten hat nur Bernd). Erst danach Release
|
||||
und Utas Gerät.
|
||||
|
||||
**Offen/Nächster Schritt:** auth_log-Check des weiterlaufenden
|
||||
Windows-Beobachtungslaufs (Einträge seit 2026-07-06 18:19). Für Bernd
|
||||
unverändert: PC_TESTPLAN 1 (Rest) + 2–8 durchklicken; fürs
|
||||
SQLCipher-Finale ein echtes Android-Gerät anstecken (Debug-Build reicht,
|
||||
Ablauf wie hier im Emulator).
|
||||
|
||||
**Stolperfallen:** (1) Ein Dart-Skript außerhalb des Repos kann
|
||||
`package:`-Imports nicht auflösen – Hilfsskripte kurz ins Repo legen
|
||||
(`tool/`, untracked) und nach dem Lauf löschen. (2) Für Datei-Zugriff im
|
||||
App-Sandbox-Verzeichnis braucht es eine DEBUG-APK (`run-as` geht nur bei
|
||||
debuggable); das Emulator-Image hat kein `sqlite3`-Binary – Test-DBs
|
||||
also am PC bauen und pushen.
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-06 – auth_log-Check 17:43-Fenster: echter ~7-min-Netzausfall OHNE Logout überstanden (stärkster Positiv-Befund bisher)
|
||||
|
||||
**Erledigt:** Vierte PC-Session, zuerst der Pflicht-Check der Vorsession
|
||||
|
||||
Reference in New Issue
Block a user