Rework database snapshot representation, encryption, etc.

pull/1/head
Matthew Chen 7 years ago
parent 0c81d5656f
commit fed524ba16

@ -40,7 +40,7 @@
340FC8C7204DE64D007AEB0F /* OWSBackupAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8C6204DE64D007AEB0F /* OWSBackupAPI.swift */; }; 340FC8C7204DE64D007AEB0F /* OWSBackupAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8C6204DE64D007AEB0F /* OWSBackupAPI.swift */; };
340FC8CA20517B84007AEB0F /* OWSBackupImportJob.m in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8C820517B84007AEB0F /* OWSBackupImportJob.m */; }; 340FC8CA20517B84007AEB0F /* OWSBackupImportJob.m in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8C820517B84007AEB0F /* OWSBackupImportJob.m */; };
340FC8CD20518C77007AEB0F /* OWSBackupJob.m in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8CC20518C76007AEB0F /* OWSBackupJob.m */; }; 340FC8CD20518C77007AEB0F /* OWSBackupJob.m in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8CC20518C76007AEB0F /* OWSBackupJob.m */; };
340FC8D0205BF2FA007AEB0F /* OWSBackupEncryption.m in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8CE205BF2FA007AEB0F /* OWSBackupEncryption.m */; }; 340FC8D0205BF2FA007AEB0F /* OWSBackupIO.m in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8CE205BF2FA007AEB0F /* OWSBackupIO.m */; };
341F2C0F1F2B8AE700D07D6B /* DebugUIMisc.m in Sources */ = {isa = PBXBuildFile; fileRef = 341F2C0E1F2B8AE700D07D6B /* DebugUIMisc.m */; }; 341F2C0F1F2B8AE700D07D6B /* DebugUIMisc.m in Sources */ = {isa = PBXBuildFile; fileRef = 341F2C0E1F2B8AE700D07D6B /* DebugUIMisc.m */; };
3430FE181F7751D4000EC51B /* GiphyAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3430FE171F7751D4000EC51B /* GiphyAPI.swift */; }; 3430FE181F7751D4000EC51B /* GiphyAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3430FE171F7751D4000EC51B /* GiphyAPI.swift */; };
34330A5A1E7875FB00DF2FB9 /* fontawesome-webfont.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 34330A591E7875FB00DF2FB9 /* fontawesome-webfont.ttf */; }; 34330A5A1E7875FB00DF2FB9 /* fontawesome-webfont.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 34330A591E7875FB00DF2FB9 /* fontawesome-webfont.ttf */; };
@ -589,8 +589,8 @@
340FC8C920517B84007AEB0F /* OWSBackupImportJob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSBackupImportJob.h; sourceTree = "<group>"; }; 340FC8C920517B84007AEB0F /* OWSBackupImportJob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSBackupImportJob.h; sourceTree = "<group>"; };
340FC8CB20518C76007AEB0F /* OWSBackupJob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSBackupJob.h; sourceTree = "<group>"; }; 340FC8CB20518C76007AEB0F /* OWSBackupJob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSBackupJob.h; sourceTree = "<group>"; };
340FC8CC20518C76007AEB0F /* OWSBackupJob.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSBackupJob.m; sourceTree = "<group>"; }; 340FC8CC20518C76007AEB0F /* OWSBackupJob.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSBackupJob.m; sourceTree = "<group>"; };
340FC8CE205BF2FA007AEB0F /* OWSBackupEncryption.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSBackupEncryption.m; sourceTree = "<group>"; }; 340FC8CE205BF2FA007AEB0F /* OWSBackupIO.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSBackupIO.m; sourceTree = "<group>"; };
340FC8CF205BF2FA007AEB0F /* OWSBackupEncryption.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSBackupEncryption.h; sourceTree = "<group>"; }; 340FC8CF205BF2FA007AEB0F /* OWSBackupIO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSBackupIO.h; sourceTree = "<group>"; };
341458471FBE11C4005ABCF9 /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa; path = translations/fa.lproj/Localizable.strings; sourceTree = "<group>"; }; 341458471FBE11C4005ABCF9 /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa; path = translations/fa.lproj/Localizable.strings; sourceTree = "<group>"; };
341F2C0D1F2B8AE700D07D6B /* DebugUIMisc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugUIMisc.h; sourceTree = "<group>"; }; 341F2C0D1F2B8AE700D07D6B /* DebugUIMisc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugUIMisc.h; sourceTree = "<group>"; };
341F2C0E1F2B8AE700D07D6B /* DebugUIMisc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DebugUIMisc.m; sourceTree = "<group>"; }; 341F2C0E1F2B8AE700D07D6B /* DebugUIMisc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DebugUIMisc.m; sourceTree = "<group>"; };
@ -1958,8 +1958,8 @@
34A9105E1FFEB113000C4745 /* OWSBackup.h */, 34A9105E1FFEB113000C4745 /* OWSBackup.h */,
34A9105F1FFEB114000C4745 /* OWSBackup.m */, 34A9105F1FFEB114000C4745 /* OWSBackup.m */,
340FC8C6204DE64D007AEB0F /* OWSBackupAPI.swift */, 340FC8C6204DE64D007AEB0F /* OWSBackupAPI.swift */,
340FC8CF205BF2FA007AEB0F /* OWSBackupEncryption.h */, 340FC8CF205BF2FA007AEB0F /* OWSBackupIO.h */,
340FC8CE205BF2FA007AEB0F /* OWSBackupEncryption.m */, 340FC8CE205BF2FA007AEB0F /* OWSBackupIO.m */,
340FC8BE204DB7D1007AEB0F /* OWSBackupExportJob.h */, 340FC8BE204DB7D1007AEB0F /* OWSBackupExportJob.h */,
340FC8BF204DB7D2007AEB0F /* OWSBackupExportJob.m */, 340FC8BF204DB7D2007AEB0F /* OWSBackupExportJob.m */,
340FC8C920517B84007AEB0F /* OWSBackupImportJob.h */, 340FC8C920517B84007AEB0F /* OWSBackupImportJob.h */,
@ -3177,7 +3177,7 @@
34D1F0B71F87F8850066283D /* OWSGenericAttachmentView.m in Sources */, 34D1F0B71F87F8850066283D /* OWSGenericAttachmentView.m in Sources */,
34B3F8801E8DF1700035BE1A /* InviteFlow.swift in Sources */, 34B3F8801E8DF1700035BE1A /* InviteFlow.swift in Sources */,
457C87B82032645C008D52D6 /* DebugUINotifications.swift in Sources */, 457C87B82032645C008D52D6 /* DebugUINotifications.swift in Sources */,
340FC8D0205BF2FA007AEB0F /* OWSBackupEncryption.m in Sources */, 340FC8D0205BF2FA007AEB0F /* OWSBackupIO.m in Sources */,
458E38371D668EBF0094BD24 /* OWSDeviceProvisioningURLParser.m in Sources */, 458E38371D668EBF0094BD24 /* OWSDeviceProvisioningURLParser.m in Sources */,
4517642B1DE939FD00EDB8B9 /* ContactCell.swift in Sources */, 4517642B1DE939FD00EDB8B9 /* ContactCell.swift in Sources */,
340FC8AB204DAC8D007AEB0F /* DomainFrontingCountryViewController.m in Sources */, 340FC8AB204DAC8D007AEB0F /* DomainFrontingCountryViewController.m in Sources */,

