pub struct DeviceId(/* private fields */);Expand description
Device identifier derived from Ed25519 public key.
The DeviceId is the first 16 bytes of SHA-256(public_key), providing:
- Uniqueness guarantee from the cryptographic hash
- Compact representation (32 hex chars instead of 64)
- Collision resistance from SHA-256
§Example
ⓘ
use peat_mesh::security::{DeviceKeypair, DeviceId};
let keypair = DeviceKeypair::generate();
let device_id = keypair.device_id();
// Convert to hex string for display/serialization
let hex = device_id.to_hex();
// Parse back from hex
let parsed = DeviceId::from_hex(&hex)?;
assert_eq!(device_id, parsed);Implementations§
Source§impl DeviceId
impl DeviceId
Sourcepub fn from_public_key(public_key: &VerifyingKey) -> DeviceId
pub fn from_public_key(public_key: &VerifyingKey) -> DeviceId
Create a DeviceId from an Ed25519 public key.
The ID is computed as SHA-256(public_key)[0..16].
Sourcepub fn from_public_key_bytes(bytes: &[u8]) -> Result<DeviceId, SecurityError>
pub fn from_public_key_bytes(bytes: &[u8]) -> Result<DeviceId, SecurityError>
Create a DeviceId from raw public key bytes (32 bytes).
Sourcepub fn from_bytes(bytes: [u8; 16]) -> DeviceId
pub fn from_bytes(bytes: [u8; 16]) -> DeviceId
Create a DeviceId from raw bytes (16 bytes).
Trait Implementations§
Source§impl<'de> Deserialize<'de> for DeviceId
impl<'de> Deserialize<'de> for DeviceId
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<DeviceId, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<DeviceId, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Serialize for DeviceId
impl Serialize for DeviceId
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl Copy for DeviceId
impl Eq for DeviceId
impl StructuralPartialEq for DeviceId
Auto Trait Implementations§
impl Freeze for DeviceId
impl RefUnwindSafe for DeviceId
impl Send for DeviceId
impl Sync for DeviceId
impl Unpin for DeviceId
impl UnsafeUnpin for DeviceId
impl UnwindSafe for DeviceId
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.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>
Converts
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>
Converts
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.