File tree 1 file changed +26
-1
lines changed
src/darwin/Framework/CHIP
1 file changed +26
-1
lines changed Original file line number Diff line number Diff line change @@ -198,11 +198,36 @@ + (NSNumber *)generateRandomSetupPasscode
198
198
return @(chip::kSetupPINCodeUndefinedValue );
199
199
}
200
200
201
+ + (bool )isQRCode : (NSString *)onboardingPayload
202
+ {
203
+ return [onboardingPayload hasPrefix: @" MT:" ];
204
+ }
205
+
201
206
+ (MTRSetupPayload * _Nullable)setupPayloadWithOnboardingPayload : (NSString *)onboardingPayload
202
207
error : (NSError * __autoreleasing *)error
203
208
{
204
209
// TODO: Do we actually need the MTROnboardingPayloadParser abstraction?
205
- return [MTROnboardingPayloadParser setupPayloadForOnboardingPayload: onboardingPayload error: error];
210
+ MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload: onboardingPayload error: error];
211
+ if (payload == nil ) {
212
+ return nil ;
213
+ }
214
+
215
+ bool isQRCode = [MTRSetupPayload isQRCode: onboardingPayload];
216
+ bool validPayload;
217
+ if (isQRCode) {
218
+ validPayload = payload->_chipSetupPayload .isValidQRCodePayload ();
219
+ } else {
220
+ validPayload = payload->_chipSetupPayload .isValidManualCode ();
221
+ }
222
+
223
+ if (!validPayload) {
224
+ if (error) {
225
+ *error = [MTRError errorForCHIPErrorCode: CHIP_ERROR_INVALID_ARGUMENT];
226
+ }
227
+ return nil ;
228
+ }
229
+
230
+ return payload;
206
231
}
207
232
208
233
#pragma mark - NSSecureCoding
You can’t perform that action at this time.
0 commit comments