From a36164174ecdc0e011c52dacc415a0b2c8acd9da Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Mon, 3 Aug 2026 00:02:27 +0100 Subject: [PATCH] docs(tests): record the four secret-consuming paths and how to test them Includes the authenticated WsgiDAV recipe (Basic only, digest off) and the change-event race that can produce a misleading 401. --- TEST_SCENARIOS.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TEST_SCENARIOS.md b/TEST_SCENARIOS.md index 01e79f8..cdc9b7f 100644 --- a/TEST_SCENARIOS.md +++ b/TEST_SCENARIOS.md @@ -361,6 +361,9 @@ ou le déchiffrement. - **Historique** : le mot de passe d'auto-backup était présent en clair dans cette exact mise en scène, visible dans `Bridge.onPrefResult("autoBackupPwd","…")` **et** dans les tampons du protocole DevTools — donc deux processus — et il **survivait au verrouillage automatique** qui efface pourtant la clé du coffre. Cause : `loadAutoBackupConfig` / `loadSyncConfig` récupéraient les secrets alors que l'interface n'a besoin que de savoir s'ils existent. Voir `prefs/has`. - **Limite assumée** : après un backup ou un sync **réellement exécuté**, le secret est de nouveau en mémoire — il faut bien le passer à la fonction de chiffrement. Ce qui est supprimé, c'est sa présence permanente sans qu'aucune opération ne l'ait demandée. - **Après le test** : supprimer les dumps. Ils contiennent des secrets en clair, sans chiffrement. +- **Validation fonctionnelle obligatoire** — les **quatre** chemins qui lisent encore un secret, à repasser après toute modification de `loadAutoBackupConfig` / `loadSyncConfig` : *Backup now* **puis import du fichier produit** (le fichier seul ne prouve rien, cf. F2) · *Test connection* WebDAV **avec authentification** · *Sync now* (le compteur `updated` prouve que l'instantané distant a été **déchiffré**, pas seulement téléchargé) · le backup planifié au déverrouillage. +- **Monter un WebDAV authentifié pour le test** : `python -m wsgidav.server.server_cli -c ` avec `simple_dc.user_mapping` et **`accept_basic: true`, `accept_digest: false`** — notre client n'envoie que du Basic. Le partage ne doit plus être marqué `(anonymous)` au démarrage. Un premier 401 suivi d'un 200 authentifié dans le journal est **normal** : WinHTTP n'envoie les identifiants qu'après le défi. +- **Piège de saisie** : les champs identifiant / mot de passe n'enregistrent que sur `change` (perte du focus). Taper puis cliquer aussitôt sur *Test connection* peut lire la préférence avant son écriture — les deux passent par des navigations `cmd://`, qui se coalescent. Faire Tab avant de cliquer. ### E5 · la clé du coffre n'est plus en clair dans le web storage - **ACTION** : coffre déverrouillé → console WebView2 :