Rework database snapshot representation, encryption, etc.
This commit is contained in:
parent
1bbd41f725
commit
ca7c75a081
|
@ -40,6 +40,7 @@
|
|||
340FC8C7204DE64D007AEB0F /* OWSBackupAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8C6204DE64D007AEB0F /* OWSBackupAPI.swift */; };
|
||||
340FC8CA20517B84007AEB0F /* OWSBackupImportJob.m in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8C820517B84007AEB0F /* OWSBackupImportJob.m */; };
|
||||
340FC8CD20518C77007AEB0F /* OWSBackupJob.m in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8CC20518C76007AEB0F /* OWSBackupJob.m */; };
|
||||
340FC8D0205BF2FA007AEB0F /* OWSBackupEncryption.m in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8CE205BF2FA007AEB0F /* OWSBackupEncryption.m */; };
|
||||
341F2C0F1F2B8AE700D07D6B /* DebugUIMisc.m in Sources */ = {isa = PBXBuildFile; fileRef = 341F2C0E1F2B8AE700D07D6B /* DebugUIMisc.m */; };
|
||||
3430FE181F7751D4000EC51B /* GiphyAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3430FE171F7751D4000EC51B /* GiphyAPI.swift */; };
|
||||
34330A5A1E7875FB00DF2FB9 /* fontawesome-webfont.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 34330A591E7875FB00DF2FB9 /* fontawesome-webfont.ttf */; };
|
||||
|
@ -588,6 +589,8 @@
|
|||
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>"; };
|
||||
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>"; };
|
||||
340FC8CF205BF2FA007AEB0F /* OWSBackupEncryption.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSBackupEncryption.h; 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>"; };
|
||||
341F2C0E1F2B8AE700D07D6B /* DebugUIMisc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DebugUIMisc.m; sourceTree = "<group>"; };
|
||||
|
@ -1955,6 +1958,8 @@
|
|||
34A9105E1FFEB113000C4745 /* OWSBackup.h */,
|
||||
34A9105F1FFEB114000C4745 /* OWSBackup.m */,
|
||||
340FC8C6204DE64D007AEB0F /* OWSBackupAPI.swift */,
|
||||
340FC8CF205BF2FA007AEB0F /* OWSBackupEncryption.h */,
|
||||
340FC8CE205BF2FA007AEB0F /* OWSBackupEncryption.m */,
|
||||
340FC8BE204DB7D1007AEB0F /* OWSBackupExportJob.h */,
|
||||
340FC8BF204DB7D2007AEB0F /* OWSBackupExportJob.m */,
|
||||
340FC8C920517B84007AEB0F /* OWSBackupImportJob.h */,
|
||||
|
@ -3172,6 +3177,7 @@
|
|||
34D1F0B71F87F8850066283D /* OWSGenericAttachmentView.m in Sources */,
|
||||
34B3F8801E8DF1700035BE1A /* InviteFlow.swift in Sources */,
|
||||
457C87B82032645C008D52D6 /* DebugUINotifications.swift in Sources */,
|
||||
340FC8D0205BF2FA007AEB0F /* OWSBackupEncryption.m in Sources */,
|
||||
458E38371D668EBF0094BD24 /* OWSDeviceProvisioningURLParser.m in Sources */,
|
||||
4517642B1DE939FD00EDB8B9 /* ContactCell.swift in Sources */,
|
||||
340FC8AB204DAC8D007AEB0F /* DomainFrontingCountryViewController.m in Sources */,
|
||||
|
|
|
@ -13,7 +13,6 @@ NSString *const NSNotificationNameBackupStateDidChange = @"NSNotificationNameBac
|
|||
|
||||
NSString *const OWSPrimaryStorage_OWSBackupCollection = @"OWSPrimaryStorage_OWSBackupCollection";
|
||||
NSString *const OWSBackup_IsBackupEnabledKey = @"OWSBackup_IsBackupEnabledKey";
|
||||
NSString *const OWSBackup_BackupKeyKey = @"OWSBackup_BackupKeyKey";
|
||||
NSString *const OWSBackup_LastExportSuccessDateKey = @"OWSBackup_LastExportSuccessDateKey";
|
||||
NSString *const OWSBackup_LastExportFailureDateKey = @"OWSBackup_LastExportFailureDateKey";
|
||||
|
||||
|
@ -107,31 +106,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
});
|
||||
}
|
||||
|
||||
- (void)setBackupPrivateKey:(NSData *)value
|
||||
{
|
||||
OWSAssert(value);
|
||||
|
||||
// TODO: Use actual key.
|
||||
[self.dbConnection setObject:value
|
||||
forKey:OWSBackup_BackupKeyKey
|
||||
inCollection:OWSPrimaryStorage_OWSBackupCollection];
|
||||
}
|
||||
|
||||
- (nullable NSData *)backupPrivateKey
|
||||
{
|
||||
NSData *_Nullable result =
|
||||
[self.dbConnection objectForKey:OWSBackup_BackupKeyKey inCollection:OWSPrimaryStorage_OWSBackupCollection];
|
||||
if (!result) {
|
||||
// TODO: Use actual key.
|
||||
const NSUInteger kBackupPrivateKeyLength = 32;
|
||||
result = [Randomness generateRandomBytes:kBackupPrivateKeyLength];
|
||||
[self setBackupPrivateKey:result];
|
||||
}
|
||||
OWSAssert(result);
|
||||
OWSAssert([result isKindOfClass:[NSData class]]);
|
||||
return result;
|
||||
}
|
||||
|
||||
#pragma mark - Backup Export
|
||||
|
||||
- (void)tryToExportBackup
|
||||
|
@ -383,9 +357,10 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
#pragma mark - OWSBackupJobDelegate
|
||||
|
||||
// We use a delegate method to avoid storing this key in memory.
|
||||
- (nullable NSData *)backupKey
|
||||
- (nullable NSData *)backupEncryptionKey
|
||||
{
|
||||
return self.backupPrivateKey;
|
||||
// TODO: Use actual encryption key.
|
||||
return [@"temp" dataUsingEncoding:NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
- (void)backupJobDidSucceed:(OWSBackupJob *)backupJob
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface OWSBackupEncryptedItem : NSObject
|
||||
|
||||
@property (nonatomic) NSString *filePath;
|
||||
|
||||
@property (nonatomic) NSData *encryptionKey;
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@interface OWSBackupEncryption : NSObject
|
||||
|
||||
- (instancetype)init NS_UNAVAILABLE;
|
||||
|
||||
- (instancetype)initWithJobTempDirPath:(NSString *)jobTempDirPath;
|
||||
|
||||
#pragma mark - Encrypt
|
||||
|
||||
- (nullable OWSBackupEncryptedItem *)encryptFileAsTempFile:(NSString *)srcFilePath;
|
||||
|
||||
- (nullable OWSBackupEncryptedItem *)encryptFileAsTempFile:(NSString *)srcFilePath
|
||||
encryptionKey:(NSData *)encryptionKey;
|
||||
|
||||
- (nullable OWSBackupEncryptedItem *)encryptDataAsTempFile:(NSData *)srcData;
|
||||
|
||||
- (nullable OWSBackupEncryptedItem *)encryptDataAsTempFile:(NSData *)srcData encryptionKey:(NSData *)encryptionKey;
|
||||
|
||||
#pragma mark - Decrypt
|
||||
|
||||
- (nullable NSString *)decryptFileAsTempFile:(NSString *)srcFilePath encryptionKey:(NSData *)encryptionKey;
|
||||
|
||||
- (nullable NSData *)decryptDataAsData:(NSData *)srcData encryptionKey:(NSData *)encryptionKey;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
|
@ -0,0 +1,139 @@
|
|||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import "OWSBackupEncryption.h"
|
||||
#import <Curve25519Kit/Randomness.h>
|
||||
#import <SignalServiceKit/OWSFileSystem.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
// TODO:
|
||||
static const NSUInteger kOWSBackupKeyLength = 32;
|
||||
|
||||
@implementation OWSBackupEncryptedItem
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@interface OWSBackupEncryption ()
|
||||
|
||||
@property (nonatomic) NSString *jobTempDirPath;
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@implementation OWSBackupEncryption
|
||||
|
||||
- (instancetype)initWithJobTempDirPath:(NSString *)jobTempDirPath
|
||||
{
|
||||
if (!(self = [super init])) {
|
||||
return self;
|
||||
}
|
||||
|
||||
self.jobTempDirPath = jobTempDirPath;
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Encrypt
|
||||
|
||||
- (nullable OWSBackupEncryptedItem *)encryptFileAsTempFile:(NSString *)srcFilePath
|
||||
{
|
||||
OWSAssert(srcFilePath.length > 0);
|
||||
|
||||
NSData *encryptionKey = [Randomness generateRandomBytes:(int)kOWSBackupKeyLength];
|
||||
|
||||
return [self encryptFileAsTempFile:srcFilePath encryptionKey:encryptionKey];
|
||||
}
|
||||
|
||||
- (nullable OWSBackupEncryptedItem *)encryptFileAsTempFile:(NSString *)srcFilePath encryptionKey:(NSData *)encryptionKey
|
||||
{
|
||||
OWSAssert(srcFilePath.length > 0);
|
||||
OWSAssert(encryptionKey.length > 0);
|
||||
|
||||
// TODO: Encrypt the file without loading it into memory.
|
||||
NSData *_Nullable srcData = [NSData dataWithContentsOfFile:srcFilePath];
|
||||
if (!srcData) {
|
||||
OWSProdLogAndFail(@"%@ could not load file into memory", self.logTag);
|
||||
return nil;
|
||||
}
|
||||
return [self encryptDataAsTempFile:srcData encryptionKey:encryptionKey];
|
||||
}
|
||||
|
||||
- (nullable OWSBackupEncryptedItem *)encryptDataAsTempFile:(NSData *)srcData
|
||||
{
|
||||
OWSAssert(srcData);
|
||||
|
||||
NSData *encryptionKey = [Randomness generateRandomBytes:(int)kOWSBackupKeyLength];
|
||||
|
||||
return [self encryptDataAsTempFile:srcData encryptionKey:encryptionKey];
|
||||
}
|
||||
|
||||
- (nullable OWSBackupEncryptedItem *)encryptDataAsTempFile:(NSData *)srcData encryptionKey:(NSData *)encryptionKey
|
||||
{
|
||||
OWSAssert(srcData);
|
||||
OWSAssert(encryptionKey.length > 0);
|
||||
|
||||
// TODO: Encrypt the data using key;
|
||||
|
||||
NSString *dstFilePath = [self.jobTempDirPath stringByAppendingPathComponent:[NSUUID UUID].UUIDString];
|
||||
NSError *error;
|
||||
BOOL success = [srcData writeToFile:dstFilePath options:NSDataWritingAtomic error:&error];
|
||||
if (!success || error) {
|
||||
OWSProdLogAndFail(@"%@ error writing encrypted data: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
[OWSFileSystem protectFileOrFolderAtPath:dstFilePath];
|
||||
OWSBackupEncryptedItem *item = [OWSBackupEncryptedItem new];
|
||||
item.filePath = dstFilePath;
|
||||
item.encryptionKey = encryptionKey;
|
||||
return item;
|
||||
}
|
||||
|
||||
#pragma mark - Decrypt
|
||||
|
||||
- (nullable NSString *)decryptFileAsTempFile:(NSString *)srcFilePath encryptionKey:(NSData *)encryptionKey
|
||||
{
|
||||
OWSAssert(srcFilePath.length > 0);
|
||||
OWSAssert(encryptionKey.length > 0);
|
||||
|
||||
// TODO: Decrypt the file without loading it into memory.
|
||||
NSData *_Nullable srcData = [NSData dataWithContentsOfFile:srcFilePath];
|
||||
if (!srcData) {
|
||||
OWSProdLogAndFail(@"%@ could not load file into memory", self.logTag);
|
||||
return nil;
|
||||
}
|
||||
|
||||
NSData *_Nullable dstData = [self decryptDataAsData:srcData encryptionKey:encryptionKey];
|
||||
if (!dstData) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
NSString *dstFilePath = [self.jobTempDirPath stringByAppendingPathComponent:[NSUUID UUID].UUIDString];
|
||||
NSError *error;
|
||||
BOOL success = [dstData writeToFile:dstFilePath options:NSDataWritingAtomic error:&error];
|
||||
if (!success || error) {
|
||||
OWSProdLogAndFail(@"%@ error writing decrypted data: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
[OWSFileSystem protectFileOrFolderAtPath:dstFilePath];
|
||||
|
||||
return dstFilePath;
|
||||
}
|
||||
|
||||
- (nullable NSData *)decryptDataAsData:(NSData *)srcData encryptionKey:(NSData *)encryptionKey
|
||||
{
|
||||
OWSAssert(srcData);
|
||||
OWSAssert(encryptionKey.length > 0);
|
||||
|
||||
// TODO: Decrypt the data using key;
|
||||
|
||||
return srcData;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
File diff suppressed because it is too large
Load Diff
|
@ -3,6 +3,7 @@
|
|||
//
|
||||
|
||||
#import "OWSBackupImportJob.h"
|
||||
#import "OWSBackupEncryption.h"
|
||||
#import "OWSDatabaseMigration.h"
|
||||
#import "OWSDatabaseMigrationRunner.h"
|
||||
#import "Signal-Swift.h"
|
||||
|
|
|
@ -6,10 +6,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
extern NSString *const kOWSBackup_ManifestKey_DatabaseFiles;
|
||||
extern NSString *const kOWSBackup_ManifestKey_AttachmentFiles;
|
||||
extern NSString *const kOWSBackup_ManifestKey_DatabaseKeySpec;
|
||||
|
||||
extern NSString *const kOWSBackup_Snapshot_Collection;
|
||||
extern NSString *const kOWSBackup_Snapshot_ValidKey;
|
||||
extern NSString *const kOWSBackup_ManifestKey_RecordName;
|
||||
extern NSString *const kOWSBackup_ManifestKey_EncryptionKey;
|
||||
extern NSString *const kOWSBackup_ManifestKey_RelativeFilePath;
|
||||
|
||||
typedef void (^OWSBackupJobBoolCompletion)(BOOL success);
|
||||
typedef void (^OWSBackupJobCompletion)(NSError *_Nullable error);
|
||||
|
@ -18,8 +17,7 @@ typedef void (^OWSBackupJobCompletion)(NSError *_Nullable error);
|
|||
|
||||
@protocol OWSBackupJobDelegate <NSObject>
|
||||
|
||||
// TODO: Use actual key.
|
||||
- (nullable NSData *)backupKey;
|
||||
- (nullable NSData *)backupEncryptionKey;
|
||||
|
||||
// Either backupJobDidSucceed:... or backupJobDidFail:... will
|
||||
// be called exactly once on the main thread UNLESS:
|
||||
|
@ -64,23 +62,12 @@ typedef void (^OWSBackupJobCompletion)(NSError *_Nullable error);
|
|||
- (void)failWithError:(NSError *)error;
|
||||
- (void)updateProgressWithDescription:(nullable NSString *)description progress:(nullable NSNumber *)progress;
|
||||
|
||||
|
||||
#pragma mark - Database KeySpec
|
||||
|
||||
+ (nullable NSData *)loadDatabaseKeySpecWithKeychainKey:(NSString *)keychainKey;
|
||||
+ (BOOL)storeDatabaseKeySpec:(NSData *)data keychainKey:(NSString *)keychainKey;
|
||||
+ (BOOL)generateRandomDatabaseKeySpecWithKeychainKey:(NSString *)keychainKey;
|
||||
|
||||
#pragma mark - Encryption
|
||||
|
||||
+ (nullable NSString *)encryptFileAsTempFile:(NSString *)srcFilePath
|
||||
jobTempDirPath:(NSString *)jobTempDirPath
|
||||
delegate:(id<OWSBackupJobDelegate>)delegate;
|
||||
|
||||
+ (nullable NSString *)encryptDataAsTempFile:(NSData *)data
|
||||
jobTempDirPath:(NSString *)jobTempDirPath
|
||||
delegate:(id<OWSBackupJobDelegate>)delegate;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
//
|
||||
|
||||
#import "OWSBackupJob.h"
|
||||
#import "OWSBackupEncryption.h"
|
||||
#import "Signal-Swift.h"
|
||||
#import <Curve25519Kit/Randomness.h>
|
||||
#import <SAMKeychain/SAMKeychain.h>
|
||||
|
@ -12,13 +13,12 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
NSString *const kOWSBackup_ManifestKey_DatabaseFiles = @"database_files";
|
||||
NSString *const kOWSBackup_ManifestKey_AttachmentFiles = @"attachment_files";
|
||||
NSString *const kOWSBackup_ManifestKey_DatabaseKeySpec = @"database_key_spec";
|
||||
NSString *const kOWSBackup_ManifestKey_RecordName = @"record_name";
|
||||
NSString *const kOWSBackup_ManifestKey_EncryptionKey = @"encryption_key";
|
||||
NSString *const kOWSBackup_ManifestKey_RelativeFilePath = @"relative_file_path";
|
||||
|
||||
NSString *const kOWSBackup_KeychainService = @"kOWSBackup_KeychainService";
|
||||
|
||||
NSString *const kOWSBackup_Snapshot_Collection = @"kOWSBackup_Snapshot_Collection";
|
||||
NSString *const kOWSBackup_Snapshot_ValidKey = @"kOWSBackup_Snapshot_ValidKey";
|
||||
|
||||
@interface OWSBackupJob ()
|
||||
|
||||
@property (nonatomic, weak) id<OWSBackupJobDelegate> delegate;
|
||||
|
@ -191,55 +191,6 @@ NSString *const kOWSBackup_Snapshot_ValidKey = @"kOWSBackup_Snapshot_ValidKey";
|
|||
return [self storeDatabaseKeySpec:databaseKeySpec keychainKey:keychainKey];
|
||||
}
|
||||
|
||||
#pragma mark - Encryption
|
||||
|
||||
+ (nullable NSString *)encryptFileAsTempFile:(NSString *)srcFilePath
|
||||
jobTempDirPath:(NSString *)jobTempDirPath
|
||||
delegate:(id<OWSBackupJobDelegate>)delegate
|
||||
{
|
||||
OWSAssert(srcFilePath.length > 0);
|
||||
OWSAssert(jobTempDirPath.length > 0);
|
||||
OWSAssert(delegate);
|
||||
|
||||
// TODO: Encrypt the file using self.delegate.backupKey;
|
||||
NSData *_Nullable backupKey = [delegate backupKey];
|
||||
OWSAssert(backupKey);
|
||||
|
||||
NSString *dstFilePath = [jobTempDirPath stringByAppendingPathComponent:[NSUUID UUID].UUIDString];
|
||||
NSFileManager *fileManager = [NSFileManager defaultManager];
|
||||
NSError *error;
|
||||
BOOL success = [fileManager copyItemAtPath:srcFilePath toPath:dstFilePath error:&error];
|
||||
if (!success || error) {
|
||||
OWSProdLogAndFail(@"%@ error writing encrypted file: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
[OWSFileSystem protectFileOrFolderAtPath:dstFilePath];
|
||||
return dstFilePath;
|
||||
}
|
||||
|
||||
+ (nullable NSString *)encryptDataAsTempFile:(NSData *)data
|
||||
jobTempDirPath:(NSString *)jobTempDirPath
|
||||
delegate:(id<OWSBackupJobDelegate>)delegate
|
||||
{
|
||||
OWSAssert(data);
|
||||
OWSAssert(jobTempDirPath.length > 0);
|
||||
OWSAssert(delegate);
|
||||
|
||||
// TODO: Encrypt the file using self.delegate.backupKey;
|
||||
NSData *_Nullable backupKey = [delegate backupKey];
|
||||
OWSAssert(backupKey);
|
||||
|
||||
NSString *dstFilePath = [jobTempDirPath stringByAppendingPathComponent:[NSUUID UUID].UUIDString];
|
||||
NSError *error;
|
||||
BOOL success = [data writeToFile:dstFilePath options:NSDataWritingAtomic error:&error];
|
||||
if (!success || error) {
|
||||
OWSProdLogAndFail(@"%@ error writing encrypted file: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
[OWSFileSystem protectFileOrFolderAtPath:dstFilePath];
|
||||
return dstFilePath;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
|
@ -238,3 +238,21 @@ message GroupDetails {
|
|||
optional bool active = 5 [default = true];
|
||||
optional uint32 expireTimer = 6;
|
||||
}
|
||||
|
||||
message BackupSnapshot
|
||||
{
|
||||
message BackupEntity
|
||||
{
|
||||
enum Type {
|
||||
UNKNOWN = 0;
|
||||
MIGRATION = 1;
|
||||
THREAD = 2;
|
||||
INTERACTION = 3;
|
||||
ATTACHMENT = 4;
|
||||
}
|
||||
optional Type type = 1;
|
||||
optional bytes data = 2;
|
||||
}
|
||||
|
||||
repeated BackupEntity entity = 1;
|
||||
}
|
|
@ -6,6 +6,10 @@
|
|||
|
||||
@class OWSSignalServiceProtosAttachmentPointer;
|
||||
@class OWSSignalServiceProtosAttachmentPointerBuilder;
|
||||
@class OWSSignalServiceProtosBackupSnapshot;
|
||||
@class OWSSignalServiceProtosBackupSnapshotBackupEntity;
|
||||
@class OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder;
|
||||
@class OWSSignalServiceProtosBackupSnapshotBuilder;
|
||||
@class OWSSignalServiceProtosCallMessage;
|
||||
@class OWSSignalServiceProtosCallMessageAnswer;
|
||||
@class OWSSignalServiceProtosCallMessageAnswerBuilder;
|
||||
|
@ -168,6 +172,17 @@ typedef NS_ENUM(SInt32, OWSSignalServiceProtosGroupContextType) {
|
|||
BOOL OWSSignalServiceProtosGroupContextTypeIsValidValue(OWSSignalServiceProtosGroupContextType value);
|
||||
NSString *NSStringFromOWSSignalServiceProtosGroupContextType(OWSSignalServiceProtosGroupContextType value);
|
||||
|
||||
typedef NS_ENUM(SInt32, OWSSignalServiceProtosBackupSnapshotBackupEntityType) {
|
||||
OWSSignalServiceProtosBackupSnapshotBackupEntityTypeUnknown = 0,
|
||||
OWSSignalServiceProtosBackupSnapshotBackupEntityTypeMigration = 1,
|
||||
OWSSignalServiceProtosBackupSnapshotBackupEntityTypeThread = 2,
|
||||
OWSSignalServiceProtosBackupSnapshotBackupEntityTypeInteraction = 3,
|
||||
OWSSignalServiceProtosBackupSnapshotBackupEntityTypeAttachment = 4,
|
||||
};
|
||||
|
||||
BOOL OWSSignalServiceProtosBackupSnapshotBackupEntityTypeIsValidValue(OWSSignalServiceProtosBackupSnapshotBackupEntityType value);
|
||||
NSString *NSStringFromOWSSignalServiceProtosBackupSnapshotBackupEntityType(OWSSignalServiceProtosBackupSnapshotBackupEntityType value);
|
||||
|
||||
|
||||
@interface OWSSignalServiceProtosOwssignalServiceProtosRoot : NSObject {
|
||||
}
|
||||
|
@ -2224,5 +2239,115 @@ NSString *NSStringFromOWSSignalServiceProtosGroupContextType(OWSSignalServicePro
|
|||
- (OWSSignalServiceProtosGroupDetailsBuilder*) clearExpireTimer;
|
||||
@end
|
||||
|
||||
#define BackupSnapshot_entity @"entity"
|
||||
@interface OWSSignalServiceProtosBackupSnapshot : PBGeneratedMessage<GeneratedMessageProtocol> {
|
||||
@private
|
||||
NSMutableArray * entityArray;
|
||||
}
|
||||
@property (readonly, strong) NSArray<OWSSignalServiceProtosBackupSnapshotBackupEntity*> * entity;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntity*)entityAtIndex:(NSUInteger)index;
|
||||
|
||||
+ (instancetype) defaultInstance;
|
||||
- (instancetype) defaultInstance;
|
||||
|
||||
- (BOOL) isInitialized;
|
||||
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder*) builder;
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBuilder*) builder;
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBuilder*) builderWithPrototype:(OWSSignalServiceProtosBackupSnapshot*) prototype;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder*) toBuilder;
|
||||
|
||||
+ (OWSSignalServiceProtosBackupSnapshot*) parseFromData:(NSData*) data;
|
||||
+ (OWSSignalServiceProtosBackupSnapshot*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
|
||||
+ (OWSSignalServiceProtosBackupSnapshot*) parseFromInputStream:(NSInputStream*) input;
|
||||
+ (OWSSignalServiceProtosBackupSnapshot*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
|
||||
+ (OWSSignalServiceProtosBackupSnapshot*) parseFromCodedInputStream:(PBCodedInputStream*) input;
|
||||
+ (OWSSignalServiceProtosBackupSnapshot*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
|
||||
@end
|
||||
|
||||
#define BackupEntity_type @"type"
|
||||
#define BackupEntity_data @"data"
|
||||
@interface OWSSignalServiceProtosBackupSnapshotBackupEntity : PBGeneratedMessage<GeneratedMessageProtocol> {
|
||||
@private
|
||||
BOOL hasData_:1;
|
||||
BOOL hasType_:1;
|
||||
NSData* data;
|
||||
OWSSignalServiceProtosBackupSnapshotBackupEntityType type;
|
||||
}
|
||||
- (BOOL) hasType;
|
||||
- (BOOL) hasData;
|
||||
@property (readonly) OWSSignalServiceProtosBackupSnapshotBackupEntityType type;
|
||||
@property (readonly, strong) NSData* data;
|
||||
|
||||
+ (instancetype) defaultInstance;
|
||||
- (instancetype) defaultInstance;
|
||||
|
||||
- (BOOL) isInitialized;
|
||||
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) builder;
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) builder;
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) builderWithPrototype:(OWSSignalServiceProtosBackupSnapshotBackupEntity*) prototype;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) toBuilder;
|
||||
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntity*) parseFromData:(NSData*) data;
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntity*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntity*) parseFromInputStream:(NSInputStream*) input;
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntity*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntity*) parseFromCodedInputStream:(PBCodedInputStream*) input;
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntity*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
|
||||
@end
|
||||
|
||||
@interface OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder : PBGeneratedMessageBuilder {
|
||||
@private
|
||||
OWSSignalServiceProtosBackupSnapshotBackupEntity* resultBackupEntity;
|
||||
}
|
||||
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntity*) defaultInstance;
|
||||
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) clear;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) clone;
|
||||
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntity*) build;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntity*) buildPartial;
|
||||
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) mergeFrom:(OWSSignalServiceProtosBackupSnapshotBackupEntity*) other;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
|
||||
|
||||
- (BOOL) hasType;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityType) type;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) setType:(OWSSignalServiceProtosBackupSnapshotBackupEntityType) value;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) clearType;
|
||||
|
||||
- (BOOL) hasData;
|
||||
- (NSData*) data;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) setData:(NSData*) value;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) clearData;
|
||||
@end
|
||||
|
||||
@interface OWSSignalServiceProtosBackupSnapshotBuilder : PBGeneratedMessageBuilder {
|
||||
@private
|
||||
OWSSignalServiceProtosBackupSnapshot* resultBackupSnapshot;
|
||||
}
|
||||
|
||||
- (OWSSignalServiceProtosBackupSnapshot*) defaultInstance;
|
||||
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder*) clear;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder*) clone;
|
||||
|
||||
- (OWSSignalServiceProtosBackupSnapshot*) build;
|
||||
- (OWSSignalServiceProtosBackupSnapshot*) buildPartial;
|
||||
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder*) mergeFrom:(OWSSignalServiceProtosBackupSnapshot*) other;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry;
|
||||
|
||||
- (NSMutableArray<OWSSignalServiceProtosBackupSnapshotBackupEntity*> *)entity;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntity*)entityAtIndex:(NSUInteger)index;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder *)addEntity:(OWSSignalServiceProtosBackupSnapshotBackupEntity*)value;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder *)setEntityArray:(NSArray<OWSSignalServiceProtosBackupSnapshotBackupEntity*> *)array;
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder *)clearEntity;
|
||||
@end
|
||||
|
||||
|
||||
// @@protoc_insertion_point(global_scope)
|
||||
|
|
|
@ -9705,5 +9705,515 @@ static OWSSignalServiceProtosGroupDetailsAvatar* defaultOWSSignalServiceProtosGr
|
|||
}
|
||||
@end
|
||||
|
||||
@interface OWSSignalServiceProtosBackupSnapshot ()
|
||||
@property (strong) NSMutableArray<OWSSignalServiceProtosBackupSnapshotBackupEntity*> * entityArray;
|
||||
@end
|
||||
|
||||
@implementation OWSSignalServiceProtosBackupSnapshot
|
||||
|
||||
@synthesize entityArray;
|
||||
@dynamic entity;
|
||||
- (instancetype) init {
|
||||
if ((self = [super init])) {
|
||||
}
|
||||
return self;
|
||||
}
|
||||
static OWSSignalServiceProtosBackupSnapshot* defaultOWSSignalServiceProtosBackupSnapshotInstance = nil;
|
||||
+ (void) initialize {
|
||||
if (self == [OWSSignalServiceProtosBackupSnapshot class]) {
|
||||
defaultOWSSignalServiceProtosBackupSnapshotInstance = [[OWSSignalServiceProtosBackupSnapshot alloc] init];
|
||||
}
|
||||
}
|
||||
+ (instancetype) defaultInstance {
|
||||
return defaultOWSSignalServiceProtosBackupSnapshotInstance;
|
||||
}
|
||||
- (instancetype) defaultInstance {
|
||||
return defaultOWSSignalServiceProtosBackupSnapshotInstance;
|
||||
}
|
||||
- (NSArray<OWSSignalServiceProtosBackupSnapshotBackupEntity*> *)entity {
|
||||
return entityArray;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntity*)entityAtIndex:(NSUInteger)index {
|
||||
return [entityArray objectAtIndex:index];
|
||||
}
|
||||
- (BOOL) isInitialized {
|
||||
return YES;
|
||||
}
|
||||
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
|
||||
[self.entityArray enumerateObjectsUsingBlock:^(OWSSignalServiceProtosBackupSnapshotBackupEntity *element, NSUInteger idx, BOOL *stop) {
|
||||
[output writeMessage:1 value:element];
|
||||
}];
|
||||
[self.unknownFields writeToCodedOutputStream:output];
|
||||
}
|
||||
- (SInt32) serializedSize {
|
||||
__block SInt32 size_ = memoizedSerializedSize;
|
||||
if (size_ != -1) {
|
||||
return size_;
|
||||
}
|
||||
|
||||
size_ = 0;
|
||||
[self.entityArray enumerateObjectsUsingBlock:^(OWSSignalServiceProtosBackupSnapshotBackupEntity *element, NSUInteger idx, BOOL *stop) {
|
||||
size_ += computeMessageSize(1, element);
|
||||
}];
|
||||
size_ += self.unknownFields.serializedSize;
|
||||
memoizedSerializedSize = size_;
|
||||
return size_;
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshot*) parseFromData:(NSData*) data {
|
||||
return (OWSSignalServiceProtosBackupSnapshot*)[[[OWSSignalServiceProtosBackupSnapshot builder] mergeFromData:data] build];
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshot*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
|
||||
return (OWSSignalServiceProtosBackupSnapshot*)[[[OWSSignalServiceProtosBackupSnapshot builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshot*) parseFromInputStream:(NSInputStream*) input {
|
||||
return (OWSSignalServiceProtosBackupSnapshot*)[[[OWSSignalServiceProtosBackupSnapshot builder] mergeFromInputStream:input] build];
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshot*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
|
||||
return (OWSSignalServiceProtosBackupSnapshot*)[[[OWSSignalServiceProtosBackupSnapshot builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshot*) parseFromCodedInputStream:(PBCodedInputStream*) input {
|
||||
return (OWSSignalServiceProtosBackupSnapshot*)[[[OWSSignalServiceProtosBackupSnapshot builder] mergeFromCodedInputStream:input] build];
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshot*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
|
||||
return (OWSSignalServiceProtosBackupSnapshot*)[[[OWSSignalServiceProtosBackupSnapshot builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBuilder*) builder {
|
||||
return [[OWSSignalServiceProtosBackupSnapshotBuilder alloc] init];
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBuilder*) builderWithPrototype:(OWSSignalServiceProtosBackupSnapshot*) prototype {
|
||||
return [[OWSSignalServiceProtosBackupSnapshot builder] mergeFrom:prototype];
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder*) builder {
|
||||
return [OWSSignalServiceProtosBackupSnapshot builder];
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder*) toBuilder {
|
||||
return [OWSSignalServiceProtosBackupSnapshot builderWithPrototype:self];
|
||||
}
|
||||
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
|
||||
[self.entityArray enumerateObjectsUsingBlock:^(OWSSignalServiceProtosBackupSnapshotBackupEntity *element, NSUInteger idx, BOOL *stop) {
|
||||
[output appendFormat:@"%@%@ {\n", indent, @"entity"];
|
||||
[element writeDescriptionTo:output
|
||||
withIndent:[NSString stringWithFormat:@"%@ ", indent]];
|
||||
[output appendFormat:@"%@}\n", indent];
|
||||
}];
|
||||
[self.unknownFields writeDescriptionTo:output withIndent:indent];
|
||||
}
|
||||
- (void) storeInDictionary:(NSMutableDictionary *)dictionary {
|
||||
for (OWSSignalServiceProtosBackupSnapshotBackupEntity* element in self.entityArray) {
|
||||
NSMutableDictionary *elementDictionary = [NSMutableDictionary dictionary];
|
||||
[element storeInDictionary:elementDictionary];
|
||||
[dictionary setObject:[NSDictionary dictionaryWithDictionary:elementDictionary] forKey:@"entity"];
|
||||
}
|
||||
[self.unknownFields storeInDictionary:dictionary];
|
||||
}
|
||||
- (BOOL) isEqual:(id)other {
|
||||
if (other == self) {
|
||||
return YES;
|
||||
}
|
||||
if (![other isKindOfClass:[OWSSignalServiceProtosBackupSnapshot class]]) {
|
||||
return NO;
|
||||
}
|
||||
OWSSignalServiceProtosBackupSnapshot *otherMessage = other;
|
||||
return
|
||||
[self.entityArray isEqualToArray:otherMessage.entityArray] &&
|
||||
(self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
|
||||
}
|
||||
- (NSUInteger) hash {
|
||||
__block NSUInteger hashCode = 7;
|
||||
[self.entityArray enumerateObjectsUsingBlock:^(OWSSignalServiceProtosBackupSnapshotBackupEntity *element, NSUInteger idx, BOOL *stop) {
|
||||
hashCode = hashCode * 31 + [element hash];
|
||||
}];
|
||||
hashCode = hashCode * 31 + [self.unknownFields hash];
|
||||
return hashCode;
|
||||
}
|
||||
@end
|
||||
|
||||
@interface OWSSignalServiceProtosBackupSnapshotBackupEntity ()
|
||||
@property OWSSignalServiceProtosBackupSnapshotBackupEntityType type;
|
||||
@property (strong) NSData* data;
|
||||
@end
|
||||
|
||||
@implementation OWSSignalServiceProtosBackupSnapshotBackupEntity
|
||||
|
||||
- (BOOL) hasType {
|
||||
return !!hasType_;
|
||||
}
|
||||
- (void) setHasType:(BOOL) _value_ {
|
||||
hasType_ = !!_value_;
|
||||
}
|
||||
@synthesize type;
|
||||
- (BOOL) hasData {
|
||||
return !!hasData_;
|
||||
}
|
||||
- (void) setHasData:(BOOL) _value_ {
|
||||
hasData_ = !!_value_;
|
||||
}
|
||||
@synthesize data;
|
||||
- (instancetype) init {
|
||||
if ((self = [super init])) {
|
||||
self.type = OWSSignalServiceProtosBackupSnapshotBackupEntityTypeUnknown;
|
||||
self.data = [NSData data];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
static OWSSignalServiceProtosBackupSnapshotBackupEntity* defaultOWSSignalServiceProtosBackupSnapshotBackupEntityInstance = nil;
|
||||
+ (void) initialize {
|
||||
if (self == [OWSSignalServiceProtosBackupSnapshotBackupEntity class]) {
|
||||
defaultOWSSignalServiceProtosBackupSnapshotBackupEntityInstance = [[OWSSignalServiceProtosBackupSnapshotBackupEntity alloc] init];
|
||||
}
|
||||
}
|
||||
+ (instancetype) defaultInstance {
|
||||
return defaultOWSSignalServiceProtosBackupSnapshotBackupEntityInstance;
|
||||
}
|
||||
- (instancetype) defaultInstance {
|
||||
return defaultOWSSignalServiceProtosBackupSnapshotBackupEntityInstance;
|
||||
}
|
||||
- (BOOL) isInitialized {
|
||||
return YES;
|
||||
}
|
||||
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
|
||||
if (self.hasType) {
|
||||
[output writeEnum:1 value:self.type];
|
||||
}
|
||||
if (self.hasData) {
|
||||
[output writeData:2 value:self.data];
|
||||
}
|
||||
[self.unknownFields writeToCodedOutputStream:output];
|
||||
}
|
||||
- (SInt32) serializedSize {
|
||||
__block SInt32 size_ = memoizedSerializedSize;
|
||||
if (size_ != -1) {
|
||||
return size_;
|
||||
}
|
||||
|
||||
size_ = 0;
|
||||
if (self.hasType) {
|
||||
size_ += computeEnumSize(1, self.type);
|
||||
}
|
||||
if (self.hasData) {
|
||||
size_ += computeDataSize(2, self.data);
|
||||
}
|
||||
size_ += self.unknownFields.serializedSize;
|
||||
memoizedSerializedSize = size_;
|
||||
return size_;
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntity*) parseFromData:(NSData*) data {
|
||||
return (OWSSignalServiceProtosBackupSnapshotBackupEntity*)[[[OWSSignalServiceProtosBackupSnapshotBackupEntity builder] mergeFromData:data] build];
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntity*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
|
||||
return (OWSSignalServiceProtosBackupSnapshotBackupEntity*)[[[OWSSignalServiceProtosBackupSnapshotBackupEntity builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntity*) parseFromInputStream:(NSInputStream*) input {
|
||||
return (OWSSignalServiceProtosBackupSnapshotBackupEntity*)[[[OWSSignalServiceProtosBackupSnapshotBackupEntity builder] mergeFromInputStream:input] build];
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntity*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
|
||||
return (OWSSignalServiceProtosBackupSnapshotBackupEntity*)[[[OWSSignalServiceProtosBackupSnapshotBackupEntity builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntity*) parseFromCodedInputStream:(PBCodedInputStream*) input {
|
||||
return (OWSSignalServiceProtosBackupSnapshotBackupEntity*)[[[OWSSignalServiceProtosBackupSnapshotBackupEntity builder] mergeFromCodedInputStream:input] build];
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntity*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
|
||||
return (OWSSignalServiceProtosBackupSnapshotBackupEntity*)[[[OWSSignalServiceProtosBackupSnapshotBackupEntity builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) builder {
|
||||
return [[OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder alloc] init];
|
||||
}
|
||||
+ (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) builderWithPrototype:(OWSSignalServiceProtosBackupSnapshotBackupEntity*) prototype {
|
||||
return [[OWSSignalServiceProtosBackupSnapshotBackupEntity builder] mergeFrom:prototype];
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) builder {
|
||||
return [OWSSignalServiceProtosBackupSnapshotBackupEntity builder];
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) toBuilder {
|
||||
return [OWSSignalServiceProtosBackupSnapshotBackupEntity builderWithPrototype:self];
|
||||
}
|
||||
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
|
||||
if (self.hasType) {
|
||||
[output appendFormat:@"%@%@: %@\n", indent, @"type", NSStringFromOWSSignalServiceProtosBackupSnapshotBackupEntityType(self.type)];
|
||||
}
|
||||
if (self.hasData) {
|
||||
[output appendFormat:@"%@%@: %@\n", indent, @"data", self.data];
|
||||
}
|
||||
[self.unknownFields writeDescriptionTo:output withIndent:indent];
|
||||
}
|
||||
- (void) storeInDictionary:(NSMutableDictionary *)dictionary {
|
||||
if (self.hasType) {
|
||||
[dictionary setObject: @(self.type) forKey: @"type"];
|
||||
}
|
||||
if (self.hasData) {
|
||||
[dictionary setObject: self.data forKey: @"data"];
|
||||
}
|
||||
[self.unknownFields storeInDictionary:dictionary];
|
||||
}
|
||||
- (BOOL) isEqual:(id)other {
|
||||
if (other == self) {
|
||||
return YES;
|
||||
}
|
||||
if (![other isKindOfClass:[OWSSignalServiceProtosBackupSnapshotBackupEntity class]]) {
|
||||
return NO;
|
||||
}
|
||||
OWSSignalServiceProtosBackupSnapshotBackupEntity *otherMessage = other;
|
||||
return
|
||||
self.hasType == otherMessage.hasType &&
|
||||
(!self.hasType || self.type == otherMessage.type) &&
|
||||
self.hasData == otherMessage.hasData &&
|
||||
(!self.hasData || [self.data isEqual:otherMessage.data]) &&
|
||||
(self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
|
||||
}
|
||||
- (NSUInteger) hash {
|
||||
__block NSUInteger hashCode = 7;
|
||||
if (self.hasType) {
|
||||
hashCode = hashCode * 31 + self.type;
|
||||
}
|
||||
if (self.hasData) {
|
||||
hashCode = hashCode * 31 + [self.data hash];
|
||||
}
|
||||
hashCode = hashCode * 31 + [self.unknownFields hash];
|
||||
return hashCode;
|
||||
}
|
||||
@end
|
||||
|
||||
BOOL OWSSignalServiceProtosBackupSnapshotBackupEntityTypeIsValidValue(OWSSignalServiceProtosBackupSnapshotBackupEntityType value) {
|
||||
switch (value) {
|
||||
case OWSSignalServiceProtosBackupSnapshotBackupEntityTypeUnknown:
|
||||
case OWSSignalServiceProtosBackupSnapshotBackupEntityTypeMigration:
|
||||
case OWSSignalServiceProtosBackupSnapshotBackupEntityTypeThread:
|
||||
case OWSSignalServiceProtosBackupSnapshotBackupEntityTypeInteraction:
|
||||
case OWSSignalServiceProtosBackupSnapshotBackupEntityTypeAttachment:
|
||||
return YES;
|
||||
default:
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
NSString *NSStringFromOWSSignalServiceProtosBackupSnapshotBackupEntityType(OWSSignalServiceProtosBackupSnapshotBackupEntityType value) {
|
||||
switch (value) {
|
||||
case OWSSignalServiceProtosBackupSnapshotBackupEntityTypeUnknown:
|
||||
return @"OWSSignalServiceProtosBackupSnapshotBackupEntityTypeUnknown";
|
||||
case OWSSignalServiceProtosBackupSnapshotBackupEntityTypeMigration:
|
||||
return @"OWSSignalServiceProtosBackupSnapshotBackupEntityTypeMigration";
|
||||
case OWSSignalServiceProtosBackupSnapshotBackupEntityTypeThread:
|
||||
return @"OWSSignalServiceProtosBackupSnapshotBackupEntityTypeThread";
|
||||
case OWSSignalServiceProtosBackupSnapshotBackupEntityTypeInteraction:
|
||||
return @"OWSSignalServiceProtosBackupSnapshotBackupEntityTypeInteraction";
|
||||
case OWSSignalServiceProtosBackupSnapshotBackupEntityTypeAttachment:
|
||||
return @"OWSSignalServiceProtosBackupSnapshotBackupEntityTypeAttachment";
|
||||
default:
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
@interface OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder()
|
||||
@property (strong) OWSSignalServiceProtosBackupSnapshotBackupEntity* resultBackupEntity;
|
||||
@end
|
||||
|
||||
@implementation OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder
|
||||
@synthesize resultBackupEntity;
|
||||
- (instancetype) init {
|
||||
if ((self = [super init])) {
|
||||
self.resultBackupEntity = [[OWSSignalServiceProtosBackupSnapshotBackupEntity alloc] init];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
- (PBGeneratedMessage*) internalGetResult {
|
||||
return resultBackupEntity;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) clear {
|
||||
self.resultBackupEntity = [[OWSSignalServiceProtosBackupSnapshotBackupEntity alloc] init];
|
||||
return self;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) clone {
|
||||
return [OWSSignalServiceProtosBackupSnapshotBackupEntity builderWithPrototype:resultBackupEntity];
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntity*) defaultInstance {
|
||||
return [OWSSignalServiceProtosBackupSnapshotBackupEntity defaultInstance];
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntity*) build {
|
||||
[self checkInitialized];
|
||||
return [self buildPartial];
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntity*) buildPartial {
|
||||
OWSSignalServiceProtosBackupSnapshotBackupEntity* returnMe = resultBackupEntity;
|
||||
self.resultBackupEntity = nil;
|
||||
return returnMe;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) mergeFrom:(OWSSignalServiceProtosBackupSnapshotBackupEntity*) other {
|
||||
if (other == [OWSSignalServiceProtosBackupSnapshotBackupEntity defaultInstance]) {
|
||||
return self;
|
||||
}
|
||||
if (other.hasType) {
|
||||
[self setType:other.type];
|
||||
}
|
||||
if (other.hasData) {
|
||||
[self setData:other.data];
|
||||
}
|
||||
[self mergeUnknownFields:other.unknownFields];
|
||||
return self;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
|
||||
return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
|
||||
PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
|
||||
while (YES) {
|
||||
SInt32 tag = [input readTag];
|
||||
switch (tag) {
|
||||
case 0:
|
||||
[self setUnknownFields:[unknownFields build]];
|
||||
return self;
|
||||
default: {
|
||||
if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
|
||||
[self setUnknownFields:[unknownFields build]];
|
||||
return self;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 8: {
|
||||
OWSSignalServiceProtosBackupSnapshotBackupEntityType value = (OWSSignalServiceProtosBackupSnapshotBackupEntityType)[input readEnum];
|
||||
if (OWSSignalServiceProtosBackupSnapshotBackupEntityTypeIsValidValue(value)) {
|
||||
[self setType:value];
|
||||
} else {
|
||||
[unknownFields mergeVarintField:1 value:value];
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 18: {
|
||||
[self setData:[input readData]];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
- (BOOL) hasType {
|
||||
return resultBackupEntity.hasType;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityType) type {
|
||||
return resultBackupEntity.type;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) setType:(OWSSignalServiceProtosBackupSnapshotBackupEntityType) value {
|
||||
resultBackupEntity.hasType = YES;
|
||||
resultBackupEntity.type = value;
|
||||
return self;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) clearType {
|
||||
resultBackupEntity.hasType = NO;
|
||||
resultBackupEntity.type = OWSSignalServiceProtosBackupSnapshotBackupEntityTypeUnknown;
|
||||
return self;
|
||||
}
|
||||
- (BOOL) hasData {
|
||||
return resultBackupEntity.hasData;
|
||||
}
|
||||
- (NSData*) data {
|
||||
return resultBackupEntity.data;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) setData:(NSData*) value {
|
||||
resultBackupEntity.hasData = YES;
|
||||
resultBackupEntity.data = value;
|
||||
return self;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder*) clearData {
|
||||
resultBackupEntity.hasData = NO;
|
||||
resultBackupEntity.data = [NSData data];
|
||||
return self;
|
||||
}
|
||||
@end
|
||||
|
||||
@interface OWSSignalServiceProtosBackupSnapshotBuilder()
|
||||
@property (strong) OWSSignalServiceProtosBackupSnapshot* resultBackupSnapshot;
|
||||
@end
|
||||
|
||||
@implementation OWSSignalServiceProtosBackupSnapshotBuilder
|
||||
@synthesize resultBackupSnapshot;
|
||||
- (instancetype) init {
|
||||
if ((self = [super init])) {
|
||||
self.resultBackupSnapshot = [[OWSSignalServiceProtosBackupSnapshot alloc] init];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
- (PBGeneratedMessage*) internalGetResult {
|
||||
return resultBackupSnapshot;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder*) clear {
|
||||
self.resultBackupSnapshot = [[OWSSignalServiceProtosBackupSnapshot alloc] init];
|
||||
return self;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder*) clone {
|
||||
return [OWSSignalServiceProtosBackupSnapshot builderWithPrototype:resultBackupSnapshot];
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshot*) defaultInstance {
|
||||
return [OWSSignalServiceProtosBackupSnapshot defaultInstance];
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshot*) build {
|
||||
[self checkInitialized];
|
||||
return [self buildPartial];
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshot*) buildPartial {
|
||||
OWSSignalServiceProtosBackupSnapshot* returnMe = resultBackupSnapshot;
|
||||
self.resultBackupSnapshot = nil;
|
||||
return returnMe;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder*) mergeFrom:(OWSSignalServiceProtosBackupSnapshot*) other {
|
||||
if (other == [OWSSignalServiceProtosBackupSnapshot defaultInstance]) {
|
||||
return self;
|
||||
}
|
||||
if (other.entityArray.count > 0) {
|
||||
if (resultBackupSnapshot.entityArray == nil) {
|
||||
resultBackupSnapshot.entityArray = [[NSMutableArray alloc] initWithArray:other.entityArray];
|
||||
} else {
|
||||
[resultBackupSnapshot.entityArray addObjectsFromArray:other.entityArray];
|
||||
}
|
||||
}
|
||||
[self mergeUnknownFields:other.unknownFields];
|
||||
return self;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
|
||||
return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
|
||||
PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
|
||||
while (YES) {
|
||||
SInt32 tag = [input readTag];
|
||||
switch (tag) {
|
||||
case 0:
|
||||
[self setUnknownFields:[unknownFields build]];
|
||||
return self;
|
||||
default: {
|
||||
if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
|
||||
[self setUnknownFields:[unknownFields build]];
|
||||
return self;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 10: {
|
||||
OWSSignalServiceProtosBackupSnapshotBackupEntityBuilder* subBuilder = [OWSSignalServiceProtosBackupSnapshotBackupEntity builder];
|
||||
[input readMessage:subBuilder extensionRegistry:extensionRegistry];
|
||||
[self addEntity:[subBuilder buildPartial]];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
- (NSMutableArray<OWSSignalServiceProtosBackupSnapshotBackupEntity*> *)entity {
|
||||
return resultBackupSnapshot.entityArray;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBackupEntity*)entityAtIndex:(NSUInteger)index {
|
||||
return [resultBackupSnapshot entityAtIndex:index];
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder *)addEntity:(OWSSignalServiceProtosBackupSnapshotBackupEntity*)value {
|
||||
if (resultBackupSnapshot.entityArray == nil) {
|
||||
resultBackupSnapshot.entityArray = [[NSMutableArray alloc]init];
|
||||
}
|
||||
[resultBackupSnapshot.entityArray addObject:value];
|
||||
return self;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder *)setEntityArray:(NSArray<OWSSignalServiceProtosBackupSnapshotBackupEntity*> *)array {
|
||||
resultBackupSnapshot.entityArray = [[NSMutableArray alloc]initWithArray:array];
|
||||
return self;
|
||||
}
|
||||
- (OWSSignalServiceProtosBackupSnapshotBuilder *)clearEntity {
|
||||
resultBackupSnapshot.entityArray = nil;
|
||||
return self;
|
||||
}
|
||||
@end
|
||||
|
||||
|
||||
// @@protoc_insertion_point(global_scope)
|
||||
|
|
Loading…
Reference in New Issue