Chiffrement : la discussion active et le mode Code ne deviennent plus illisibles

Activer le chiffrement de la mémoire chiffrait TOUTES les valeurs du
bucket des discussions, y compris des clés que le code lit et écrit en
clair (getStr/putStr) : le pointeur de discussion active, le mode
Chat|Code de chaque discussion, la puce « passer en mode Code ». Relues
comme du charabia, la discussion active devenait introuvable et le mode
Code disparaissait. Les critères, lus en clair eux aussi, s'effaçaient.

- Ces clés-pointeurs restent en clair (plainStoreKey) : ni rechiffrées, ni
  comptées comme « chiffrement incomplet ».
- Celles qu'une base existante a déjà chiffrées sont remises en clair dès
  le déverrouillage, avant le rechargement de la discussion active.
- Les critères passent par putStoreBytes/getStoreBytes : chiffrés comme le
  reste du fil, et lisibles.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Opus 5.5 committed 2026-10-02 23:27:43 +02:00
1 parent 5e36b1cf82
commit 9ccdc021cb
4 files changed
+89 -5

No files matched your search

+4 -1
View File
@@ -757,7 +757,10 @@ func handleMemUnlock(w http.ResponseWriter, r *http.Request) {
return
}
setMemDEK(dek)
resumeMemMigration() // si une migration attendait le déverrouillage
resumeMemMigration() // si une migration attendait le déverrouillage
// AVANT le rechargement : la discussion active est désignée par une clé
// qu'une version précédente chiffrait par erreur (voir plainStoreKey).
healPlainStoreKeys()
reloadEncryptedStores() // recharge la discussion chiffrée en RAM
// Migration douce : chiffre ce qui serait resté en clair (discussions,
// blocs archivés, trackers). Idempotent — n'encode que ce qui ne l'est pas.