feat: SQLCipher-Verschluesselung der pyramid.sqlite (M1) via neue Storage-Fassade app_database.dart

- AppDatabase.open()/openForPush() kapseln Factory, Schluessel (Keystore),
  Klartext->SQLCipher-Migration (Backup/Verify/atomarer Tausch) und PRAGMAs
- Android/Windows/Linux verschluesselt, iOS/macOS bewusst Klartext
- 5 neue Tests mit echter SQLCipher-DLL; Windows-Praxistest mit echter DB
  erfolgreich (23 Tabellen verifiziert, E2EE intakt); Android UNGETESTET
This commit is contained in:
Bernd Steckmeister
2026-07-06 12:31:38 +02:00
parent cead62ccb2
commit f64398d3c6
10 changed files with 787 additions and 49 deletions
+12 -3
View File
@@ -1,8 +1,17 @@
# SQLCipher-Migration der `pyramid.sqlite` Umsetzungsplan (PC-Termin)
Stand: 2026-07-03, geschrieben auf dem Pi (Plan gegen den echten Code verifiziert,
Umsetzung braucht PC + Android-Testgerät). Gehört zum offenen M1-Punkt
„Sichere Speicherung von Access-Token & Krypto-DB".
> **STATUS 2026-07-06: UMGESETZT (`lib/core/app_database.dart`) und auf
> 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"
> 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
> verschlüsseln ebenfalls, ein Test-Override ist unnötig. iOS/macOS bleiben
> Klartext (SQLCipher-Pod kollidiert mit firebase_messaging, kein Release-Ziel).
## Für Bernd in einfach