Skip to main content

PublicIdentity

Struct PublicIdentity 

Source
pub struct PublicIdentity { /* private fields */ }
Expand description

A device’s public identity: it names the device and verifies its signatures.

This is the public half of a device’s identity, safe to share and distribute. A gateway holds the public identities of the devices it trusts and uses them to check that each signed payload is authentic and unaltered.

Implementations§

Source§

impl PublicIdentity

Source

pub fn from_bytes(bytes: &[u8; 32]) -> Result<Self>

Reconstructs a public identity from its 32-byte form.

§Arguments
  • bytes - the 32-byte encoded public key.
§Returns

The public identity.

§Errors

Returns Error::Auth if bytes is not a valid public key.

Source

pub fn to_bytes(&self) -> [u8; 32]

Returns the 32-byte wire form of this identity.

§Returns

The public key encoded as 32 bytes.

Source

pub fn fingerprint(&self) -> String

Returns a short hex fingerprint of this identity for logs and displays.

The fingerprint is the first eight bytes of the public key in hex. It is a convenient label, not a substitute for the full key when checking trust.

§Returns

A 16-character lowercase hex string.

Source

pub fn verify(&self, payload: &[u8], signature: &Signature) -> Result<()>

Verifies that signature covers payload and was made by this identity.

§Arguments
  • payload - the bytes the signature is expected to cover.
  • signature - the signature to check.
§Returns

Ok(()) if the signature is authentic for payload.

§Errors

Returns Error::Auth if the signature does not match, which means the payload was altered or was not signed by this device.

Source

pub fn verify_message<'a>(&self, message: &'a [u8]) -> Result<&'a [u8]>

Verifies a message built by sign_message and returns the payload it carries.

The signature travels with the payload, so a caller sends one message and gets one payload back instead of tracking two byte strings and splitting them by hand. The payload is borrowed from message, and is only returned once the signature over it has been checked.

§Arguments
  • message - the signature followed by the payload, as sign_message wrote it.
§Returns

The payload, authentic and unaltered.

§Errors

Returns Error::Auth if message is shorter than a signature or the signature does not match the payload, which means the message was altered or was not signed by this device.

Trait Implementations§

Source§

impl Clone for PublicIdentity

Source§

fn clone(&self) -> PublicIdentity

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for PublicIdentity

Source§

impl Debug for PublicIdentity

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for PublicIdentity

Source§

impl PartialEq for PublicIdentity

Source§

fn eq(&self, other: &PublicIdentity) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for PublicIdentity

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.