diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 7b5804c15..89d201dff 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -260,6 +260,7 @@ "room_participants_action_security_status_verified" = "Verified"; "room_participants_action_security_status_verify" = "Verify"; "room_participants_action_security_status_warning" = "Warning"; +"room_participants_action_security_status_loading" = "Loading…"; "room_participants_security_loading" = "Loading…"; "room_participants_security_information_room_not_encrypted" = "Messages in this room are not end-to-end encrypted."; diff --git a/Riot/Categories/MXRoom+Riot.m b/Riot/Categories/MXRoom+Riot.m index 9347b3de8..cbd520688 100644 --- a/Riot/Categories/MXRoom+Riot.m +++ b/Riot/Categories/MXRoom+Riot.m @@ -328,7 +328,7 @@ { UserEncryptionTrustLevel userEncryptionTrustLevel; - if (self.summary.isEncrypted && self.mxSession.crypto) + if (self.mxSession.crypto) { MXUsersTrustLevelSummary *usersTrustLevelSummary = [self.mxSession.crypto trustLevelSummaryForUserIds:@[userId]]; diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index 45cc2b28d..c20e5b0d4 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -2342,6 +2342,10 @@ internal enum VectorL10n { internal static var roomParticipantsActionSectionSecurity: String { return VectorL10n.tr("Vector", "room_participants_action_section_security") } + /// Loading… + internal static var roomParticipantsActionSecurityStatusLoading: String { + return VectorL10n.tr("Vector", "room_participants_action_security_status_loading") + } /// Verified internal static var roomParticipantsActionSecurityStatusVerified: String { return VectorL10n.tr("Vector", "room_participants_action_security_status_verified") diff --git a/Riot/Modules/KeyVerification/Common/Verify/Scanning/KeyVerificationVerifyByScanningViewModel.swift b/Riot/Modules/KeyVerification/Common/Verify/Scanning/KeyVerificationVerifyByScanningViewModel.swift index a5db29829..087c0fe0d 100644 --- a/Riot/Modules/KeyVerification/Common/Verify/Scanning/KeyVerificationVerifyByScanningViewModel.swift +++ b/Riot/Modules/KeyVerification/Common/Verify/Scanning/KeyVerificationVerifyByScanningViewModel.swift @@ -209,6 +209,7 @@ final class KeyVerificationVerifyByScanningViewModel: KeyVerificationVerifyBySca } guard self.keyVerificationRequest.requestId == transaction.transactionId else { + NSLog("[KeyVerificationVerifyByScanningViewModel] transactionDidStateChange: Not for our transaction (\(self.keyVerificationRequest.requestId)): \(transaction.transactionId)") return } diff --git a/Riot/Modules/Room/Members/Detail/RoomMemberDetailsViewController.m b/Riot/Modules/Room/Members/Detail/RoomMemberDetailsViewController.m index eb1abd026..9057c3ad4 100644 --- a/Riot/Modules/Room/Members/Detail/RoomMemberDetailsViewController.m +++ b/Riot/Modules/Room/Members/Detail/RoomMemberDetailsViewController.m @@ -720,19 +720,15 @@ if (RiotSettings.shared.enableCrossSigning) { - switch (self.encryptionTrustLevel) { - case UserEncryptionTrustLevelUnknown: - securityActionsArray = @[@(MXKRoomMemberDetailsActionSecurityInformation)]; - break; - case UserEncryptionTrustLevelNone: - case UserEncryptionTrustLevelNormal: - case UserEncryptionTrustLevelTrusted: - case UserEncryptionTrustLevelWarning: - securityActionsArray = @[@(MXKRoomMemberDetailsActionSecurity), - @(MXKRoomMemberDetailsActionSecurityInformation)]; - break; - default: - break; + if (self.mxRoom.summary.isEncrypted) + { + securityActionsArray = @[@(MXKRoomMemberDetailsActionSecurity), + @(MXKRoomMemberDetailsActionSecurityInformation)]; + + } + else + { + securityActionsArray = @[@(MXKRoomMemberDetailsActionSecurity)]; } } diff --git a/Riot/Modules/Settings/Security/SecurityViewController.m b/Riot/Modules/Settings/Security/SecurityViewController.m index 8c175c21b..733740cc4 100644 --- a/Riot/Modules/Settings/Security/SecurityViewController.m +++ b/Riot/Modules/Settings/Security/SecurityViewController.m @@ -220,6 +220,8 @@ UIDocumentInteractionControllerDelegate> // Refresh devices in parallel [self loadDevices]; + + [self loadCrossSigning]; } - (void)viewWillDisappear:(BOOL)animated @@ -398,6 +400,20 @@ UIDocumentInteractionControllerDelegate> #pragma mark - Cross-signing +- (void)loadCrossSigning +{ + MXCrossSigning *crossSigning = self.mainSession.crypto.crossSigning; + + [crossSigning refreshStateWithSuccess:^(BOOL stateUpdated) { + if (stateUpdated) + { + [self reloadData]; + } + } failure:^(NSError * _Nonnull error) { + NSLog(@"[SecurityVC] loadCrossSigning: Cannot refresh cross-signing state. Error: %@", error); + }]; +} + - (NSInteger)numberOfRowsInCrossSigningSection { NSInteger numberOfRowsInCrossSigningSection; @@ -555,9 +571,24 @@ UIDocumentInteractionControllerDelegate> [buttonCell.mxkButton addTarget:self action:@selector(requestCrossSigningPrivateKeys:) forControlEvents:UIControlEventTouchUpInside]; } -- (void)requestCrossSigningPrivateKeys:(UITapGestureRecognizer *)recognizer +- (void)requestCrossSigningPrivateKeys:(id)recognizer { - [[AppDelegate theDelegate] showAlertWithTitle:@"Stay tuned!" message:@"USK & SSK gossiping is coming."]; + UIButton *button; + if ([recognizer isKindOfClass:UIButton.class]) + { + button = (UIButton*)recognizer; + } + button.enabled = NO; + + [self.mainSession.crypto.crossSigning requestPrivateKeysToDeviceIds:nil success:^{ + } onPrivateKeysReceived:^{ + button.enabled = YES; + [self loadCrossSigning]; + [self reloadData]; + } failure:^(NSError * _Nonnull error) { + NSLog(@"[SecurityVC] requestCrossSigningPrivateKeys: Cannot request cross-signing private keys. Error: %@", error); + button.enabled = YES; + }]; } - (void)displayComingSoon