Add Iroh peer ping
This commit is contained in:
parent
8ab3ef004e
commit
679eeb48a3
15 changed files with 619 additions and 18 deletions
|
|
@ -43,14 +43,19 @@ authorization state, or make EndpointID knowledge sufficient for access.
|
|||
The current daemon can enable Iroh's local-network discovery service through
|
||||
`[iroh].local_discovery = true`, which is the default. This publishes and
|
||||
discovers Iroh node addressing. `geth peer export/import/list` supports manual
|
||||
exchange of signed peer cards as untrusted candidates. Automatic signed
|
||||
peer-card advertisement over LAN discovery remains separate future work.
|
||||
exchange of signed peer cards as untrusted candidates. Peer cards include the
|
||||
Iroh EndpointID plus relay/direct address candidates when the daemon can observe
|
||||
them. `geth peer ping <node-id>` dials an imported peer card over Iroh and
|
||||
exchanges signed peer-card metadata. Automatic signed peer-card advertisement
|
||||
over LAN discovery remains separate future work.
|
||||
|
||||
Peer cards are the discovery payload. A peer card carries node ID, agent ID,
|
||||
endpoint candidates, timestamp, signing public key, and an Ed25519 signature
|
||||
over a canonical payload. Imported peer cards are stored as untrusted metadata
|
||||
in `peer_cards`; trust reduction is future work. `auth explain` reports when a
|
||||
subject is only a discovered peer candidate and denies access.
|
||||
over a canonical payload. Imported and ping-discovered peer cards are stored as
|
||||
untrusted metadata in `peer_cards`; trust reduction is future work. `auth
|
||||
explain` reports when a subject is only a discovered peer candidate and denies
|
||||
access. The peer ping path authenticates the Iroh endpoint and peer-card
|
||||
signature, but it does not authorize any resource module.
|
||||
|
||||
The daemon starts this endpoint during `geth daemon run` and keeps it alive for
|
||||
the daemon lifetime. When endpoint startup succeeds, the Iroh EndpointID is
|
||||
|
|
|
|||
|
|
@ -98,6 +98,8 @@ geth-to-geth connections without granting trust from discovery alone.
|
|||
Acceptance criteria:
|
||||
- `[x]` Manual `geth peer export/import/list` can exchange signed peer cards
|
||||
and store them as untrusted candidates.
|
||||
- `[x]` Exported daemon peer cards include Iroh EndpointID plus available
|
||||
relay/direct address candidates.
|
||||
- `[ ]` The daemon can advertise and discover signed geth peer cards over LAN
|
||||
discovery.
|
||||
- `[x]` Imported peer cards are stored only as untrusted peer candidates.
|
||||
|
|
@ -125,11 +127,18 @@ geth-to-geth connections without granting trust from discovery alone.
|
|||
- No discovery result grants capabilities or trust.
|
||||
- `auth explain` can distinguish "discovered" from "trusted".
|
||||
|
||||
- `[ ]` Basic authenticated peer connection.
|
||||
- `[~]` Basic authenticated peer connection.
|
||||
Acceptance criteria:
|
||||
- A node can dial another node over Iroh using an EndpointID from a peer card.
|
||||
- The remote side proves an agent/node binding before module access.
|
||||
- Knowing only an EndpointID is insufficient to access a protected module.
|
||||
- `[x]` `geth peer ping <node-id>` dials another node over Iroh using an
|
||||
imported signed peer card.
|
||||
- `[x]` The remote side validates the caller's signed peer card and stores it
|
||||
as a candidate only.
|
||||
- `[x]` The ping response records negotiated ALPN and remote endpoint
|
||||
identity.
|
||||
- `[ ]` The remote side proves an agent/node binding before protected module
|
||||
access.
|
||||
- `[ ]` Protected module handlers reject requests that only know an
|
||||
EndpointID and lack resource capabilities.
|
||||
|
||||
## Phase 2: Trust And Authorization
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue