Skip to main content

Fabric

Struct Fabric 

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

Fabric type

Implementations§

Source§

impl Fabric

Source

pub fn mdns_service(&self) -> Option<MatterLocalService>

Source

pub fn mdns_service_for(&self, node_id: u64) -> Option<MatterLocalService>

Source

pub fn is_dest_id<C>( &self, crypto: C, random: &[u8], target: &[u8], ) -> Result<(), Error>
where C: Crypto,

Is the fabric matching the privided destination ID

Source

pub fn compute_dest_id<C>( &self, crypto: C, random: &[u8], target_node_id: u64, out: &mut CryptoSensitive<rs_matter::::crypto::canon::Hash::{constant#0}>, ) -> Result<(), Error>
where C: Crypto,

Compute the destination identifier for a target node on this fabric.

Used by the CASE initiator to build Sigma1 (spec). destinationMessage = initiatorRandom || rootPublicKey || fabricId(LE) || nodeId(LE) destinationIdentifier = Crypto_HMAC(key=IPK, message=destinationMessage)

§Arguments
  • target_node_id: The node ID of the destination (peer) node, NOT the local node.
Source

pub fn secret_key( &self, ) -> CryptoSensitiveRef<'_, rs_matter::::crypto::canon::CanonPkcSecretKeyRef::{constant#0}>

Return the secret key of the fabric

Source

pub fn node_id(&self) -> u64

Return the fabric’s node ID

Source

pub fn fabric_id(&self) -> u64

Return the fabric’s fabric ID

Source

pub fn fab_idx(&self) -> NonZero<u8>

Return the fabric’s local index

Source

pub fn compressed_fabric_id(&self) -> u64

Return the fabric’s compressed fabric ID

Source

pub fn vendor_id(&self) -> u16

Return the fabric’s Vendor ID

Source

pub fn label(&self) -> &str

Return the fabric’s label

Source

pub fn root_ca(&self) -> &[u8]

Return the fabric’s Root CA in encoded TLV form

Use CertRef to decode on the fly

Source

pub fn icac(&self) -> &[u8]

Return the fabric’s ICAC in encoded TLV form

Use CertRef to decode on the fly.

Note that this method might return an empty slice, which indicates that this fabric does not have an ICAC. (The shared icac_or_vvsc slot may instead hold a VVSC; see vvsc().)

Source

pub fn noc(&self) -> &[u8]

Return the fabric’s NOC

Source

pub fn ipk(&self) -> &KeySet

Return the fabric’s IPK

Source

pub fn vvsc(&self) -> &[u8]

Return the fabric’s VVSC bytes (Matter Core spec). Empty when SetVIDVerificationStatement has never been called with a non-empty VVSC for this fabric, or when the fabric instead carries an ICAC (see icac()) — VVSC and ICAC share storage and are mutually exclusive per spec.

Source

pub fn vid_verification_statement(&self) -> &[u8]

Return the fabric’s VID Verification Statement bytes (Matter Core spec). Either empty (not set) or exactly VID_VERIFICATION_STATEMENT_LEN bytes.

Source

pub fn set_vid_verification( &mut self, vendor_id: Option<u16>, vid_verification_statement: Option<&[u8]>, vvsc: Option<&[u8]>, ) -> Result<(), Error>

Apply a SetVIDVerificationStatement mutation to the fabric. Each field is Some(slice) for “replace with this value” (where an empty slice clears the value), or None for “leave unchanged”. The caller is responsible for spec-level validation (size limits, VVSC vs ICAC mutual exclusion, “all fields absent” → INVALID_COMMAND, VendorID range, …); this method only enforces the storage invariants (heapless Vec capacity).

Source

pub fn acl_iter(&self) -> impl Iterator<Item = &AclEntry>

Return an iterator over the ACL entries of the fabric

Source

pub fn acl_add(&mut self, entry: AclEntry) -> Result<usize, Error>

Add a new ACL entry to the fabric.

Return the index of the added entry.

Source

pub fn acl_add_init<I>(&mut self, init: I) -> Result<usize, Error>
where I: Init<AclEntry, Error>,

Add a new ACL entry to the fabric using the supplied initializer.

Return the index of the added entry.

Source

pub fn acl_update(&mut self, idx: usize, entry: AclEntry) -> Result<(), Error>

Update an existing ACL entry in the fabric

Source

pub fn acl_update_init<I>(&mut self, idx: usize, init: I) -> Result<(), Error>
where I: Init<AclEntry, Error>,

Update an existing ACL entry in the fabric using the supplied initializer

Source

pub fn acl_remove(&mut self, idx: usize) -> Result<(), Error>

Remove an ACL entry from the fabric

Source

pub fn acl_remove_all(&mut self)

Remove all ACL entries from the fabric

Trait Implementations§

Source§

impl Debug for Fabric

Source§

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

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

impl<'__from_tlv> FromTLV<'__from_tlv> for Fabric

Source§

fn from_tlv(element: &TLVElement<'__from_tlv>) -> Result<Fabric, Error>

Deserialize the type from a TLV-encoded element.
Source§

fn init_from_tlv(element: TLVElement<'__from_tlv>) -> impl Init<Fabric, Error>

Generate an in-place initializer for the type that initializes the type from a TLV-encoded element.
Source§

fn nullable_from_tlv(element: &TLVElement<'a>) -> Result<Self, Error>

Deserialize the type from a TLV-encoded element. Read more
Source§

fn init_nullable_from_tlv(element: TLVElement<'a>) -> impl Init<Self, Error>

Generate an in-place initializer for the type that initializes the type from a TLV-encoded element. Read more
Source§

impl ToTLV for Fabric

Source§

fn to_tlv<W>(&self, tag: &TLVTag, tw: W) -> Result<(), Error>
where W: TLVWrite,

Serialize the type to a TLV-encoded stream.
Source§

fn tlv_iter(&self, tag: TLVTag) -> impl Iterator<Item = Result<TLV<'_>, Error>>

Serialize the type as an iterator of TLV instances by potentially borrowing data from the type.
Source§

fn nullable_to_tlv<W>(&self, tag: &TLVTag, tw: W) -> Result<(), Error>
where W: TLVWrite,

Serialize the type to a TLV-encoded stream. Read more
Source§

fn nullable_tlv_iter( &self, tag: TLVTag, ) -> impl Iterator<Item = Result<TLV<'_>, Error>>

Serialize the type as an iterator of TLV instances by potentially borrowing data from the type. Read more
Source§

impl<'__from_tlv> TryFrom<&TLVElement<'__from_tlv>> for Fabric

Source§

type Error = Error

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

fn try_from( element: &TLVElement<'__from_tlv>, ) -> Result<Fabric, <Fabric as TryFrom<&TLVElement<'__from_tlv>>>::Error>

Performs the conversion.

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, E> Init<T, E> for T

Source§

unsafe fn __init(self, slot: *mut T) -> Result<(), E>

Initializes slot. Read more
Source§

fn chain<F>(self, f: F) -> ChainInit<Self, F, T, E>
where F: FnOnce(&mut T) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T, I> IntoFallibleInit<T> for I
where I: Init<T>,

Source§

fn into_fallible<E>(self) -> impl Init<T, E>

Convert the infallible initializer to a fallible one.
Source§

impl<Source, Target> OctetsInto<Target> for Source
where Target: OctetsFrom<Source>,

Source§

type Error = <Target as OctetsFrom<Source>>::Error

Source§

fn try_octets_into( self, ) -> Result<Target, <Source as OctetsInto<Target>>::Error>

Performs the conversion.
Source§

fn octets_into(self) -> Target
where Self::Error: Into<Infallible>,

Performs an infallible conversion.
Source§

impl<T, E> PinInit<T, E> for T

Source§

unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), E>

Initializes slot. Read more
Source§

fn pin_chain<F>(self, f: F) -> ChainPinInit<Self, F, T, E>
where F: FnOnce(Pin<&mut T>) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V