pub struct IdentityAnnouncement {
pub agent_id: AgentId,
pub machine_id: MachineId,
pub user_id: Option<UserId>,
pub agent_certificate: Option<AgentCertificate>,
pub machine_public_key: Vec<u8>,
pub machine_signature: Vec<u8>,
pub addresses: Vec<SocketAddr>,
pub announced_at: u64,
pub nat_type: Option<String>,
pub can_receive_direct: Option<bool>,
pub is_relay: Option<bool>,
pub is_coordinator: Option<bool>,
}Expand description
Signed identity announcement broadcast by agents.
The outer pub/sub envelope is agent-signed (v2 message format), and this payload is machine-signed to bind the daemon’s PQC key to the announcement.
Fields§
§agent_id: AgentIdPortable agent identity.
machine_id: MachineIdMachine identity for the daemon process.
user_id: Option<UserId>Optional human identity (only when explicitly consented).
agent_certificate: Option<AgentCertificate>Optional user->agent certificate.
machine_public_key: Vec<u8>Machine ML-DSA-65 public key bytes.
machine_signature: Vec<u8>Machine ML-DSA-65 signature over the unsigned announcement.
addresses: Vec<SocketAddr>Reachability hints.
announced_at: u64Unix timestamp (seconds) of announcement creation.
nat_type: Option<String>NAT type as detected by the network layer (e.g. “FullCone”, “Symmetric”).
None when the network is not yet started or NAT type is undetermined.
can_receive_direct: Option<bool>Whether the machine can receive direct inbound connections.
None when the network is not yet started.
is_relay: Option<bool>Whether the machine is currently relaying traffic for peers behind strict NATs.
None when the network is not yet started.
is_coordinator: Option<bool>Whether the machine is coordinating NAT traversal hole-punch timing for peers.
None when the network is not yet started.
Implementations§
Trait Implementations§
Source§impl Clone for IdentityAnnouncement
impl Clone for IdentityAnnouncement
Source§fn clone(&self) -> IdentityAnnouncement
fn clone(&self) -> IdentityAnnouncement
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for IdentityAnnouncement
impl Debug for IdentityAnnouncement
Source§impl<'de> Deserialize<'de> for IdentityAnnouncement
impl<'de> Deserialize<'de> for IdentityAnnouncement
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>,
Auto Trait Implementations§
impl Freeze for IdentityAnnouncement
impl RefUnwindSafe for IdentityAnnouncement
impl Send for IdentityAnnouncement
impl Sync for IdentityAnnouncement
impl Unpin for IdentityAnnouncement
impl UnsafeUnpin for IdentityAnnouncement
impl UnwindSafe for IdentityAnnouncement
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more