@@ -515,9 +515,9 @@ - (void)testTrustForKeyBackupVersion
515515// - Alice and Bob have messages in a room
516516// - Alice has cross-signing enabled
517517// - Alice creates a backup
518+ // - Modify the backup to remove all signatures other than the MSK so we know that the MSK alone is enough for the device to be trusted
518519// - Check the returned MXKeyBackupVersion is trusted
519- // -> It must be trusted by 2 entities
520- // -> Trusted by her device
520+ // -> It must be trusted by 1 entities
521521// -> Trusted by her MSK
522522- (void )testCrossSigningMSKTrustForKeyBackupVersion
523523{
@@ -530,26 +530,28 @@ - (void)testCrossSigningMSKTrustForKeyBackupVersion
530530 // - Alice creates a backup
531531 [aliceSession.crypto.backup prepareKeyBackupVersionWithPassword: nil success: ^(MXMegolmBackupCreationInfo *keyBackupCreationInfo) {
532532 [aliceSession.crypto.backup createKeyBackupVersion: keyBackupCreationInfo success: ^(MXKeyBackupVersion *keyBackupVersion) {
533+ // De-serialize the authData, find the MSK signature, remove all other signatures from the authData, serialize it back in
534+ MXMegolmBackupAuthData *authData = [MXMegolmBackupAuthData modelFromJSON: keyBackupVersion.authData];
535+ NSString *myMSKSignatureKey = [NSString stringWithFormat: @" ed25519:%@ " , aliceSession.crypto.crossSigning.myUserCrossSigningKeys.masterKeys.keys];
536+ authData.signatures = @{
537+ aliceSession.myUserId : @{
538+ myMSKSignatureKey: authData.signatures [aliceSession.myUserId][myMSKSignatureKey]
539+ }
540+ };
541+ keyBackupVersion.authData = [authData JSONDictionary ];
533542
534543 // - Check the returned MXKeyBackupVersion is trusted
535544 [aliceSession.crypto.backup trustForKeyBackupVersion: keyBackupVersion onComplete: ^(MXKeyBackupVersionTrust *keyBackupVersionTrust) {
536-
537- // -> It must be trusted by 2 entities
545+ // -> It must be trusted by 1 entity
538546 XCTAssertNotNil (keyBackupVersionTrust);
539547 XCTAssertTrue (keyBackupVersionTrust.usable );
540- XCTAssertEqual (keyBackupVersionTrust.signatures .count , 2 );
548+ XCTAssertEqual (keyBackupVersionTrust.signatures .count , 1 );
541549
542550 [keyBackupVersionTrust.signatures enumerateObjectsUsingBlock: ^(MXKeyBackupVersionTrustSignature *signature, NSUInteger idx, BOOL *stop) {
543- if (signature.keys ) {
544- // Check if valid MSK signature
545- XCTAssertTrue (signature.valid );
546- XCTAssertEqualObjects (signature.keys , aliceSession.crypto .crossSigning .myUserCrossSigningKeys .masterKeys .keys );
547- } else {
548- // Check if valid device signature
549- XCTAssertTrue (signature.valid );
550- XCTAssertEqualObjects (signature.deviceId , aliceSession.matrixRestClient .credentials .deviceId );
551- XCTAssertEqualObjects (signature.device .deviceId , aliceSession.matrixRestClient .credentials .deviceId );
552- }
551+ // Check if valid MSK signature
552+ XCTAssertNotNil (signature.keys );
553+ XCTAssertTrue (signature.valid );
554+ XCTAssertEqualObjects (signature.keys , aliceSession.crypto .crossSigning .myUserCrossSigningKeys .masterKeys .keys );
553555 }];
554556
555557 [expectation fulfill ];
0 commit comments