feat(android): deux secrets separes, comme sur le poste

Le mot de passe de creation scellait le conteneur local ET pretendait
sceller l'instantane du depot. Un coffre cree ici publiait donc sous son
propre mot de passe, que le poste ne savait plus ouvrir - et le
rafraichissement echouait avec "wrong password" sur un depot pourtant
intact.

FVaultPwd ouvre le conteneur local et s'arrete la. Le secret du depot vit
dans les reglages, doit etre le meme sur tous les appareils, et c'est lui
seul qui ouvre et rescelle l'instantane.

Les deux ne se rencontrent qu'a UN endroit, la reconciliation : le
conteneur local s'ouvre sous le sien, puis la cle est jetee avant de
toucher au depot - la garder rescellerait le depot sous le mauvais
secret. Ailleurs ils ne se croisent jamais : un coffre ne ici ne publie
pas, un coffre publie n'a plus de conteneur local.

Migration : rien a rechiffrer. Les coffres existants ont simplement les
deux valeurs egales, et cessent d'etre forces de le rester.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-08-28 15:58:17 +01:00
parent 17cfc11084
commit ed7ccdd2d6
2 changed files with 90 additions and 38 deletions
+11 -4
View File
@@ -395,7 +395,11 @@
<div class="in-x" data-clear="user">&#215;</div>
</div>
<div class="in-wrap">
<input class="field-in" id="pass" placeholder="master password"
<!-- DEUX SECRETS, DEUX NOMS. Celui-ci ouvre le coffre garde sur cet
appareil. Il s'appelait "master password" et servait aussi de
secret du depot - un coffre cree ici pretendait alors sceller le
depot avec lui, que le poste ne savait plus ouvrir. -->
<input class="field-in" id="pass" placeholder="vault password"
type="password" autocomplete="off">
<div class="in-x" data-clear="pass">&#215;</div>
</div>
@@ -535,12 +539,15 @@
<div class="in-x" data-clear="sTok">&#215;</div>
</div>
<div class="in-wrap">
<input class="field-in" id="sPwd" placeholder="master password"
<input class="field-in" id="sPwd" placeholder="sync password"
type="password" autocomplete="off">
<div class="in-x" data-clear="sPwd">&#215;</div>
</div>
<div class="note">The master password never leaves this device. It is what
decrypts the vault; the token only opens the repository.</div>
<div class="note">The sync password never leaves this device. It is what
encrypts the copy kept in the repository, so it must be the same on every
device that shares it; the token only opens the repository. It is not the
password that opens a vault created on this phone - that one is asked for
on the home screen.</div>
<h2>Unlock code</h2>
<div class="in-wrap">