From 50db472be5ec82a1c1917a0d0b5f9584c5af5934 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Mon, 6 Aug 2018 09:50:48 -0400 Subject: [PATCH] Migrate to fingerprint proto wrappers. --- .../src/Security/OWSFingerprint.m | 70 ++- .../src/Security/OWSFingerprintProtos.pb.h | 189 ------ .../src/Security/OWSFingerprintProtos.pb.m | 583 ------------------ 3 files changed, 46 insertions(+), 796 deletions(-) delete mode 100644 SignalServiceKit/src/Security/OWSFingerprintProtos.pb.h delete mode 100644 SignalServiceKit/src/Security/OWSFingerprintProtos.pb.m diff --git a/SignalServiceKit/src/Security/OWSFingerprint.m b/SignalServiceKit/src/Security/OWSFingerprint.m index 733fa8e2e..3c1ed9d7f 100644 --- a/SignalServiceKit/src/Security/OWSFingerprint.m +++ b/SignalServiceKit/src/Security/OWSFingerprint.m @@ -5,9 +5,9 @@ #import "OWSFingerprint.h" #import "NSData+Base64.h" #import "OWSError.h" -#import "OWSFingerprintProtos.pb.h" #import #import +#import #import NS_ASSUME_NONNULL_BEGIN @@ -26,6 +26,8 @@ static uint32_t const OWSFingerprintDefaultHashIterations = 5200; @end +#pragma mark - + @implementation OWSFingerprint - (instancetype)initWithMyStableId:(NSString *)myStableId @@ -88,19 +90,24 @@ static uint32_t const OWSFingerprintDefaultHashIterations = 5200; - (BOOL)matchesLogicalFingerprintsData:(NSData *)data error:(NSError **)error { - OWSFingerprintProtosLogicalFingerprints *logicalFingerprints; + OWSAssert(data.length > 0); + OWSAssert(error); + + FingerprintProtoLogicalFingerprints *logicalFingerprints; @try { - logicalFingerprints = [OWSFingerprintProtosLogicalFingerprints parseFromData:data]; - } @catch (NSException *exception) { - if ([exception.name isEqualToString:@"InvalidProtocolBuffer"]) { + *error = nil; + logicalFingerprints = [FingerprintProtoLogicalFingerprints parseData:data error:error]; + if (!logicalFingerprints || *error) { + OWSFail(@"%@ fingerprint failure: %@", self.logTag, *error); + NSString *description = NSLocalizedString(@"PRIVACY_VERIFICATION_FAILURE_INVALID_QRCODE", @"alert body"); *error = OWSErrorWithCodeDescription(OWSErrorCodePrivacyVerificationFailure, description); return NO; - } else { - // Sync log in case we bail. - DDLogError(@"%@ parsing QRCode data failed with error: %@", self.logTag, exception); - @throw exception; } + } @catch (NSException *exception) { + // Sync log in case we bail. + DDLogError(@"%@ parsing QRCode data failed with error: %@", self.logTag, exception); + @throw exception; } if (logicalFingerprints.version < OWSFingerprintScannableFormatVersion) { @@ -119,8 +126,8 @@ static uint32_t const OWSFingerprintDefaultHashIterations = 5200; } // Their local is *our* remote. - OWSFingerprintProtosLogicalFingerprint *localFingerprint = logicalFingerprints.remoteFingerprint; - OWSFingerprintProtosLogicalFingerprint *remoteFingerprint = logicalFingerprints.localFingerprint; + FingerprintProtoLogicalFingerprint *localFingerprint = logicalFingerprints.remoteFingerprint; + FingerprintProtoLogicalFingerprint *remoteFingerprint = logicalFingerprints.localFingerprint; if (![remoteFingerprint.identityData isEqual:[self scannableData:self.theirFingerprintData]]) { DDLogWarn(@"%@ Verification failed. We have the wrong fingerprint for them", self.logTag); @@ -209,7 +216,7 @@ static uint32_t const OWSFingerprintDefaultHashIterations = 5200; OWSAssert(publicKey); NSData *versionData = [self dataFromShort:OWSFingerprintHashingVersion]; - NSMutableData *hash = [NSMutableData dataWithData:versionData]; + NSMutableData *hash = [versionData mutableCopy]; [hash appendData:publicKey]; [hash appendData:stableIdData]; @@ -226,7 +233,7 @@ static uint32_t const OWSFingerprintDefaultHashIterations = 5200; CC_SHA512(hash.bytes, (uint32_t)hash.length, digestData.mutableBytes); // TODO get rid of this loop-allocation - hash = [digestData copy]; + hash = [digestData mutableCopy]; } return [hash copy]; @@ -275,25 +282,40 @@ static uint32_t const OWSFingerprintDefaultHashIterations = 5200; - (nullable UIImage *)image { - OWSFingerprintProtosLogicalFingerprintsBuilder *logicalFingerprintsBuilder = - [OWSFingerprintProtosLogicalFingerprintsBuilder new]; + FingerprintProtoLogicalFingerprintsBuilder *logicalFingerprintsBuilder = + [FingerprintProtoLogicalFingerprintsBuilder new]; logicalFingerprintsBuilder.version = OWSFingerprintScannableFormatVersion; - OWSFingerprintProtosLogicalFingerprintBuilder *remoteFingerprintBuilder = - [OWSFingerprintProtosLogicalFingerprintBuilder new]; - + FingerprintProtoLogicalFingerprintBuilder *remoteFingerprintBuilder = + [FingerprintProtoLogicalFingerprintBuilder new]; remoteFingerprintBuilder.identityData = [self scannableData:self.theirFingerprintData]; - logicalFingerprintsBuilder.remoteFingerprint = [remoteFingerprintBuilder build]; - - OWSFingerprintProtosLogicalFingerprintBuilder *localFingerprintBuilder = - [OWSFingerprintProtosLogicalFingerprintBuilder new]; + NSError *error; + FingerprintProtoLogicalFingerprint *_Nullable remoteFingerprint = + [remoteFingerprintBuilder buildAndReturnError:&error]; + if (!remoteFingerprint || error) { + OWSFail(@"%@ could not build proto: %@", self.logTag, error); + return nil; + } + logicalFingerprintsBuilder.remoteFingerprint = remoteFingerprint; + FingerprintProtoLogicalFingerprintBuilder *localFingerprintBuilder = + [FingerprintProtoLogicalFingerprintBuilder new]; localFingerprintBuilder.identityData = [self scannableData:self.myFingerprintData]; - logicalFingerprintsBuilder.localFingerprint = [localFingerprintBuilder build]; + FingerprintProtoLogicalFingerprint *_Nullable localFingerprint = + [localFingerprintBuilder buildAndReturnError:&error]; + if (!localFingerprint || error) { + OWSFail(@"%@ could not build proto: %@", self.logTag, error); + return nil; + } + logicalFingerprintsBuilder.localFingerprint = localFingerprint; // Build ByteMode QR (Latin-1 encodable data) - NSData *fingerprintData = [logicalFingerprintsBuilder build].data; + NSData *_Nullable fingerprintData = [logicalFingerprintsBuilder buildSerializedDataAndReturnError:&error]; + if (!fingerprintData || error) { + OWSFail(@"%@ could not serialize proto: %@", self.logTag, error); + return nil; + } DDLogDebug(@"%@ Building fingerprint with data: %@", self.logTag, fingerprintData); diff --git a/SignalServiceKit/src/Security/OWSFingerprintProtos.pb.h b/SignalServiceKit/src/Security/OWSFingerprintProtos.pb.h deleted file mode 100644 index 57fde1526..000000000 --- a/SignalServiceKit/src/Security/OWSFingerprintProtos.pb.h +++ /dev/null @@ -1,189 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! - -#import - -// @@protoc_insertion_point(imports) - -@class OWSFingerprintProtosLogicalFingerprint; -@class OWSFingerprintProtosLogicalFingerprintBuilder; -@class OWSFingerprintProtosLogicalFingerprints; -@class OWSFingerprintProtosLogicalFingerprintsBuilder; -@class ObjectiveCFileOptions; -@class ObjectiveCFileOptionsBuilder; -@class PBDescriptorProto; -@class PBDescriptorProtoBuilder; -@class PBDescriptorProtoExtensionRange; -@class PBDescriptorProtoExtensionRangeBuilder; -@class PBEnumDescriptorProto; -@class PBEnumDescriptorProtoBuilder; -@class PBEnumOptions; -@class PBEnumOptionsBuilder; -@class PBEnumValueDescriptorProto; -@class PBEnumValueDescriptorProtoBuilder; -@class PBEnumValueOptions; -@class PBEnumValueOptionsBuilder; -@class PBFieldDescriptorProto; -@class PBFieldDescriptorProtoBuilder; -@class PBFieldOptions; -@class PBFieldOptionsBuilder; -@class PBFileDescriptorProto; -@class PBFileDescriptorProtoBuilder; -@class PBFileDescriptorSet; -@class PBFileDescriptorSetBuilder; -@class PBFileOptions; -@class PBFileOptionsBuilder; -@class PBMessageOptions; -@class PBMessageOptionsBuilder; -@class PBMethodDescriptorProto; -@class PBMethodDescriptorProtoBuilder; -@class PBMethodOptions; -@class PBMethodOptionsBuilder; -@class PBOneofDescriptorProto; -@class PBOneofDescriptorProtoBuilder; -@class PBServiceDescriptorProto; -@class PBServiceDescriptorProtoBuilder; -@class PBServiceOptions; -@class PBServiceOptionsBuilder; -@class PBSourceCodeInfo; -@class PBSourceCodeInfoBuilder; -@class PBSourceCodeInfoLocation; -@class PBSourceCodeInfoLocationBuilder; -@class PBUninterpretedOption; -@class PBUninterpretedOptionBuilder; -@class PBUninterpretedOptionNamePart; -@class PBUninterpretedOptionNamePartBuilder; - - - -@interface OWSFingerprintProtosOwsfingerprintProtosRoot : NSObject { -} -+ (PBExtensionRegistry*) extensionRegistry; -+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry; -@end - -#define LogicalFingerprint_identityData @"identityData" -@interface OWSFingerprintProtosLogicalFingerprint : PBGeneratedMessage { -@private - BOOL hasIdentityData_:1; - NSData* identityData; -} -- (BOOL) hasIdentityData; -@property (readonly, strong) NSData* identityData; - -+ (instancetype) defaultInstance; -- (instancetype) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (OWSFingerprintProtosLogicalFingerprintBuilder*) builder; -+ (OWSFingerprintProtosLogicalFingerprintBuilder*) builder; -+ (OWSFingerprintProtosLogicalFingerprintBuilder*) builderWithPrototype:(OWSFingerprintProtosLogicalFingerprint*) prototype; -- (OWSFingerprintProtosLogicalFingerprintBuilder*) toBuilder; - -+ (OWSFingerprintProtosLogicalFingerprint*) parseFromData:(NSData*) data; -+ (OWSFingerprintProtosLogicalFingerprint*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (OWSFingerprintProtosLogicalFingerprint*) parseFromInputStream:(NSInputStream*) input; -+ (OWSFingerprintProtosLogicalFingerprint*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (OWSFingerprintProtosLogicalFingerprint*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (OWSFingerprintProtosLogicalFingerprint*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface OWSFingerprintProtosLogicalFingerprintBuilder : PBGeneratedMessageBuilder { -@private - OWSFingerprintProtosLogicalFingerprint* resultLogicalFingerprint; -} - -- (OWSFingerprintProtosLogicalFingerprint*) defaultInstance; - -- (OWSFingerprintProtosLogicalFingerprintBuilder*) clear; -- (OWSFingerprintProtosLogicalFingerprintBuilder*) clone; - -- (OWSFingerprintProtosLogicalFingerprint*) build; -- (OWSFingerprintProtosLogicalFingerprint*) buildPartial; - -- (OWSFingerprintProtosLogicalFingerprintBuilder*) mergeFrom:(OWSFingerprintProtosLogicalFingerprint*) other; -- (OWSFingerprintProtosLogicalFingerprintBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (OWSFingerprintProtosLogicalFingerprintBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasIdentityData; -- (NSData*) identityData; -- (OWSFingerprintProtosLogicalFingerprintBuilder*) setIdentityData:(NSData*) value; -- (OWSFingerprintProtosLogicalFingerprintBuilder*) clearIdentityData; -@end - -#define LogicalFingerprints_version @"version" -#define LogicalFingerprints_localFingerprint @"localFingerprint" -#define LogicalFingerprints_remoteFingerprint @"remoteFingerprint" -@interface OWSFingerprintProtosLogicalFingerprints : PBGeneratedMessage { -@private - BOOL hasLocalFingerprint_:1; - BOOL hasRemoteFingerprint_:1; - BOOL hasVersion_:1; - OWSFingerprintProtosLogicalFingerprint* localFingerprint; - OWSFingerprintProtosLogicalFingerprint* remoteFingerprint; - UInt32 version; -} -- (BOOL) hasVersion; -- (BOOL) hasLocalFingerprint; -- (BOOL) hasRemoteFingerprint; -@property (readonly) UInt32 version; -@property (readonly, strong) OWSFingerprintProtosLogicalFingerprint* localFingerprint; -@property (readonly, strong) OWSFingerprintProtosLogicalFingerprint* remoteFingerprint; - -+ (instancetype) defaultInstance; -- (instancetype) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) builder; -+ (OWSFingerprintProtosLogicalFingerprintsBuilder*) builder; -+ (OWSFingerprintProtosLogicalFingerprintsBuilder*) builderWithPrototype:(OWSFingerprintProtosLogicalFingerprints*) prototype; -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) toBuilder; - -+ (OWSFingerprintProtosLogicalFingerprints*) parseFromData:(NSData*) data; -+ (OWSFingerprintProtosLogicalFingerprints*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (OWSFingerprintProtosLogicalFingerprints*) parseFromInputStream:(NSInputStream*) input; -+ (OWSFingerprintProtosLogicalFingerprints*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (OWSFingerprintProtosLogicalFingerprints*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (OWSFingerprintProtosLogicalFingerprints*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface OWSFingerprintProtosLogicalFingerprintsBuilder : PBGeneratedMessageBuilder { -@private - OWSFingerprintProtosLogicalFingerprints* resultLogicalFingerprints; -} - -- (OWSFingerprintProtosLogicalFingerprints*) defaultInstance; - -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) clear; -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) clone; - -- (OWSFingerprintProtosLogicalFingerprints*) build; -- (OWSFingerprintProtosLogicalFingerprints*) buildPartial; - -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) mergeFrom:(OWSFingerprintProtosLogicalFingerprints*) other; -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasVersion; -- (UInt32) version; -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) setVersion:(UInt32) value; -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) clearVersion; - -- (BOOL) hasLocalFingerprint; -- (OWSFingerprintProtosLogicalFingerprint*) localFingerprint; -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) setLocalFingerprint:(OWSFingerprintProtosLogicalFingerprint*) value; -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) setLocalFingerprintBuilder:(OWSFingerprintProtosLogicalFingerprintBuilder*) builderForValue; -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) mergeLocalFingerprint:(OWSFingerprintProtosLogicalFingerprint*) value; -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) clearLocalFingerprint; - -- (BOOL) hasRemoteFingerprint; -- (OWSFingerprintProtosLogicalFingerprint*) remoteFingerprint; -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) setRemoteFingerprint:(OWSFingerprintProtosLogicalFingerprint*) value; -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) setRemoteFingerprintBuilder:(OWSFingerprintProtosLogicalFingerprintBuilder*) builderForValue; -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) mergeRemoteFingerprint:(OWSFingerprintProtosLogicalFingerprint*) value; -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) clearRemoteFingerprint; -@end - - -// @@protoc_insertion_point(global_scope) diff --git a/SignalServiceKit/src/Security/OWSFingerprintProtos.pb.m b/SignalServiceKit/src/Security/OWSFingerprintProtos.pb.m deleted file mode 100644 index 41c8f1bd6..000000000 --- a/SignalServiceKit/src/Security/OWSFingerprintProtos.pb.m +++ /dev/null @@ -1,583 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! - -#import "OWSFingerprintProtos.pb.h" -// @@protoc_insertion_point(imports) - -@implementation OWSFingerprintProtosOwsfingerprintProtosRoot -static PBExtensionRegistry* extensionRegistry = nil; -+ (PBExtensionRegistry*) extensionRegistry { - return extensionRegistry; -} - -+ (void) initialize { - if (self == [OWSFingerprintProtosOwsfingerprintProtosRoot class]) { - PBMutableExtensionRegistry* registry = [PBMutableExtensionRegistry registry]; - [self registerAllExtensions:registry]; - [ObjectivecDescriptorRoot registerAllExtensions:registry]; - extensionRegistry = registry; - } -} -+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry { -} -@end - -@interface OWSFingerprintProtosLogicalFingerprint () -@property (strong) NSData* identityData; -@end - -@implementation OWSFingerprintProtosLogicalFingerprint - -- (BOOL) hasIdentityData { - return !!hasIdentityData_; -} -- (void) setHasIdentityData:(BOOL) _value_ { - hasIdentityData_ = !!_value_; -} -@synthesize identityData; -- (instancetype) init { - if ((self = [super init])) { - self.identityData = [NSData data]; - } - return self; -} -static OWSFingerprintProtosLogicalFingerprint* defaultOWSFingerprintProtosLogicalFingerprintInstance = nil; -+ (void) initialize { - if (self == [OWSFingerprintProtosLogicalFingerprint class]) { - defaultOWSFingerprintProtosLogicalFingerprintInstance = [[OWSFingerprintProtosLogicalFingerprint alloc] init]; - } -} -+ (instancetype) defaultInstance { - return defaultOWSFingerprintProtosLogicalFingerprintInstance; -} -- (instancetype) defaultInstance { - return defaultOWSFingerprintProtosLogicalFingerprintInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasIdentityData) { - [output writeData:1 value:self.identityData]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasIdentityData) { - size_ += computeDataSize(1, self.identityData); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (OWSFingerprintProtosLogicalFingerprint*) parseFromData:(NSData*) data { - return (OWSFingerprintProtosLogicalFingerprint*)[[[OWSFingerprintProtosLogicalFingerprint builder] mergeFromData:data] build]; -} -+ (OWSFingerprintProtosLogicalFingerprint*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (OWSFingerprintProtosLogicalFingerprint*)[[[OWSFingerprintProtosLogicalFingerprint builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (OWSFingerprintProtosLogicalFingerprint*) parseFromInputStream:(NSInputStream*) input { - return (OWSFingerprintProtosLogicalFingerprint*)[[[OWSFingerprintProtosLogicalFingerprint builder] mergeFromInputStream:input] build]; -} -+ (OWSFingerprintProtosLogicalFingerprint*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (OWSFingerprintProtosLogicalFingerprint*)[[[OWSFingerprintProtosLogicalFingerprint builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (OWSFingerprintProtosLogicalFingerprint*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (OWSFingerprintProtosLogicalFingerprint*)[[[OWSFingerprintProtosLogicalFingerprint builder] mergeFromCodedInputStream:input] build]; -} -+ (OWSFingerprintProtosLogicalFingerprint*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (OWSFingerprintProtosLogicalFingerprint*)[[[OWSFingerprintProtosLogicalFingerprint builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (OWSFingerprintProtosLogicalFingerprintBuilder*) builder { - return [[OWSFingerprintProtosLogicalFingerprintBuilder alloc] init]; -} -+ (OWSFingerprintProtosLogicalFingerprintBuilder*) builderWithPrototype:(OWSFingerprintProtosLogicalFingerprint*) prototype { - return [[OWSFingerprintProtosLogicalFingerprint builder] mergeFrom:prototype]; -} -- (OWSFingerprintProtosLogicalFingerprintBuilder*) builder { - return [OWSFingerprintProtosLogicalFingerprint builder]; -} -- (OWSFingerprintProtosLogicalFingerprintBuilder*) toBuilder { - return [OWSFingerprintProtosLogicalFingerprint builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasIdentityData) { - [output appendFormat:@"%@%@: %@\n", indent, @"identityData", self.identityData]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (void) storeInDictionary:(NSMutableDictionary *)dictionary { - if (self.hasIdentityData) { - [dictionary setObject: self.identityData forKey: @"identityData"]; - } - [self.unknownFields storeInDictionary:dictionary]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[OWSFingerprintProtosLogicalFingerprint class]]) { - return NO; - } - OWSFingerprintProtosLogicalFingerprint *otherMessage = other; - return - self.hasIdentityData == otherMessage.hasIdentityData && - (!self.hasIdentityData || [self.identityData isEqual:otherMessage.identityData]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasIdentityData) { - hashCode = hashCode * 31 + [self.identityData hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface OWSFingerprintProtosLogicalFingerprintBuilder() -@property (strong) OWSFingerprintProtosLogicalFingerprint* resultLogicalFingerprint; -@end - -@implementation OWSFingerprintProtosLogicalFingerprintBuilder -@synthesize resultLogicalFingerprint; -- (instancetype) init { - if ((self = [super init])) { - self.resultLogicalFingerprint = [[OWSFingerprintProtosLogicalFingerprint alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return resultLogicalFingerprint; -} -- (OWSFingerprintProtosLogicalFingerprintBuilder*) clear { - self.resultLogicalFingerprint = [[OWSFingerprintProtosLogicalFingerprint alloc] init]; - return self; -} -- (OWSFingerprintProtosLogicalFingerprintBuilder*) clone { - return [OWSFingerprintProtosLogicalFingerprint builderWithPrototype:resultLogicalFingerprint]; -} -- (OWSFingerprintProtosLogicalFingerprint*) defaultInstance { - return [OWSFingerprintProtosLogicalFingerprint defaultInstance]; -} -- (OWSFingerprintProtosLogicalFingerprint*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (OWSFingerprintProtosLogicalFingerprint*) buildPartial { - OWSFingerprintProtosLogicalFingerprint* returnMe = resultLogicalFingerprint; - self.resultLogicalFingerprint = nil; - return returnMe; -} -- (OWSFingerprintProtosLogicalFingerprintBuilder*) mergeFrom:(OWSFingerprintProtosLogicalFingerprint*) other { - if (other == [OWSFingerprintProtosLogicalFingerprint defaultInstance]) { - return self; - } - if (other.hasIdentityData) { - [self setIdentityData:other.identityData]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (OWSFingerprintProtosLogicalFingerprintBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (OWSFingerprintProtosLogicalFingerprintBuilder*) 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: { - [self setIdentityData:[input readData]]; - break; - } - } - } -} -- (BOOL) hasIdentityData { - return resultLogicalFingerprint.hasIdentityData; -} -- (NSData*) identityData { - return resultLogicalFingerprint.identityData; -} -- (OWSFingerprintProtosLogicalFingerprintBuilder*) setIdentityData:(NSData*) value { - resultLogicalFingerprint.hasIdentityData = YES; - resultLogicalFingerprint.identityData = value; - return self; -} -- (OWSFingerprintProtosLogicalFingerprintBuilder*) clearIdentityData { - resultLogicalFingerprint.hasIdentityData = NO; - resultLogicalFingerprint.identityData = [NSData data]; - return self; -} -@end - -@interface OWSFingerprintProtosLogicalFingerprints () -@property UInt32 version; -@property (strong) OWSFingerprintProtosLogicalFingerprint* localFingerprint; -@property (strong) OWSFingerprintProtosLogicalFingerprint* remoteFingerprint; -@end - -@implementation OWSFingerprintProtosLogicalFingerprints - -- (BOOL) hasVersion { - return !!hasVersion_; -} -- (void) setHasVersion:(BOOL) _value_ { - hasVersion_ = !!_value_; -} -@synthesize version; -- (BOOL) hasLocalFingerprint { - return !!hasLocalFingerprint_; -} -- (void) setHasLocalFingerprint:(BOOL) _value_ { - hasLocalFingerprint_ = !!_value_; -} -@synthesize localFingerprint; -- (BOOL) hasRemoteFingerprint { - return !!hasRemoteFingerprint_; -} -- (void) setHasRemoteFingerprint:(BOOL) _value_ { - hasRemoteFingerprint_ = !!_value_; -} -@synthesize remoteFingerprint; -- (instancetype) init { - if ((self = [super init])) { - self.version = 0; - self.localFingerprint = [OWSFingerprintProtosLogicalFingerprint defaultInstance]; - self.remoteFingerprint = [OWSFingerprintProtosLogicalFingerprint defaultInstance]; - } - return self; -} -static OWSFingerprintProtosLogicalFingerprints* defaultOWSFingerprintProtosLogicalFingerprintsInstance = nil; -+ (void) initialize { - if (self == [OWSFingerprintProtosLogicalFingerprints class]) { - defaultOWSFingerprintProtosLogicalFingerprintsInstance = [[OWSFingerprintProtosLogicalFingerprints alloc] init]; - } -} -+ (instancetype) defaultInstance { - return defaultOWSFingerprintProtosLogicalFingerprintsInstance; -} -- (instancetype) defaultInstance { - return defaultOWSFingerprintProtosLogicalFingerprintsInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasVersion) { - [output writeUInt32:1 value:self.version]; - } - if (self.hasLocalFingerprint) { - [output writeMessage:2 value:self.localFingerprint]; - } - if (self.hasRemoteFingerprint) { - [output writeMessage:3 value:self.remoteFingerprint]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasVersion) { - size_ += computeUInt32Size(1, self.version); - } - if (self.hasLocalFingerprint) { - size_ += computeMessageSize(2, self.localFingerprint); - } - if (self.hasRemoteFingerprint) { - size_ += computeMessageSize(3, self.remoteFingerprint); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (OWSFingerprintProtosLogicalFingerprints*) parseFromData:(NSData*) data { - return (OWSFingerprintProtosLogicalFingerprints*)[[[OWSFingerprintProtosLogicalFingerprints builder] mergeFromData:data] build]; -} -+ (OWSFingerprintProtosLogicalFingerprints*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (OWSFingerprintProtosLogicalFingerprints*)[[[OWSFingerprintProtosLogicalFingerprints builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (OWSFingerprintProtosLogicalFingerprints*) parseFromInputStream:(NSInputStream*) input { - return (OWSFingerprintProtosLogicalFingerprints*)[[[OWSFingerprintProtosLogicalFingerprints builder] mergeFromInputStream:input] build]; -} -+ (OWSFingerprintProtosLogicalFingerprints*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (OWSFingerprintProtosLogicalFingerprints*)[[[OWSFingerprintProtosLogicalFingerprints builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (OWSFingerprintProtosLogicalFingerprints*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (OWSFingerprintProtosLogicalFingerprints*)[[[OWSFingerprintProtosLogicalFingerprints builder] mergeFromCodedInputStream:input] build]; -} -+ (OWSFingerprintProtosLogicalFingerprints*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (OWSFingerprintProtosLogicalFingerprints*)[[[OWSFingerprintProtosLogicalFingerprints builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (OWSFingerprintProtosLogicalFingerprintsBuilder*) builder { - return [[OWSFingerprintProtosLogicalFingerprintsBuilder alloc] init]; -} -+ (OWSFingerprintProtosLogicalFingerprintsBuilder*) builderWithPrototype:(OWSFingerprintProtosLogicalFingerprints*) prototype { - return [[OWSFingerprintProtosLogicalFingerprints builder] mergeFrom:prototype]; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) builder { - return [OWSFingerprintProtosLogicalFingerprints builder]; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) toBuilder { - return [OWSFingerprintProtosLogicalFingerprints builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasVersion) { - [output appendFormat:@"%@%@: %@\n", indent, @"version", [NSNumber numberWithInteger:self.version]]; - } - if (self.hasLocalFingerprint) { - [output appendFormat:@"%@%@ {\n", indent, @"localFingerprint"]; - [self.localFingerprint writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - if (self.hasRemoteFingerprint) { - [output appendFormat:@"%@%@ {\n", indent, @"remoteFingerprint"]; - [self.remoteFingerprint writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (void) storeInDictionary:(NSMutableDictionary *)dictionary { - if (self.hasVersion) { - [dictionary setObject: [NSNumber numberWithInteger:self.version] forKey: @"version"]; - } - if (self.hasLocalFingerprint) { - NSMutableDictionary *messageDictionary = [NSMutableDictionary dictionary]; - [self.localFingerprint storeInDictionary:messageDictionary]; - [dictionary setObject:[NSDictionary dictionaryWithDictionary:messageDictionary] forKey:@"localFingerprint"]; - } - if (self.hasRemoteFingerprint) { - NSMutableDictionary *messageDictionary = [NSMutableDictionary dictionary]; - [self.remoteFingerprint storeInDictionary:messageDictionary]; - [dictionary setObject:[NSDictionary dictionaryWithDictionary:messageDictionary] forKey:@"remoteFingerprint"]; - } - [self.unknownFields storeInDictionary:dictionary]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[OWSFingerprintProtosLogicalFingerprints class]]) { - return NO; - } - OWSFingerprintProtosLogicalFingerprints *otherMessage = other; - return - self.hasVersion == otherMessage.hasVersion && - (!self.hasVersion || self.version == otherMessage.version) && - self.hasLocalFingerprint == otherMessage.hasLocalFingerprint && - (!self.hasLocalFingerprint || [self.localFingerprint isEqual:otherMessage.localFingerprint]) && - self.hasRemoteFingerprint == otherMessage.hasRemoteFingerprint && - (!self.hasRemoteFingerprint || [self.remoteFingerprint isEqual:otherMessage.remoteFingerprint]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasVersion) { - hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.version] hash]; - } - if (self.hasLocalFingerprint) { - hashCode = hashCode * 31 + [self.localFingerprint hash]; - } - if (self.hasRemoteFingerprint) { - hashCode = hashCode * 31 + [self.remoteFingerprint hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface OWSFingerprintProtosLogicalFingerprintsBuilder() -@property (strong) OWSFingerprintProtosLogicalFingerprints* resultLogicalFingerprints; -@end - -@implementation OWSFingerprintProtosLogicalFingerprintsBuilder -@synthesize resultLogicalFingerprints; -- (instancetype) init { - if ((self = [super init])) { - self.resultLogicalFingerprints = [[OWSFingerprintProtosLogicalFingerprints alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return resultLogicalFingerprints; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) clear { - self.resultLogicalFingerprints = [[OWSFingerprintProtosLogicalFingerprints alloc] init]; - return self; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) clone { - return [OWSFingerprintProtosLogicalFingerprints builderWithPrototype:resultLogicalFingerprints]; -} -- (OWSFingerprintProtosLogicalFingerprints*) defaultInstance { - return [OWSFingerprintProtosLogicalFingerprints defaultInstance]; -} -- (OWSFingerprintProtosLogicalFingerprints*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (OWSFingerprintProtosLogicalFingerprints*) buildPartial { - OWSFingerprintProtosLogicalFingerprints* returnMe = resultLogicalFingerprints; - self.resultLogicalFingerprints = nil; - return returnMe; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) mergeFrom:(OWSFingerprintProtosLogicalFingerprints*) other { - if (other == [OWSFingerprintProtosLogicalFingerprints defaultInstance]) { - return self; - } - if (other.hasVersion) { - [self setVersion:other.version]; - } - if (other.hasLocalFingerprint) { - [self mergeLocalFingerprint:other.localFingerprint]; - } - if (other.hasRemoteFingerprint) { - [self mergeRemoteFingerprint:other.remoteFingerprint]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) 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: { - [self setVersion:[input readUInt32]]; - break; - } - case 18: { - OWSFingerprintProtosLogicalFingerprintBuilder* subBuilder = [OWSFingerprintProtosLogicalFingerprint builder]; - if (self.hasLocalFingerprint) { - [subBuilder mergeFrom:self.localFingerprint]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setLocalFingerprint:[subBuilder buildPartial]]; - break; - } - case 26: { - OWSFingerprintProtosLogicalFingerprintBuilder* subBuilder = [OWSFingerprintProtosLogicalFingerprint builder]; - if (self.hasRemoteFingerprint) { - [subBuilder mergeFrom:self.remoteFingerprint]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setRemoteFingerprint:[subBuilder buildPartial]]; - break; - } - } - } -} -- (BOOL) hasVersion { - return resultLogicalFingerprints.hasVersion; -} -- (UInt32) version { - return resultLogicalFingerprints.version; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) setVersion:(UInt32) value { - resultLogicalFingerprints.hasVersion = YES; - resultLogicalFingerprints.version = value; - return self; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) clearVersion { - resultLogicalFingerprints.hasVersion = NO; - resultLogicalFingerprints.version = 0; - return self; -} -- (BOOL) hasLocalFingerprint { - return resultLogicalFingerprints.hasLocalFingerprint; -} -- (OWSFingerprintProtosLogicalFingerprint*) localFingerprint { - return resultLogicalFingerprints.localFingerprint; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) setLocalFingerprint:(OWSFingerprintProtosLogicalFingerprint*) value { - resultLogicalFingerprints.hasLocalFingerprint = YES; - resultLogicalFingerprints.localFingerprint = value; - return self; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) setLocalFingerprintBuilder:(OWSFingerprintProtosLogicalFingerprintBuilder*) builderForValue { - return [self setLocalFingerprint:[builderForValue build]]; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) mergeLocalFingerprint:(OWSFingerprintProtosLogicalFingerprint*) value { - if (resultLogicalFingerprints.hasLocalFingerprint && - resultLogicalFingerprints.localFingerprint != [OWSFingerprintProtosLogicalFingerprint defaultInstance]) { - resultLogicalFingerprints.localFingerprint = - [[[OWSFingerprintProtosLogicalFingerprint builderWithPrototype:resultLogicalFingerprints.localFingerprint] mergeFrom:value] buildPartial]; - } else { - resultLogicalFingerprints.localFingerprint = value; - } - resultLogicalFingerprints.hasLocalFingerprint = YES; - return self; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) clearLocalFingerprint { - resultLogicalFingerprints.hasLocalFingerprint = NO; - resultLogicalFingerprints.localFingerprint = [OWSFingerprintProtosLogicalFingerprint defaultInstance]; - return self; -} -- (BOOL) hasRemoteFingerprint { - return resultLogicalFingerprints.hasRemoteFingerprint; -} -- (OWSFingerprintProtosLogicalFingerprint*) remoteFingerprint { - return resultLogicalFingerprints.remoteFingerprint; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) setRemoteFingerprint:(OWSFingerprintProtosLogicalFingerprint*) value { - resultLogicalFingerprints.hasRemoteFingerprint = YES; - resultLogicalFingerprints.remoteFingerprint = value; - return self; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) setRemoteFingerprintBuilder:(OWSFingerprintProtosLogicalFingerprintBuilder*) builderForValue { - return [self setRemoteFingerprint:[builderForValue build]]; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) mergeRemoteFingerprint:(OWSFingerprintProtosLogicalFingerprint*) value { - if (resultLogicalFingerprints.hasRemoteFingerprint && - resultLogicalFingerprints.remoteFingerprint != [OWSFingerprintProtosLogicalFingerprint defaultInstance]) { - resultLogicalFingerprints.remoteFingerprint = - [[[OWSFingerprintProtosLogicalFingerprint builderWithPrototype:resultLogicalFingerprints.remoteFingerprint] mergeFrom:value] buildPartial]; - } else { - resultLogicalFingerprints.remoteFingerprint = value; - } - resultLogicalFingerprints.hasRemoteFingerprint = YES; - return self; -} -- (OWSFingerprintProtosLogicalFingerprintsBuilder*) clearRemoteFingerprint { - resultLogicalFingerprints.hasRemoteFingerprint = NO; - resultLogicalFingerprints.remoteFingerprint = [OWSFingerprintProtosLogicalFingerprint defaultInstance]; - return self; -} -@end - - -// @@protoc_insertion_point(global_scope)