halkyon/packages/halkyon_base_server/test/unit
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Tizian 「ティツィアーン」 e5b9578916
feat(base): mending a broken SimpleLogin link with the handle and the recovery phrase (ADR 0020, D7)
Someone whose SimpleLogin identity is new to the register but who has an
account ("I already have one") names their handle and proves the
account's recovery phrase; the new identity takes the old one's place.

- `simpleLogin.beginMend(attempt, handle)`: the keys wrapped under the
  phrase's key, the public keys and a nonce, for the account with that
  handle (whatever its case). Only an account with keys and a SimpleLogin
  identity is mended, a link it had, as nobody adds SimpleLogin signed
  out (D10); a handle nobody has, or any other account's, gets a decoy
  from `signInDecoyKey`, the same each time. At most 10 an hour per
  handle and 30 per network.
- `simpleLogin.mend(attempt, proof)`: the phrase's proof for `mendLink`,
  binding the attempt (`mendLinkDigest`, on both sides), so a proof
  relayed from another sign-in links nobody's identity but the device's
  own; checked for the waiting identity first, which leaves the proof
  unspent. Every session of the account ends, in every service, and the
  sign-in stands ten minutes for a change, such as a lost password.
- SimpleLogin needs `SIGN_IN_DECOY_KEY` alone of ADR 0017's three keys
  (`signInDecoyKeyOf`); `addInstanceRoutes` stops a server with a
  SimpleLogin app and without it (`checkSimpleLoginMending`).
- Members ask the register for both; `RemoteRegister` and the instance
  API carry them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-24 09:17:49 +02:00
..
password feat(base): mending a broken SimpleLogin link with the handle and the recovery phrase (ADR 0020, D7) 2026-10-24 09:17:49 +02:00
profile refactor(profile): handles and profiles move into halkyon_base 2026-10-22 18:11:07 +02:00
simplelogin feat(base): signing in with SimpleLogin through the register (ADR 0020, step 2) 2026-10-24 09:17:48 +02:00
srp feat(crypto): SRP-6a, the register's half and the device's 2026-10-22 18:11:08 +02:00
totp feat(crypto): recovery codes kept under the instance's key 2026-10-22 18:11:10 +02:00
accounts_mode_test.dart feat(accounts): one account across an instance's services (ADR 0016) 2026-10-22 18:11:07 +02:00
code_mail_test.dart fix(auth): a proof the register couldn't answer counts; the sign-up mail says it gives a password 2026-10-23 14:12:50 +02:00
data_location_test.dart halkyon_app: data locations as precise as a country or a state 2026-10-19 18:50:26 +02:00
network_test.dart fix(auth): an IPv6 visitor counts by their /64 2026-10-23 14:12:45 +02:00
offered_ways_test.dart feat(base): signing in with SimpleLogin through the register (ADR 0020, step 2) 2026-10-24 09:17:48 +02:00
password_config_test.dart feat(auth): a password with TOTP on the register, and resets 2026-10-22 18:11:10 +02:00
source_code_test.dart halkyon_base: a Serverpod module for sign-in, accounts and instance basics 2026-10-19 14:29:28 +02:00