Migrate to fingerprint proto wrappers.

pull/1/head
Matthew Chen 6 years ago
parent cace335d45
commit 50db472be5

@ -5,9 +5,9 @@
#import "OWSFingerprint.h"
#import "NSData+Base64.h"
#import "OWSError.h"
#import "OWSFingerprintProtos.pb.h"
#import <AxolotlKit/NSData+keyVersionByte.h>
#import <CommonCrypto/CommonDigest.h>
#import <SignalServiceKit/SignalServiceKit-Swift.h>
#import <UIKit/UIImage.h>
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);

@ -1,189 +0,0 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
#import <ProtocolBuffers/ProtocolBuffers.h>
// @@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<GeneratedMessageProtocol> {
@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<GeneratedMessageProtocol> {
@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)

@ -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)
Loading…
Cancel
Save