@ -3,7 +3,7 @@
// //
#import "OWSBackupExportJob.h" #import "OWSBackupExportJob.h"
#import "OWSBackupEncryption.h" #import "OWSBackupIO.h"
#import "OWSDatabaseMigration.h" #import "OWSDatabaseMigration.h"
#import "OWSSignalServiceProtos.pb.h" #import "OWSSignalServiceProtos.pb.h"
#import "Signal-Swift.h" #import "Signal-Swift.h"
@ -65,7 +65,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface OWSDBExportStream : NSObject @interface OWSDBExportStream : NSObject
@property (nonatomic) OWSBackupEncryption *encryption; @property (nonatomic) OWSBackupIO *backupIO;
@property (nonatomic) NSMutableArray<OWSBackupExportItem *> *exportItems; @property (nonatomic) NSMutableArray<OWSBackupExportItem *> *exportItems;
@ -83,16 +83,16 @@ NS_ASSUME_NONNULL_BEGIN
@implementation OWSDBExportStream @implementation OWSDBExportStream
- (instancetype)initWithEncryption:(OWSBackupEncryption *)encryption - (instancetype)initWithBackupIO:(OWSBackupIO *)backupIO
{ {
if (!(self = [super init])) { if (!(self = [super init])) {
return self; return self;
} }
OWSAssert(encryption); OWSAssert(backupIO);
self.exportItems = [NSMutableArray new]; self.exportItems = [NSMutableArray new];
self.encryption = encryption; self.backupIO = backupIO;
return self; return self;
} }
@ -146,9 +146,9 @@ NS_ASSUME_NONNULL_BEGIN
return NO; return NO;
} }
NSData *compressedData = [self.encryption compressData:uncompressedData]; NSData *compressedData = [self.backupIO compressData:uncompressedData];
OWSBackupEncryptedItem *_Nullable encryptedItem = [self.encryption encryptDataAsTempFile:compressedData]; OWSBackupEncryptedItem *_Nullable encryptedItem = [self.backupIO encryptDataAsTempFile:compressedData];
if (!encryptedItem) { if (!encryptedItem) {
OWSProdLogAndFail(@"%@ couldn't encrypt database snapshot.", self.logTag); OWSProdLogAndFail(@"%@ couldn't encrypt database snapshot.", self.logTag);
return NO; return NO;
@ -167,7 +167,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface OWSAttachmentExport : NSObject @interface OWSAttachmentExport : NSObject
@property (nonatomic) OWSBackupEncryption *encryption; @property (nonatomic) OWSBackupIO *backupIO;
@property (nonatomic) NSString *attachmentId; @property (nonatomic) NSString *attachmentId;
@property (nonatomic) NSString *attachmentFilePath; @property (nonatomic) NSString *attachmentFilePath;
@property (nonatomic, nullable) NSString *relativeFilePath; @property (nonatomic, nullable) NSString *relativeFilePath;
@ -181,19 +181,19 @@ NS_ASSUME_NONNULL_BEGIN
@implementation OWSAttachmentExport @implementation OWSAttachmentExport
- (instancetype)initWithEncryption:(OWSBackupEncryption *)encryption - (instancetype)initWithBackupIO:(OWSBackupIO *)backupIO
attachmentId:(NSString *)attachmentId attachmentId:(NSString *)attachmentId
attachmentFilePath:(NSString *)attachmentFilePath attachmentFilePath:(NSString *)attachmentFilePath
{ {
if (!(self = [super init])) { if (!(self = [super init])) {
return self; return self;
} }
OWSAssert(encryption); OWSAssert(backupIO);
OWSAssert(attachmentId.length > 0); OWSAssert(attachmentId.length > 0);
OWSAssert(attachmentFilePath.length > 0); OWSAssert(attachmentFilePath.length > 0);
self.encryption = encryption; self.backupIO = backupIO;
self.attachmentId = attachmentId; self.attachmentId = attachmentId;
self.attachmentFilePath = attachmentFilePath; self.attachmentFilePath = attachmentFilePath;
@ -225,7 +225,7 @@ NS_ASSUME_NONNULL_BEGIN
} }
self.relativeFilePath = relativeFilePath; self.relativeFilePath = relativeFilePath;
OWSBackupEncryptedItem *_Nullable encryptedItem = [self.encryption encryptFileAsTempFile:self.attachmentFilePath]; OWSBackupEncryptedItem *_Nullable encryptedItem = [self.backupIO encryptFileAsTempFile:self.attachmentFilePath];
if (!encryptedItem) { if (!encryptedItem) {
DDLogError(@"%@ attachment could not be encrypted.", self.logTag); DDLogError(@"%@ attachment could not be encrypted.", self.logTag);
OWSFail(@"%@ attachment could not be encrypted: %@", self.logTag, self.attachmentFilePath); OWSFail(@"%@ attachment could not be encrypted: %@", self.logTag, self.attachmentFilePath);
@ -243,7 +243,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, nullable) OWSBackgroundTask *backgroundTask; @property (nonatomic, nullable) OWSBackgroundTask *backgroundTask;
@property (nonatomic) OWSBackupEncryption *encryption; @property (nonatomic) OWSBackupIO *backupIO;
@property (nonatomic) NSMutableArray<OWSBackupExportItem *> *unsavedDatabaseItems; @property (nonatomic) NSMutableArray<OWSBackupExportItem *> *unsavedDatabaseItems;
@ -338,7 +338,7 @@ NS_ASSUME_NONNULL_BEGIN
return completion(NO); return completion(NO);
} }
self.encryption = [[OWSBackupEncryption alloc] initWithJobTempDirPath:self.jobTempDirPath]; self.backupIO = [[OWSBackupIO alloc] initWithJobTempDirPath:self.jobTempDirPath];
// We need to verify that we have a valid account. // We need to verify that we have a valid account.
// Otherwise, if we re-register on another device, we // Otherwise, if we re-register on another device, we
@ -365,7 +365,7 @@ NS_ASSUME_NONNULL_BEGIN
- (BOOL)exportDatabase - (BOOL)exportDatabase
{ {
OWSAssert(self.encryption); OWSAssert(self.backupIO);
DDLogVerbose(@"%@ %s", self.logTag, __PRETTY_FUNCTION__); DDLogVerbose(@"%@ %s", self.logTag, __PRETTY_FUNCTION__);
@ -379,7 +379,7 @@ NS_ASSUME_NONNULL_BEGIN
return NO; return NO;
} }
OWSDBExportStream *exportStream = [[OWSDBExportStream alloc] initWithEncryption:self.encryption]; OWSDBExportStream *exportStream = [[OWSDBExportStream alloc] initWithBackupIO:self.backupIO];
__block BOOL aborted = NO; __block BOOL aborted = NO;
typedef BOOL (^EntityFilter)(id object); typedef BOOL (^EntityFilter)(id object);
@ -453,9 +453,9 @@ NS_ASSUME_NONNULL_BEGIN
// OWSAttachmentExport is used to lazily write an encrypted copy of the // OWSAttachmentExport is used to lazily write an encrypted copy of the
// attachment to disk. // attachment to disk.
OWSAttachmentExport *attachmentExport = OWSAttachmentExport *attachmentExport =
[[OWSAttachmentExport alloc] initWithEncryption:self.encryption [[OWSAttachmentExport alloc] initWithBackupIO:self.backupIO
attachmentId:attachmentStream.uniqueId attachmentId:attachmentStream.uniqueId
attachmentFilePath:filePath]; attachmentFilePath:filePath];
[self.unsavedAttachmentExports addObject:attachmentExport]; [self.unsavedAttachmentExports addObject:attachmentExport];
return YES; return YES;
@ -727,7 +727,7 @@ NS_ASSUME_NONNULL_BEGIN
OWSAssert(self.savedDatabaseItems.count > 0); OWSAssert(self.savedDatabaseItems.count > 0);
OWSAssert(self.savedAttachmentItems); OWSAssert(self.savedAttachmentItems);
OWSAssert(self.jobTempDirPath.length > 0); OWSAssert(self.jobTempDirPath.length > 0);
OWSAssert(self.encryption); OWSAssert(self.backupIO);
NSDictionary *json = @{ NSDictionary *json = @{
kOWSBackup_ManifestKey_DatabaseFiles : [self jsonForItems:self.savedDatabaseItems], kOWSBackup_ManifestKey_DatabaseFiles : [self jsonForItems:self.savedDatabaseItems],
@ -743,7 +743,7 @@ NS_ASSUME_NONNULL_BEGIN
OWSProdLogAndFail(@"%@ error encoding manifest file: %@", self.logTag, error); OWSProdLogAndFail(@"%@ error encoding manifest file: %@", self.logTag, error);
return nil; return nil;
} }
return [self.encryption encryptDataAsTempFile:jsonData encryptionKey:self.delegate.backupEncryptionKey]; return [self.backupIO encryptDataAsTempFile:jsonData encryptionKey:self.delegate.backupEncryptionKey];
} }
- (NSArray<NSDictionary<NSString *, id> *> *)jsonForItems:(NSArray<OWSBackupExportItem *> *)items - (NSArray<NSDictionary<NSString *, id> *> *)jsonForItems:(NSArray<OWSBackupExportItem *> *)items

