pub struct PeerIntroduceParams {
pub subject: String,
pub endorsed_by: String,
pub evidence: String,
pub subject_user_id: Option<String>,
pub subject_binding: Option<String>,
pub nickname: String,
}Expand description
Params of Request::PeerIntroduce (#65): install a peer vouched for by someone you are
already paired with.
The endorsement replaces pairing’s SAS with the endorser’s signature, so you are trusting that
endorser’s judgment and key hygiene as well as their identity. It buys identity resolution only
— see Request::PeerIntroduce.
Fields§
§subject: StringThe subject’s endpoint id, eid:<hex> — who is being introduced.
endorsed_by: StringThe endorser’s user public key, b64u:. MUST be the user_id of a CURRENTLY paired peer:
the chain has to terminate at someone you paired with yourself, so an endorsement from a
stranger — or from someone you have since unpaired — is refused.
evidence: StringThe endorser’s signature over the domain-separated preimage, b64u:.
subject_user_id: Option<String>The subject’s OWN user key, b64u:, so several of the subject’s devices resolve to one
person. Part of the endorser’s signed statement, so it cannot be added or removed after
the fact.
Requires subject_binding too, and is REFUSED without it. A user_id is
authorization-bearing — service allow lists match on it — so the endorser vouching for it
is not enough: an endorser could otherwise name a victim’s user_id (which is public, on
status and every audit record) for an attacker’s endpoint, and the attacker would inherit
that victim’s grants. The subject must prove the key is theirs.
subject_binding: Option<String>The SUBJECT’s own device→user binding for subject_user_id, b64u: — the same signature a
peer presents at pairing (mcpmesh/join/device-binding/1), proving it controls that user
key and that the key is bound to this endpoint.
Two independent signatures are required for a user_id, and they say different things: the
endorser’s says “I vouch for this endpoint”, the subject’s says “this user key is mine”.
Neither alone is sufficient.
nickname: StringYOUR local name for the subject. Same rules and the same collision guard as pairing (#87).
Trait Implementations§
Source§impl Clone for PeerIntroduceParams
impl Clone for PeerIntroduceParams
Source§fn clone(&self) -> PeerIntroduceParams
fn clone(&self) -> PeerIntroduceParams
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more