Phase 4 — Custom RainMaker fabric init
Layer: Native MTR
After Apple commissioning succeeds, the host app commissions the device onto the RainMaker fabric.
Call chain
initializeMatterControllerWithFabric
- Loads user NOC from Keychain (
loadUserNOCFromKeychain). - Starts
MTRDeviceControllerFactorywithESPMatterStorage(UserDefaults-backed). - Creates
MTRCSRKeys(groupId:)for operational keypair + IPK. - Builds
MTRDeviceControllerStartupParams(IPK, user NOC, root CA, vendor ID fromInfo.plist). - Sets
operationalCertificateIssuer = self(for device node NOC in Phase 6). - Creates controller via
createController(onExistingFabric:)orcreateController(onNewFabric:). - Sets
MTRDeviceControllerDelegate+ attestation delegate.
What could go wrong
User NOC not in Keychain → throws before session starts. Certificate PEM→DER conversion fails → controller init error. Factory already running from prior session → handled by shutdownMatterController() first.