// // Copyright (c) 2017 Open Whisper Systems. All rights reserved. // #import "OWSFingerprintBuilder.h" #import "ContactsManagerProtocol.h" #import "OWSFingerprint.h" #import "OWSIdentityManager.h" #import "TSAccountManager.h" #import NS_ASSUME_NONNULL_BEGIN @interface OWSFingerprintBuilder () @property (nonatomic, readonly) TSAccountManager *accountManager; @property (nonatomic, readonly) id contactsManager; @end @implementation OWSFingerprintBuilder - (instancetype)initWithAccountManager:(TSAccountManager *)accountManager contactsManager:(id)contactsManager { self = [super init]; if (!self) { return self; } _accountManager = accountManager; _contactsManager = contactsManager; return self; } - (nullable OWSFingerprint *)fingerprintWithTheirSignalId:(NSString *)theirSignalId { NSData *_Nullable theirIdentityKey = [[OWSIdentityManager sharedManager] identityKeyForRecipientId:theirSignalId]; if (theirIdentityKey == nil) { OWSFail(@"%@ Missing their identity key", self.logTag); return nil; } return [self fingerprintWithTheirSignalId:theirSignalId theirIdentityKey:theirIdentityKey]; } - (OWSFingerprint *)fingerprintWithTheirSignalId:(NSString *)theirSignalId theirIdentityKey:(NSData *)theirIdentityKey { NSString *theirName = [self.contactsManager displayNameForPhoneIdentifier:theirSignalId]; NSString *mySignalId = [self.accountManager localNumber]; NSData *myIdentityKey = [[OWSIdentityManager sharedManager] identityKeyPair].publicKey; return [OWSFingerprint fingerprintWithMyStableId:mySignalId myIdentityKey:myIdentityKey theirStableId:theirSignalId theirIdentityKey:theirIdentityKey theirName:theirName]; } @end NS_ASSUME_NONNULL_END