Commit graph halkyon/docs/adr/0017-password-totp-and-keys.md
Author SHA1 Message Date
c67b492bfd
docs(auth): what building the register's side settled
ADR 0017 records the decisions taken in building (SRP's identity, the
decoys, the 72-hour account reset proposed for confirmation, GitHub's
deprecation) and what step 3 must do; the module's README and the
AGENTS files say how password sign-in works.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-22 18:11:12 +02:00
200a2df32f
feat(keys): passwords taken as RFC 8265's OpaqueString
Other spaces become a plain space and the text is composed (NFC) before
Argon2id, so a password typed on another system, accents composed or
not, unlocks the same keys; empty passwords and control characters are
refused. The normalisation (unorm_dart) is pinned exactly, as it must
never change once an account exists. ADR 0017 records both decisions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-22 18:11:10 +02:00
ae0d88818b
docs(adr): a password, TOTP and the account's keys (ADR 0017)
SRP-6a with Argon2id, the password never leaving the device and
unlocking the account's key pairs (libsodium on devices); mandatory
TOTP with recovery codes, a 72-hour reset by mail as Proton has it, a
recovery phrase; data keys per store sealed to the account; studysets
private or not, private by default; email codes only for resets;
GitHub sign-in deprecated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-22 18:11:08 +02:00