Struct NodeIdentityPayload
pub struct NodeIdentityPayload {
pub role: NodeRole,
pub capabilities: NodeCapabilities,
pub name: Option<String>,
pub location: Option<NodeLocation>,
pub altitude_m: Option<i32>,
pub timestamp: Option<u32>,
pub supported_regions: Option<Vec<u8>>,
pub nonce: Option<u32>,
pub signature: Option<[u8; 64]>,
}Fields§
§role: NodeRole§capabilities: NodeCapabilities§name: Option<String>Option 0 — display name (UTF-8).
location: Option<NodeLocation>Option 1 — geographic position.
altitude_m: Option<i32>Option 2 — altitude above mean sea level, in meters.
timestamp: Option<u32>Option 3 — seconds since the Unix epoch (freshness marker).
supported_regions: Option<Vec<u8>>Option 4 — concatenated 2-byte region codes this repeater serves.
nonce: Option<u32>Option 5 — nonce echoed from a soliciting Advertisement Request. Present only in solicited advertisements whose request carried one.
signature: Option<[u8; 64]>EdDSA signature over ROLE..=0xFF, present when the identity stands alone.
TODO: signing and verification belong outside NodeIdentityPayload
(the way the source-address routing hint lives outside the payload).
The eventual rework should remove this field and move the
signed-identity wrapper to a separate type that owns both the encoded
payload bytes and the signature, so the signed-byte range is never
reconstructed at the call site.
Implementations§
§impl NodeIdentityPayload
impl NodeIdentityPayload
pub fn from_bytes(payload: &[u8]) -> Result<NodeIdentityPayload, AppParseError>
pub fn encode(&self, buf: &mut [u8]) -> Result<usize, AppEncodeError>
pub fn encode_for_signing(
&self,
buf: &mut [u8],
) -> Result<usize, AppEncodeError>
pub fn encode_for_signing( &self, buf: &mut [u8], ) -> Result<usize, AppEncodeError>
Encode the signed byte range — ROLE through the 0xFF
options terminator, inclusive — for a detached signing step.
self.signature is ignored; the caller signs exactly the
returned bytes and appends the 64-byte signature to produce the
standalone (signed) wire form:
let len = payload.encode_for_signing(&mut buf)?;
let signature = identity.sign(&buf[..len]).await?;
buf[len..len + 64].copy_from_slice(&signature);
// buf[..len + 64] now parses with `signature: Some(..)`.Trait Implementations§
§impl Clone for NodeIdentityPayload
impl Clone for NodeIdentityPayload
§fn clone(&self) -> NodeIdentityPayload
fn clone(&self) -> NodeIdentityPayload
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for NodeIdentityPayload
impl Debug for NodeIdentityPayload
§impl PartialEq for NodeIdentityPayload
impl PartialEq for NodeIdentityPayload
impl Eq for NodeIdentityPayload
impl StructuralPartialEq for NodeIdentityPayload
Auto Trait Implementations§
impl Freeze for NodeIdentityPayload
impl RefUnwindSafe for NodeIdentityPayload
impl Send for NodeIdentityPayload
impl Sync for NodeIdentityPayload
impl Unpin for NodeIdentityPayload
impl UnwindSafe for NodeIdentityPayload
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)