From f66bf47771fbec4323230f23a92a94dcc0c67b3f Mon Sep 17 00:00:00 2001 From: Andy Uhnak Date: Tue, 30 Aug 2022 16:21:57 +0100 Subject: [PATCH 1/3] Add build flag for symmetric backup --- MatrixSDK/Crypto/KeyBackup/MXKeyBackup.m | 17 +++++++++++++---- MatrixSDK/MXSDKOptions.h | 7 +++++++ MatrixSDK/MXSDKOptions.m | 2 ++ MatrixSDKTests/MXAes256KeyBackupTests.m | 10 ++++++++++ 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/MatrixSDK/Crypto/KeyBackup/MXKeyBackup.m b/MatrixSDK/Crypto/KeyBackup/MXKeyBackup.m index 0206f7e3a0..e4cbb12f3d 100644 --- a/MatrixSDK/Crypto/KeyBackup/MXKeyBackup.m +++ b/MatrixSDK/Crypto/KeyBackup/MXKeyBackup.m @@ -75,10 +75,19 @@ @implementation MXKeyBackup + (void)initialize { - AlgorithmClassesByName = @{ - kMXCryptoCurve25519KeyBackupAlgorithm: MXCurve25519KeyBackupAlgorithm.class, - kMXCryptoAes256KeyBackupAlgorithm: MXAes256KeyBackupAlgorithm.class - }; + if (MXSDKOptions.sharedInstance.enableSymmetricBackup) + { + AlgorithmClassesByName = @{ + kMXCryptoCurve25519KeyBackupAlgorithm: MXCurve25519KeyBackupAlgorithm.class, + kMXCryptoAes256KeyBackupAlgorithm: MXAes256KeyBackupAlgorithm.class + }; + } + else + { + AlgorithmClassesByName = @{ + kMXCryptoCurve25519KeyBackupAlgorithm: MXCurve25519KeyBackupAlgorithm.class, + }; + } DefaultAlgorithmClass = MXCurve25519KeyBackupAlgorithm.class; } diff --git a/MatrixSDK/MXSDKOptions.h b/MatrixSDK/MXSDKOptions.h index 9de9ca59bb..6f7c1b8c4b 100644 --- a/MatrixSDK/MXSDKOptions.h +++ b/MatrixSDK/MXSDKOptions.h @@ -216,6 +216,13 @@ NS_ASSUME_NONNULL_BEGIN #endif +/** + Enable symmetric room key backups + + @remark NO by default + */ +@property (nonatomic) BOOL enableSymmetricBackup; + @end NS_ASSUME_NONNULL_END diff --git a/MatrixSDK/MXSDKOptions.m b/MatrixSDK/MXSDKOptions.m index 9526f33233..fd2a31b7ae 100644 --- a/MatrixSDK/MXSDKOptions.m +++ b/MatrixSDK/MXSDKOptions.m @@ -58,6 +58,8 @@ - (instancetype)init #if DEBUG _enableCryptoV2 = NO; #endif + + _enableSymmetricBackup = NO; } return self; diff --git a/MatrixSDKTests/MXAes256KeyBackupTests.m b/MatrixSDKTests/MXAes256KeyBackupTests.m index e37886848a..9ca670639a 100644 --- a/MatrixSDKTests/MXAes256KeyBackupTests.m +++ b/MatrixSDKTests/MXAes256KeyBackupTests.m @@ -29,6 +29,16 @@ @interface MXAes256KeyBackupTests : MXBaseKeyBackupTests @implementation MXAes256KeyBackupTests +- (void)setUp +{ + MXSDKOptions.sharedInstance.enableSymmetricBackup = YES; +} + +- (void)tearDown +{ + MXSDKOptions.sharedInstance.enableSymmetricBackup = NO; +} + - (NSString *)algorithm { return kMXCryptoAes256KeyBackupAlgorithm; From 22c8fae1369fc7ba61eeaee050d69dc97930fb16 Mon Sep 17 00:00:00 2001 From: Andy Uhnak Date: Tue, 30 Aug 2022 16:25:01 +0100 Subject: [PATCH 2/3] Remove event from tracking --- MatrixSDK/Crypto/MXCrypto.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MatrixSDK/Crypto/MXCrypto.m b/MatrixSDK/Crypto/MXCrypto.m index a75d1aebeb..ba89f07da3 100644 --- a/MatrixSDK/Crypto/MXCrypto.m +++ b/MatrixSDK/Crypto/MXCrypto.m @@ -664,9 +664,9 @@ - (MXEventDecryptionResult *)decryptEvent2:(MXEvent *)event inTimeline:(NSString NSDictionary *details = @{ @"event_id": event.eventId ?: @"unknown", @"error": result.error ?: @"unknown", - @"event": event.JSONDictionary ?: @"unknown" }; MXLogErrorDetails(@"[MXCrypto] decryptEvent", details); + MXLogDebug(@"[MXCrypto] decryptEvent: Unable to decrypt event %@", event.JSONDictionary); if ([result.error.domain isEqualToString:MXDecryptingErrorDomain] && result.error.code == MXDecryptingErrorBadEncryptedMessageCode) From 535267e6f8e76c34e0dfd1643162383215adb923 Mon Sep 17 00:00:00 2001 From: Andy Uhnak Date: Tue, 30 Aug 2022 16:27:23 +0100 Subject: [PATCH 3/3] Changelog --- changelog.d/pr-1567.change | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/pr-1567.change diff --git a/changelog.d/pr-1567.change b/changelog.d/pr-1567.change new file mode 100644 index 0000000000..6951694b22 --- /dev/null +++ b/changelog.d/pr-1567.change @@ -0,0 +1 @@ +KeyBackups: Add build flag for symmetric backup