{{define "title"}}Sign in — CONTRA{{end}} {{define "brand"}}CONTRA{{end}} {{define "head"}}{{end}} {{define "content"}}

Sign in

Your passphrase is not sent. This page stretches it, derives a signing key from it, and signs a challenge the server chose.

{{/* The tear-line, and it runs through the middle of this form because that is where the boundary genuinely is: the address above it goes to the server, as a blind index it cannot reverse. The passphrase below it does not go anywhere — it is stretched here and used to sign a challenge, which is what the paragraph above already says. This is the clearest place in the whole product to draw it: not a diagram of the promise, the promise happening in one form. */}}
goes to the server ↑never leaves this page ↓

No account yet? Create one.

{{end}}