carlos / contra Public

Clone
git clone https://amadan.net/carlos/contra

Plain git — no account needed to clone.

Download

Download this file

1{{define "title"}}Your printed kit — CONTRA{{end}}
2{{define "brand"}}<a rst-shell-brand href="/">CONTRA</a>{{end}}
3{{define "head"}}<script type="module" src="{{asset "static/pages/kit.js"}}"></script>{{end}}
4
5{{define "content"}}
6<h1>Your printed kit</h1>
7
8{{/* The two documents behave differently and the page says so up front,
9 because the difference is the whole thing a person needs to understand
10 before they press anything here. */}}
11<p>Two documents, and only one of them can be reprinted. That is not an
12oversight — it is what "nobody can open your vault for you" costs.</p>
13
14<section data-card>
15 <h2>Account Key card</h2>
16 <p>This <strong>reprints exactly</strong>. Your devices keep a copy of the
17 Account Key, so a new card is the same key on new paper. The old card keeps
18 working — throw it away or keep it, it makes no difference.</p>
19
20 <div data-card-ready hidden>
21 <p><button type="button" data-print-card>Print the Account Key card
22 again</button></p>
23 </div>
24
25 <p data-card-missing hidden>
26 This device does not have your Account Key, so it cannot print the card.
27 <a href="/device">Give it the key</a> from another device or from the card
28 you still have, and this will work.
29 </p>
30
31 <p data-card-status aria-live="polite"></p>
32</section>
33
34<section data-recovery>
35 <h2>Recovery sheet</h2>
36
37 {{/* The warning goes BEFORE the control, not beside it and not after it.
38 This is the one destructive action in the app. */}}
39 <p><strong>This cannot be reprinted.</strong> Nobody stores your recovery
40 code — only a wrap that it opens — so there is nothing to print a second
41 copy of. What this does instead is <strong>issue a new one</strong>.</p>
42
43 <p data-kind="warning">When you do this, <strong>the code on your old
44 recovery sheet stops working immediately</strong>. If you are not certain
45 the old sheet is lost, find it first: doing this while it is still in the
46 safe means shredding it and filing the new one.</p>
47
48 <p>Your passphrase and your other devices are unaffected.</p>
49
50 <form data-recovery-form method="post" action="#">
51 <p>
52 <label for="recovery-passphrase">Passphrase</label>
53 <input id="recovery-passphrase" name="passphrase" type="password"
54 autocomplete="current-password" required>
55 <small>Needed to open your vault key so the new code can be sealed to
56 it. It is not sent anywhere.</small>
57 </p>
58 <p>
59 <label>
60 <input type="checkbox" data-confirm-recovery>
61 I understand the old recovery sheet will stop working.
62 </label>
63 </p>
64 <p><button type="submit" data-regenerate disabled>Issue a new recovery
65 sheet</button></p>
66 </form>
67
68 <div data-new-sheet hidden></div>
69 <p data-recovery-status aria-live="polite"></p>
70</section>
71
72<section data-nag hidden>
73 <h2>Only one device</h2>
74 {{/* PROTOCOL.md's loss table, row six: passphrase known, kit lost, every
75 device gone. The obligation is not to soften the rule — it is to make
76 sure nobody arrives there by accident. This is that. */}}
77 <p>This is the only browser holding your Account Key. If you lose it and the
78 printed card at the same time, the vault cannot be opened — by you, by us, by
79 anyone.</p>
80 <p>Two minutes of work makes that much less likely:
81 <a href="/device">add a second device</a>, or check you still have the
82 printed card.</p>
83</section>
84
85<p><a href="/vault">Back to your vault</a></p>
86{{end}}
87