@@ -117,14 +117,19 @@ void DeviceManager::RemoveSyncedDevice(NodeId nodeId)
117
117
ChipLogValueX64 (device->GetNodeId ()), device->GetEndpointId ());
118
118
}
119
119
120
- void DeviceManager::OpenDeviceCommissioningWindow (NodeId nodeId , uint32_t iterations, uint16_t commissioningTimeoutSec,
120
+ void DeviceManager::OpenDeviceCommissioningWindow (ScopedNodeId scopedNodeId , uint32_t iterations, uint16_t commissioningTimeoutSec,
121
121
uint16_t discriminator, const ByteSpan & salt, const ByteSpan & verifier)
122
122
{
123
- ChipLogProgress (NotSpecified, " Opening commissioning window for Node ID: " ChipLogFormatX64, ChipLogValueX64 (nodeId));
123
+ // PairingManager isn't currently capable of OpenCommissioningWindow on a device of a fabric that it doesn't have
124
+ // the controller for. Currently no implementation need this functionality, but should they need it they will hit
125
+ // the verify or die below and it will be the responsiblity of whoever requires that functionality to implement.
126
+ VerifyOrDie (PairingManager::Instance ().CurrentCommissioner ().GetFabricIndex () == scopedNodeId.GetFabricIndex ());
127
+ ChipLogProgress (NotSpecified, " Opening commissioning window for Node ID: " ChipLogFormatX64,
128
+ ChipLogValueX64 (scopedNodeId.GetNodeId ()));
124
129
125
130
// Open the commissioning window of a device within its own fabric.
126
- CHIP_ERROR err = PairingManager::Instance ().OpenCommissioningWindow (nodeId, kRootEndpointId , commissioningTimeoutSec,
127
- iterations, discriminator, salt, verifier);
131
+ CHIP_ERROR err = PairingManager::Instance ().OpenCommissioningWindow (
132
+ scopedNodeId. GetNodeId (), kRootEndpointId , commissioningTimeoutSec, iterations, discriminator, salt, verifier);
128
133
if (err != CHIP_NO_ERROR)
129
134
{
130
135
ChipLogError (NotSpecified, " Failed to open commissioning window: %s" , ErrorStr (err));
@@ -412,7 +417,8 @@ void DeviceManager::HandleReverseOpenCommissioningWindow(TLV::TLVReader & data)
412
417
ChipLogProgress (NotSpecified, " PAKEPasscodeVerifier size: %lu" , value.PAKEPasscodeVerifier .size ());
413
418
ChipLogProgress (NotSpecified, " salt size: %lu" , value.salt .size ());
414
419
415
- OpenDeviceCommissioningWindow (mLocalBridgeNodeId , value.iterations , value.commissioningTimeout , value.discriminator ,
420
+ ScopedNodeId scopedNodeId (mLocalBridgeNodeId , PairingManager::Instance ().CurrentCommissioner ().GetFabricIndex ());
421
+ OpenDeviceCommissioningWindow (scopedNodeId, value.iterations , value.commissioningTimeout , value.discriminator ,
416
422
ByteSpan (value.salt .data (), value.salt .size ()),
417
423
ByteSpan (value.PAKEPasscodeVerifier .data (), value.PAKEPasscodeVerifier .size ()));
418
424
}
0 commit comments