@ -14,7 +14,7 @@ NS_ASSUME_NONNULL_BEGIN
#pragma mark - #pragma mark -
@interface OWSBackupEncryption : NSObject @interface OWSBackupIO : NSObject
- (instancetype)init NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;

@ -2,7 +2,7 @@
// Copyright (c) 2018 Open Whisper Systems. All rights reserved. // Copyright (c) 2018 Open Whisper Systems. All rights reserved.
// //
#import "OWSBackupEncryption.h" #import "OWSBackupIO.h"
#import <Curve25519Kit/Randomness.h> #import <Curve25519Kit/Randomness.h>
#import <SignalServiceKit/OWSFileSystem.h> #import <SignalServiceKit/OWSFileSystem.h>
@ -19,7 +19,7 @@ static const NSUInteger kOWSBackupKeyLength = 32;
#pragma mark - #pragma mark -
@interface OWSBackupEncryption () @interface OWSBackupIO ()
@property (nonatomic) NSString *jobTempDirPath; @property (nonatomic) NSString *jobTempDirPath;
@ -27,7 +27,7 @@ static const NSUInteger kOWSBackupKeyLength = 32;
#pragma mark - #pragma mark -
@implementation OWSBackupEncryption @implementation OWSBackupIO
- (instancetype)initWithJobTempDirPath:(NSString *)jobTempDirPath - (instancetype)initWithJobTempDirPath:(NSString *)jobTempDirPath
{ {

@ -3,7 +3,7 @@
// //
#import "OWSBackupImportJob.h" #import "OWSBackupImportJob.h"
#import "OWSBackupEncryption.h" #import "OWSBackupIO.h"
#import "OWSDatabaseMigration.h" #import "OWSDatabaseMigration.h"
#import "OWSDatabaseMigrationRunner.h" #import "OWSDatabaseMigrationRunner.h"
#import "Signal-Swift.h" #import "Signal-Swift.h"
@ -46,7 +46,7 @@ NSString *const kOWSBackup_ImportDatabaseKeySpec = @"kOWSBackup_ImportDatabaseKe
@property (nonatomic, nullable) OWSBackgroundTask *backgroundTask; @property (nonatomic, nullable) OWSBackgroundTask *backgroundTask;
@property (nonatomic) OWSBackupEncryption *encryption; @property (nonatomic) OWSBackupIO *backupIO;
@property (nonatomic) NSArray<OWSBackupImportItem *> *databaseItems; @property (nonatomic) NSArray<OWSBackupImportItem *> *databaseItems;
@property (nonatomic) NSArray<OWSBackupImportItem *> *attachmentsItems; @property (nonatomic) NSArray<OWSBackupImportItem *> *attachmentsItems;
@ -173,7 +173,7 @@ NSString *const kOWSBackup_ImportDatabaseKeySpec = @"kOWSBackup_ImportDatabaseKe
return NO; return NO;
} }
self.encryption = [[OWSBackupEncryption alloc] initWithJobTempDirPath:self.jobTempDirPath]; self.backupIO = [[OWSBackupIO alloc] initWithJobTempDirPath:self.jobTempDirPath];
return YES; return YES;
} }
@ -209,7 +209,7 @@ NSString *const kOWSBackup_ImportDatabaseKeySpec = @"kOWSBackup_ImportDatabaseKe
- (void)processManifest:(NSData *)manifestDataEncrypted completion:(OWSBackupJobBoolCompletion)completion - (void)processManifest:(NSData *)manifestDataEncrypted completion:(OWSBackupJobBoolCompletion)completion
{ {
OWSAssert(completion); OWSAssert(completion);
OWSAssert(self.encryption); OWSAssert(self.backupIO);
if (self.isComplete) { if (self.isComplete) {
return; return;
@ -218,7 +218,7 @@ NSString *const kOWSBackup_ImportDatabaseKeySpec = @"kOWSBackup_ImportDatabaseKe
DDLogVerbose(@"%@ %s", self.logTag, __PRETTY_FUNCTION__); DDLogVerbose(@"%@ %s", self.logTag, __PRETTY_FUNCTION__);
NSData *_Nullable manifestDataDecrypted = NSData *_Nullable manifestDataDecrypted =
[self.encryption decryptDataAsData:manifestDataEncrypted encryptionKey:self.delegate.backupEncryptionKey]; [self.backupIO decryptDataAsData:manifestDataEncrypted encryptionKey:self.delegate.backupEncryptionKey];
if (!manifestDataDecrypted) { if (!manifestDataDecrypted) {
OWSProdLogAndFail(@"%@ Could not decrypt manifest.", self.logTag); OWSProdLogAndFail(@"%@ Could not decrypt manifest.", self.logTag);
return completion(NO); return completion(NO);
@ -408,9 +408,9 @@ NSString *const kOWSBackup_ImportDatabaseKeySpec = @"kOWSBackup_ImportDatabaseKe
DDLogError(@"%@ skipping redundant file restore: %@.", self.logTag, dstFilePath); DDLogError(@"%@ skipping redundant file restore: %@.", self.logTag, dstFilePath);
continue; continue;
} }
if (![self.encryption decryptFileAsFile:item.downloadFilePath if (![self.backupIO decryptFileAsFile:item.downloadFilePath
dstFilePath:dstFilePath dstFilePath:dstFilePath
encryptionKey:item.encryptionKey]) { encryptionKey:item.encryptionKey]) {
DDLogError(@"%@ attachment could not be restored.", self.logTag); DDLogError(@"%@ attachment could not be restored.", self.logTag);
// Attachment-related errors are recoverable and can be ignored. // Attachment-related errors are recoverable and can be ignored.
continue; continue;
@ -498,15 +498,15 @@ NSString *const kOWSBackup_ImportDatabaseKeySpec = @"kOWSBackup_ImportDatabaseKe
progress:@(count / (CGFloat)self.databaseItems.count)]; progress:@(count / (CGFloat)self.databaseItems.count)];
NSData *_Nullable compressedData = NSData *_Nullable compressedData =
[self.encryption decryptFileAsData:item.downloadFilePath encryptionKey:item.encryptionKey]; [self.backupIO decryptFileAsData:item.downloadFilePath encryptionKey:item.encryptionKey];
if (!compressedData) { if (!compressedData) {
// Database-related errors are unrecoverable. // Database-related errors are unrecoverable.
aborted = YES; aborted = YES;
return completion(NO); return completion(NO);
} }
NSData *_Nullable uncompressedData = NSData *_Nullable uncompressedData =
[self.encryption decompressData:compressedData [self.backupIO decompressData:compressedData
uncompressedDataLength:item.uncompressedDataLength.unsignedIntValue]; uncompressedDataLength:item.uncompressedDataLength.unsignedIntValue];
if (!uncompressedData) { if (!uncompressedData) {
// Database-related errors are unrecoverable. // Database-related errors are unrecoverable.
aborted = YES; aborted = YES;

@ -3,7 +3,6 @@
// //
#import "OWSBackupJob.h" #import "OWSBackupJob.h"
#import "OWSBackupEncryption.h"
#import "Signal-Swift.h" #import "Signal-Swift.h"
#import <Curve25519Kit/Randomness.h> #import <Curve25519Kit/Randomness.h>
#import <SAMKeychain/SAMKeychain.h> #import <SAMKeychain/SAMKeychain.h>

Loading…
Cancel
Save