Skip to main content

CommissionerConfig

Struct CommissionerConfig 

Source
pub struct CommissionerConfig<'a> {
Show 13 fields pub pase_attestation_challenge: [u8; 16], pub fabric: &'a FabricRecord, pub setup_payload: &'a SetupPayload, pub paa_trust_store: &'a PaaTrustStore, pub cd_signing_roots: &'a CdSigningRoots, pub commissioner_node_id: u64, pub assigned_node_id: u64, pub ipk_epoch_key: [u8; 16], pub case_admin_subject: u64, pub admin_vendor_id: u16, pub now: MatterTime, pub rng: Arc<dyn NocRng>, pub network: NetworkCredentials,
}
Expand description

Configuration passed to Commissioner::new.

All fields are by-reference where possible so the state machine can share long-lived caller-owned resources (the fabric record, the trust store, the setup payload) without copying.

Not #[non_exhaustive] — callers build this as a struct literal with all public fields populated. Adding a field is a breaking change, accepted for a pre-1.0 unpublished crate. #[non_exhaustive] stays on Action, Expectation, Stage, and CommissioningError — those are read by callers, not constructed by them.

Fields§

§pase_attestation_challenge: [u8; 16]

16-byte attestation challenge derived from the active PASE session. Matter Core Spec §3.6.4: bytes [32..48] of the 48-byte PASE session key blob (exposed as PaseSessionKeys::attestation_key).

§fabric: &'a FabricRecord

The commissioner’s fabric record (RCAC keypair + signer + IPK). Constructed via FabricRecord::new_root_only from M6.3.

§setup_payload: &'a SetupPayload

The setup payload parsed from QR or manual code (M6.1). Used to cross-check VID/PID against the DAC’s subject during attestation verification.

§paa_trust_store: &'a PaaTrustStore

Trusted PAA roots for attestation chain validation (M6.2).

§cd_signing_roots: &'a CdSigningRoots

Trusted CSA Certification Declaration signing roots (M6.4.3). Tests can use CdSigningRoots::with_example_device_roots(); production callers supply CSA-published roots via CdSigningRoots::from_pem.

§commissioner_node_id: u64

The commissioner’s own operational node ID on this fabric. Must be non-zero.

§assigned_node_id: u64

The operational node ID being assigned to the device on this fabric. Must be non-zero and distinct from commissioner_node_id.

§ipk_epoch_key: [u8; 16]

16-byte Identity Protection Key (IPK) epoch key for AddNOC. Matter Core Spec §4.15.2. Must not be all-zero (rejected by the device-side AddNOC handler).

§case_admin_subject: u64

CASE admin subject for AddNOC (typically the commissioner’s own operational node ID).

§admin_vendor_id: u16

Admin vendor ID for AddNOC.

§now: MatterTime

Wall-clock time at construction. Used for NOC + RCAC validity windows and for chain verification’s not_before / not_after checks.

§rng: Arc<dyn NocRng>

RNG for nonces (CSRNonce, AttestationNonce) and NOC serials.

§network: NetworkCredentials

Operational-network credentials for the commissionee.

NetworkCredentials::AlreadyOnNetwork skips the network sub-cursor entirely, mirroring chip’s AutoCommissioner: network provisioning runs ONLY when concrete credentials are supplied. It is correct both for Ethernet-only devices and for devices already reachable on their operational network (the usual case for IP commissioning, e.g. a second-fabric commission). Supplying NetworkCredentials::WiFi or NetworkCredentials::Thread forces provisioning via Stage::NetworkSetup.

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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> 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, 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.