registry: passkeys, WebAuthn registration and sign-in (slice 4 of #16) #226
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
Depends on
#228 registry: a second factor before publishing tokens (slice 6 of #16)
torbscript/language
#223 registry: sessions, linked identities and the account page (slice 1 of #16)
torbscript/language
#225 signature: P-256 ECDSA verification, ES256 (slice 3 of #16)
torbscript/language
Reference
torbscript/language#226
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Passkeys for the registry: a signed-in person registers a passkey on the account page, and signs in with it later. A passkey counts as the second factor on its own (owner decision on #16).
Owner decision (recorded on #16)
std/signature's P-256, slice 3 (#225)), EdDSA (std/signature's Ed25519) and RS256 (the registry'ssrc/rsa.trb).Pinned records
Acceptance criteria
clientDataJSONtypewebauthn.create, the challenge and the registry's origin checked; RP ID hash, user-present and user-verified flags checked; attestationnoneaccepted (no attestation trust store); the COSE public key (-7ES256,-8EdDSA,-257RS256) parsed and stored with the credential id and the signature counter.webauthn.get, origin, RP ID hash, user-present and user-verified flags, the signature overauthenticatorData || SHA-256(clientDataJSON)with the stored key, and the signature counter (a counter that does not increase, where either side is non-zero, is refused and flagged).torb test tools/registry/testsgreen natively and in the VM.tools/registry/README.mdand RELEASE.md "Not built yet" updated.Seed impact
None: TorbScript in
tools/registryonstd/signature,std/digest,std/json; no syntax change, no native, no driver flag, no looked-up std name. If the CBOR reader turns out generally useful it stays private to the registry in this slice.Size and dependencies
One PR, one or two Conventional Commits. Depends on slice 1 (#223, sessions, account page) and slice 3 (#225, P-256 verification). Parent: #16. Not
readyuntil both have landed. Security-relevant: architect review of the diff.[loop:torbscript] intake: in scope (author orion, label loop), slice 4 of #16 filed by the split, not a duplicate, no collision with a design record, no seed impact. next: waiting (slice 1 #223 has not landed; slice 3 #225 landed) until 2026-10-10T04:00:00Z
[loop:torbscript] refine: the split body already meets the definition of ready (goal, recorded owner decision, pinned records, testable criteria, size, no seed impact); both dependencies have landed (#223 with PR #249, #225), label
readyset. It edits the same registry files as #224 (database, account page, server routes), which starts now, so it queues behind it. next: waiting (#224 in implementation on the same files) until 2026-10-09T12:25Z[loop:torbscript] claim implement by session:loop-torbscript-20261009 until 2026-10-09T14:25Z
[loop:torbscript] close: PR #261 (registry passkeys, WebAuthn registration and sign-in) approved and merged by argus (merge commit
4eaf8b21), issue closed. Claim released. Next slice: #227 (refine when the ready buffer has room), then #228.