diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-10-14 23:02:49 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-10-14 23:02:49 +0200 |
| commit | 3131630d900aa4a72bf880bfa9c5232bff64d6d6 (patch) | |
| tree | 5ef229f9a3f589fad6e7543f14b58ec7f9526758 /docs/MESHBAY_NODE_PROTOCOL.md | |
| parent | 422647e7898b8df67cd11f8fb060aec23dec84aa (diff) | |
| download | meshbay-3131630d900aa4a72bf880bfa9c5232bff64d6d6.tar.gz | |
fix(client): link a device from the application; approve one match only
"Get a linking code" called the connection the page had just closed on the
node's unknown_device refusal, so it never filed anything. It now retries
with the request filed on that connection, before the proof (MNP 6.3), and
the page tries the group again after each refusal until a linked device
approves the code. Offered only in the desktop application: a browser's
minted identity is gone by its next connection.
Approving refuses a code that matches more than one pending request:
filing needs only the account's token, so somebody holding the passphrase
who saw a code could file their own keys under it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'docs/MESHBAY_NODE_PROTOCOL.md')
| -rw-r--r-- | docs/MESHBAY_NODE_PROTOCOL.md | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/docs/MESHBAY_NODE_PROTOCOL.md b/docs/MESHBAY_NODE_PROTOCOL.md index 8372ee7..b1f7644 100644 --- a/docs/MESHBAY_NODE_PROTOCOL.md +++ b/docs/MESHBAY_NODE_PROTOCOL.md @@ -994,6 +994,7 @@ answered with the group key, like any pinned device's. | | A recomputes sha256(code||keys) | | for each candidate and keeps the match. | | No match -> refuse before signing. + | | More than one -> refuse: approve none. | | | | |<--- device_add --------------| | | {pk_ed25519, pk_x25519, | @@ -1006,6 +1007,12 @@ answered with the group key, like any pinned device's. | | {pk_ed25519} | ``` +A request is filed with the account's token alone, before any proof (§7). So +anyone holding the passphrase who has seen a code on D's screen can file a second +request with that code and keys of their own, and both hashes verify. That is why +A approves only a code that matches **exactly one** pending request; D then shows +a new code. + ### 9.2 Transcripts ``` |