pub struct IPv6NodeID {
pub node_id: Vec<u8>,
pub ipv6_addr: Ipv6Addr,
pub public_key: Vec<u8>,
pub signature: Vec<u8>,
pub timestamp_secs: u64,
pub salt: Vec<u8>,
}
Expand description
IPv6-based node identity that binds node ID to actual network location
Fields§
§node_id: Vec<u8>
Derived node ID (SHA256 of ipv6_addr + public_key + salt)
ipv6_addr: Ipv6Addr
IPv6 address this node ID is bound to
public_key: Vec<u8>
Ed25519 public key for signatures
signature: Vec<u8>
Signature proving ownership of the IPv6 address and keys
timestamp_secs: u64
Timestamp when this ID was generated (seconds since epoch)
salt: Vec<u8>
Salt used in node ID generation (for freshness)
Implementations§
Source§impl IPv6NodeID
impl IPv6NodeID
Sourcepub fn generate(ipv6_addr: Ipv6Addr, keypair: &Keypair) -> Result<Self>
pub fn generate(ipv6_addr: Ipv6Addr, keypair: &Keypair) -> Result<Self>
Generate a new IPv6-based node ID
Sourcepub fn extract_subnet_64(&self) -> Ipv6Addr
pub fn extract_subnet_64(&self) -> Ipv6Addr
Extract /64 subnet from IPv6 address
Sourcepub fn extract_subnet_48(&self) -> Ipv6Addr
pub fn extract_subnet_48(&self) -> Ipv6Addr
Extract /48 subnet from IPv6 address
Sourcepub fn extract_subnet_32(&self) -> Ipv6Addr
pub fn extract_subnet_32(&self) -> Ipv6Addr
Extract /32 subnet from IPv6 address
Trait Implementations§
Source§impl Clone for IPv6NodeID
impl Clone for IPv6NodeID
Source§fn clone(&self) -> IPv6NodeID
fn clone(&self) -> IPv6NodeID
Returns a duplicate of the value. Read more
1.0.0 · Source§const fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for IPv6NodeID
impl Debug for IPv6NodeID
Source§impl<'de> Deserialize<'de> for IPv6NodeID
impl<'de> Deserialize<'de> for IPv6NodeID
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>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for IPv6NodeID
impl RefUnwindSafe for IPv6NodeID
impl Send for IPv6NodeID
impl Sync for IPv6NodeID
impl Unpin for IPv6NodeID
impl UnwindSafe for IPv6NodeID
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
Mutably borrows from an owned value. Read more