pub struct InviteLink {
pub v: u32,
pub host_multiaddr: String,
pub fingerprint: String,
pub room: Option<InviteRoom>,
pub creator_pubkey_b64: Option<String>,
pub signed_at_ms: i64,
pub signature_b64: Option<String>,
pub relay_url: Option<String>,
pub mlkem_ek_b64: Option<String>,
}Fields§
§v: u321 = legacy unsigned (huddle 0.7.10 and earlier).
2 = signed (huddle 0.7.11+). 3 = signed + relay_url (huddle 1.0+).
4 = signed + ML-KEM encapsulation-key commitment (huddle 2.0+).
host_multiaddr: String§fingerprint: String§room: Option<InviteRoom>§creator_pubkey_b64: Option<String>huddle 0.7.11: creator’s raw Ed25519 pubkey, base64. Required
for v >= 2. The verifier re-derives the fingerprint from this
and rejects the invite if it doesn’t match fingerprint.
signed_at_ms: i64huddle 0.7.11: epoch-ms at signing time.
signature_b64: Option<String>huddle 0.7.11: Ed25519 signature over signable_bytes. Required
for v >= 2.
relay_url: Option<String>huddle 1.0: optional clearnet relay URL the inviter is reachable on
(wss://host/ws or ws://ip:port/ws — e.g. a cloudflared tunnel).
When present, the joiner can connect to the inviter’s relay with zero
config. Bumps the invite to v=3 and is covered by the signature, so
it can’t be swapped for an attacker’s relay without breaking the sig.
None for relay-less invites (which stay v=2, readable by older
clients).
mlkem_ek_b64: Option<String>huddle 2.0: optional base64 of the inviter’s ML-KEM-768
encapsulation (public) key. When present, the invite commits to
the inviter’s post-quantum identity in the signed transcript, so a
relay can’t strip the inviter’s PQ capability without breaking the
signature. Bumps the invite to v=4 and is folded into
signable_bytes only when present, so classical (ML-KEM-less)
invites stay byte-identical to v2/v3 and readable by older clients.
None for classical invites.
Trait Implementations§
Source§impl Clone for InviteLink
impl Clone for InviteLink
Source§fn clone(&self) -> InviteLink
fn clone(&self) -> InviteLink
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for InviteLink
impl Debug for InviteLink
Source§impl<'de> Deserialize<'de> for InviteLink
impl<'de> Deserialize<'de> for InviteLink
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for InviteLink
Source§impl PartialEq for InviteLink
impl PartialEq for InviteLink
Source§fn eq(&self, other: &InviteLink) -> bool
fn eq(&self, other: &InviteLink) -> bool
self and other values to be equal, and is used by ==.