perf(crypto): derive Argon2id via argon2idAsync (unfreeze unlock UI)
deriveKeyBytes now calls NobleArgon2.argon2idAsync instead of the sync argon2id, so it yields to the event loop periodically and the busy/unlock spinner keeps animating instead of freezing ~0.65 s during login, register, and master-pw rotation. Same result (both RFC-9106-verified); all callers already await deriveKeyBytes so no call-site changes. - Re-vendored js/argon2.js to export argon2idAsync alongside argon2id (re-bundled from @noble/hashes@2.2.0; both variants pass the RFC 9106 §5.3 vector). 27KB → 29KB. - Added a sync/async parity test. 63/63 green. - Closes the last open item of CODE_AUDIT §1.2. NOTE: argon2.js grew — run BuildAssets to re-embed it before the next Delphi build. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+4
-2
@@ -74,8 +74,10 @@ décplé). Détails dans le CLAUDE.md « Auth-hash schemes ».
|
||||
**Validé runtime** : un compte ayant tourné sa master pw affiche
|
||||
`hash_algo=argon2id-v2` (m=19456, t=2, p=1) et se reconnecte/déchiffre.
|
||||
|
||||
**Reste (mineur)** : dériver via `argon2idAsync` pour ne pas geler l'UI
|
||||
~0.65 s (actuellement sync).
|
||||
✅ **Async (2026-07-05)** : `deriveKeyBytes` utilise `argon2idAsync` (bundle
|
||||
re-vendé pour l'exposer) — cède la main à l'event loop pour que le spinner
|
||||
s'anime au lieu de figer ~0.65 s. Parité sync/async testée sur le vecteur
|
||||
RFC 9106. **Plus rien d'ouvert sur §1.2.**
|
||||
|
||||
### 1.3 🟡 Métadonnées en clair
|
||||
|
||||
|
||||
Reference in New Issue
Block a user