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:
Bernd Steckmeister
2026-07-06 18:28:25 +02:00
parent 9693174de9
commit f2b9afbfea
4 changed files with 80 additions and 6 deletions
+16 -3
View File
@@ -4,9 +4,22 @@
> Windows mit Bernds echter 14-MB-DB praxisgetestet** (Migration gelaufen,
> 23 Tabellen verifiziert, Login/E2EE danach intakt, Neustart öffnet die
> verschlüsselte DB, `flutter test` deckt Migration/Fehlpfade mit echtem
> SQLCipher ab). **Android bleibt UNGETESTET** (Punkt 4 des Testplans unten:
> Migration auf Gerät, Push-Isolate + secure_storage) erst danach Release
> und Uta. **Abweichung vom Plan unten:** Die Annahme „keine Desktop-Binaries"
> SQLCipher ab).
> **Android-Emulator-Test 2026-07-06 (API 36, x86_64, Debug-APK) GRÜN:**
> (a) frische Installation legt die DB direkt verschlüsselt an
> (Header = Zufallsbytes, per run-as verifiziert), kein Cipher-Fallback im
> auth_log; (b) Update-Szenario nach `pm clear` + untergeschobener
> Klartext-DB (synthetisch, 2 Tabellen/550 Zeilen): Migration lief beim
> ersten Start („2 Tabellen verifiziert" im auth_log), `.premigration`
> liegt da, DB danach verschlüsselt; (c) Neustart öffnet mit dem
> Keystore-Schlüssel OHNE Re-Migration, App rendert normal den
> Login-Screen. Damit sind openCipherOnAndroid, sqlcipher_export und
> flutter_secure_storage auf Android (Haupt-Isolate) real belegt.
> **Offen bleibt (deshalb Punkt 4 NICHT voll abgehakt):** echtes
> ARM-Gerät, Migration einer ECHTEN eingeloggten Session auf Android und
> der Push-Test (FCM-Isolate liest verschlüsselte DB, secure_storage im
> Background-Isolate) braucht ein Testgerät mit eingeloggtem Account.
> Erst danach Release und Uta. **Abweichung vom Plan unten:** Die Annahme „keine Desktop-Binaries"
> ist seit sqlcipher_flutter_libs 0.6.x überholt das Plugin baut SQLCipher
> auf Windows/Linux als `sqlite3.dll`/`libsqlite3.so` mit (im Build-Output
> verifiziert). Deshalb ist Phase 1 NICHT Android-only: Windows/Linux