|
71 | 71 | static NSString * const kErrorGenerateNOC = @"Generating operational certificate failed";
|
72 | 72 | static NSString * const kErrorKeyAllocation = @"Generating new operational key failed";
|
73 | 73 | static NSString * const kErrorCSRValidation = @"Extracting public key from CSR failed";
|
| 74 | +static NSString * const kErrorGetCommissionee = @"Failure obtaining device being commissioned"; |
| 75 | +static NSString * const kErrorGetAttestationChallenge = @"Failure getting attestation challenge"; |
74 | 76 |
|
75 | 77 | @interface MTRDeviceController ()
|
76 | 78 |
|
@@ -703,6 +705,32 @@ - (nullable NSData *)computePaseVerifier:(uint32_t)setupPincode iterations:(uint
|
703 | 705 | return result;
|
704 | 706 | }
|
705 | 707 |
|
| 708 | +- (nullable NSData *)generateAttestationChallengeForDeviceId:(uint64_t)deviceId |
| 709 | +{ |
| 710 | + VerifyOrReturnValue([self checkIsRunning], nil); |
| 711 | + |
| 712 | + __block NSData * attestationChallenge; |
| 713 | + dispatch_sync(_chipWorkQueue, ^{ |
| 714 | + VerifyOrReturn([self checkIsRunning]); |
| 715 | + |
| 716 | + chip::CommissioneeDeviceProxy * deviceProxy; |
| 717 | + auto errorCode = self.cppCommissioner->GetDeviceBeingCommissioned(deviceId, &deviceProxy); |
| 718 | + auto success = ![self checkForError:errorCode logMsg:kErrorGetCommissionee error:nil]; |
| 719 | + VerifyOrReturn(success); |
| 720 | + |
| 721 | + uint8_t challengeBuffer[chip::Crypto::kAES_CCM128_Key_Length]; |
| 722 | + chip::ByteSpan challenge(challengeBuffer); |
| 723 | + |
| 724 | + errorCode = deviceProxy->GetAttestationChallenge(challenge); |
| 725 | + success = ![self checkForError:errorCode logMsg:kErrorGetAttestationChallenge error:nil]; |
| 726 | + VerifyOrReturn(success); |
| 727 | + |
| 728 | + attestationChallenge = AsData(challenge); |
| 729 | + }); |
| 730 | + |
| 731 | + return attestationChallenge; |
| 732 | +} |
| 733 | + |
706 | 734 | - (BOOL)checkForInitError:(BOOL)condition logMsg:(NSString *)logMsg
|
707 | 735 | {
|
708 | 736 | if (condition) {
|
|
0 commit comments