Rename profilePictureEncryptionKey → profileEncryptionKey
This commit is contained in:
parent
519ffa4405
commit
ca862096b4
|
@ -6,8 +6,8 @@ public class Contact : NSObject, NSCoding { // NSObject/NSCoding conformance is
|
|||
@objc public var profilePictureURL: String?
|
||||
/// The file name of the contact's profile picture on local storage.
|
||||
@objc public var profilePictureFileName: String?
|
||||
/// The key with which the profile picture is encrypted.
|
||||
@objc public var profilePictureEncryptionKey: OWSAES256Key?
|
||||
/// The key with which the profile is encrypted.
|
||||
@objc public var profileEncryptionKey: OWSAES256Key?
|
||||
/// The ID of the thread associated with this contact.
|
||||
@objc public var threadID: String?
|
||||
/// This flag is used to determine whether we should auto-download files sent by this contact.
|
||||
|
@ -49,8 +49,8 @@ public class Contact : NSObject, NSCoding { // NSObject/NSCoding conformance is
|
|||
|
||||
// MARK: Validation
|
||||
public var isValid: Bool {
|
||||
if profilePictureURL != nil { return (profilePictureEncryptionKey != nil) }
|
||||
if profilePictureEncryptionKey != nil { return (profilePictureURL != nil) }
|
||||
if profilePictureURL != nil { return (profileEncryptionKey != nil) }
|
||||
if profileEncryptionKey != nil { return (profilePictureURL != nil) }
|
||||
return true
|
||||
}
|
||||
|
||||
|
@ -63,7 +63,7 @@ public class Contact : NSObject, NSCoding { // NSObject/NSCoding conformance is
|
|||
if let nickname = coder.decodeObject(forKey: "nickname") as! String? { self.nickname = nickname }
|
||||
if let profilePictureURL = coder.decodeObject(forKey: "profilePictureURL") as! String? { self.profilePictureURL = profilePictureURL }
|
||||
if let profilePictureFileName = coder.decodeObject(forKey: "profilePictureFileName") as! String? { self.profilePictureFileName = profilePictureFileName }
|
||||
if let profilePictureEncryptionKey = coder.decodeObject(forKey: "profilePictureEncryptionKey") as! OWSAES256Key? { self.profilePictureEncryptionKey = profilePictureEncryptionKey }
|
||||
if let profileEncryptionKey = coder.decodeObject(forKey: "profilePictureEncryptionKey") as! OWSAES256Key? { self.profileEncryptionKey = profileEncryptionKey }
|
||||
if let threadID = coder.decodeObject(forKey: "threadID") as! String? { self.threadID = threadID }
|
||||
}
|
||||
|
||||
|
@ -73,7 +73,7 @@ public class Contact : NSObject, NSCoding { // NSObject/NSCoding conformance is
|
|||
coder.encode(nickname, forKey: "nickname")
|
||||
coder.encode(profilePictureURL, forKey: "profilePictureURL")
|
||||
coder.encode(profilePictureFileName, forKey: "profilePictureFileName")
|
||||
coder.encode(profilePictureEncryptionKey, forKey: "profilePictureEncryptionKey")
|
||||
coder.encode(profileEncryptionKey, forKey: "profilePictureEncryptionKey")
|
||||
coder.encode(threadID, forKey: "threadID")
|
||||
coder.encode(isTrusted, forKey: "isTrusted")
|
||||
}
|
||||
|
|
|
@ -195,7 +195,7 @@ extension MessageReceiver {
|
|||
for contactInfo in message.contacts {
|
||||
let sessionID = contactInfo.publicKey!
|
||||
let contact = Contact(sessionID: sessionID)
|
||||
contact.profilePictureEncryptionKey = given(contactInfo.profileKey) { OWSAES256Key(data: $0)! }
|
||||
contact.profileEncryptionKey = given(contactInfo.profileKey) { OWSAES256Key(data: $0)! }
|
||||
contact.profilePictureURL = contactInfo.profilePictureURL
|
||||
contact.name = contactInfo.displayName
|
||||
Storage.shared.setContact(contact, using: transaction)
|
||||
|
@ -321,7 +321,7 @@ extension MessageReceiver {
|
|||
}
|
||||
// Profile picture & profile key
|
||||
if let profileKey = profileKey, let profilePictureURL = profilePictureURL, profileKey.keyData.count == kAES256_KeyByteLength,
|
||||
profileKey != contact.profilePictureEncryptionKey {
|
||||
profileKey != contact.profileEncryptionKey {
|
||||
let shouldUpdate: Bool
|
||||
if isCurrentUser {
|
||||
shouldUpdate = given(userDefaults[.lastProfilePictureUpdate]) { sentTimestamp > UInt64($0.timeIntervalSince1970 * 1000) } ?? true
|
||||
|
@ -333,7 +333,7 @@ extension MessageReceiver {
|
|||
userDefaults[.lastProfilePictureUpdate] = Date(timeIntervalSince1970: TimeInterval(sentTimestamp / 1000))
|
||||
}
|
||||
contact.profilePictureURL = profilePictureURL
|
||||
contact.profilePictureEncryptionKey = profileKey
|
||||
contact.profileEncryptionKey = profileKey
|
||||
}
|
||||
}
|
||||
// Persist changes
|
||||
|
|
|
@ -145,7 +145,7 @@ public final class MessageSender : NSObject {
|
|||
// Attach the user's profile if needed
|
||||
if let message = message as? VisibleMessage {
|
||||
guard let name = storage.getUser()?.name else { handleFailure(with: Error.noUsername, using: transaction); return promise }
|
||||
if let profileKey = storage.getUser()?.profilePictureEncryptionKey?.keyData, let profilePictureURL = storage.getUser()?.profilePictureURL {
|
||||
if let profileKey = storage.getUser()?.profileEncryptionKey?.keyData, let profilePictureURL = storage.getUser()?.profilePictureURL {
|
||||
message.profile = VisibleMessage.Profile(displayName: name, profileKey: profileKey, profilePictureURL: profilePictureURL)
|
||||
} else {
|
||||
message.profile = VisibleMessage.Profile(displayName: name)
|
||||
|
@ -285,7 +285,7 @@ public final class MessageSender : NSObject {
|
|||
guard message.isValid else { handleFailure(with: Error.invalidMessage, using: transaction); return promise }
|
||||
// Attach the user's profile
|
||||
guard let name = storage.getUser()?.name else { handleFailure(with: Error.noUsername, using: transaction); return promise }
|
||||
if let profileKey = storage.getUser()?.profilePictureEncryptionKey?.keyData, let profilePictureURL = storage.getUser()?.profilePictureURL {
|
||||
if let profileKey = storage.getUser()?.profileEncryptionKey?.keyData, let profilePictureURL = storage.getUser()?.profilePictureURL {
|
||||
message.profile = VisibleMessage.Profile(displayName: name, profileKey: profileKey, profilePictureURL: profilePictureURL)
|
||||
} else {
|
||||
message.profile = VisibleMessage.Profile(displayName: name)
|
||||
|
|
|
@ -21,7 +21,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
+ (OWSAES256Key *)localProfileKey
|
||||
{
|
||||
return [[LKStorage.shared getUser] profilePictureEncryptionKey];
|
||||
return [[LKStorage.shared getUser] profileEncryptionKey];
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
|
|
|
@ -6,7 +6,7 @@ extension ConfigurationMessage {
|
|||
guard let user = storage.getUser() else { return nil }
|
||||
let displayName = user.name
|
||||
let profilePictureURL = user.profilePictureURL
|
||||
let profileKey = user.profilePictureEncryptionKey?.keyData
|
||||
let profileKey = user.profileEncryptionKey?.keyData
|
||||
var closedGroups: Set<ClosedGroup> = []
|
||||
var openGroups: Set<String> = []
|
||||
var contacts: Set<Contact> = []
|
||||
|
@ -39,7 +39,7 @@ extension ConfigurationMessage {
|
|||
guard let thread = TSContactThread.fetch(uniqueId: threadID, transaction: transaction), thread.shouldBeVisible
|
||||
&& !SSKEnvironment.shared.blockingManager.isRecipientIdBlocked(publicKey) else { return }
|
||||
let profilePictureURL = contact.profilePictureURL
|
||||
let profileKey = contact.profilePictureEncryptionKey?.keyData
|
||||
let profileKey = contact.profileEncryptionKey?.keyData
|
||||
let contact = ConfigurationMessage.Contact(publicKey: publicKey, displayName: contact.name ?? publicKey,
|
||||
profilePictureURL: profilePictureURL, profileKey: profileKey)
|
||||
contacts.insert(contact)
|
||||
|
|
|
@ -275,7 +275,7 @@ typedef void (^ProfileManagerFailureBlock)(NSError *error);
|
|||
[NSUserDefaults.standardUserDefaults setObject:[NSDate new] forKey:@"lastProfilePictureUpload"];
|
||||
|
||||
SNContact *user = [LKStorage.shared getUser];
|
||||
user.profilePictureEncryptionKey = newProfileKey;
|
||||
user.profileEncryptionKey = newProfileKey;
|
||||
[LKStorage writeWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
[LKStorage.shared setContact:user usingTransaction:transaction];
|
||||
} completion:^{
|
||||
|
@ -288,7 +288,7 @@ typedef void (^ProfileManagerFailureBlock)(NSError *error);
|
|||
// is a quick and dirty workaround.
|
||||
if ([result isKindOfClass:NSString.class]) {
|
||||
SNContact *user = [LKStorage.shared getUser];
|
||||
user.profilePictureEncryptionKey = newProfileKey;
|
||||
user.profileEncryptionKey = newProfileKey;
|
||||
[LKStorage writeWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
[LKStorage.shared setContact:user usingTransaction:transaction];
|
||||
} completion:^{
|
||||
|
@ -301,7 +301,7 @@ typedef void (^ProfileManagerFailureBlock)(NSError *error);
|
|||
} else {
|
||||
// Update our profile key and set the url to nil if avatar data is nil
|
||||
SNContact *user = [LKStorage.shared getUser];
|
||||
user.profilePictureEncryptionKey = newProfileKey;
|
||||
user.profileEncryptionKey = newProfileKey;
|
||||
user.profilePictureURL = nil;
|
||||
user.profilePictureFileName = nil;
|
||||
[LKStorage writeWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
|
@ -363,7 +363,7 @@ typedef void (^ProfileManagerFailureBlock)(NSError *error);
|
|||
{
|
||||
NSString *userPublicKey = [SNGeneralUtilities getUserPublicKey];
|
||||
SNContact *contact = [LKStorage.shared getContactWithSessionID:userPublicKey];
|
||||
contact.profilePictureEncryptionKey = [OWSAES256Key generateRandomKey];
|
||||
contact.profileEncryptionKey = [OWSAES256Key generateRandomKey];
|
||||
contact.profilePictureURL = nil;
|
||||
contact.profilePictureFileName = nil;
|
||||
[LKStorage writeWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
|
@ -387,12 +387,12 @@ typedef void (^ProfileManagerFailureBlock)(NSError *error);
|
|||
SNContact *contact = [LKStorage.shared getContactWithSessionID:recipientId];
|
||||
|
||||
OWSAssertDebug(contact);
|
||||
if (contact.profilePictureEncryptionKey != nil && [contact.profilePictureEncryptionKey.keyData isEqual:profileKey.keyData]) {
|
||||
if (contact.profileEncryptionKey != nil && [contact.profileEncryptionKey.keyData isEqual:profileKey.keyData]) {
|
||||
// Ignore redundant update.
|
||||
return;
|
||||
}
|
||||
|
||||
contact.profilePictureEncryptionKey = profileKey;
|
||||
contact.profileEncryptionKey = profileKey;
|
||||
contact.profilePictureURL = nil;
|
||||
contact.profilePictureFileName = nil;
|
||||
|
||||
|
@ -426,7 +426,7 @@ typedef void (^ProfileManagerFailureBlock)(NSError *error);
|
|||
SNContact *contact = [LKStorage.shared getContactWithSessionID:recipientId];
|
||||
OWSAssertDebug(contact);
|
||||
|
||||
return contact.profilePictureEncryptionKey;
|
||||
return contact.profileEncryptionKey;
|
||||
}
|
||||
|
||||
- (nullable UIImage *)profileAvatarForRecipientId:(NSString *)recipientId
|
||||
|
@ -478,12 +478,12 @@ typedef void (^ProfileManagerFailureBlock)(NSError *error);
|
|||
}
|
||||
NSString *_Nullable avatarUrlPathAtStart = contact.profilePictureURL;
|
||||
|
||||
BOOL hasProfileEncryptionKey = (contact.profilePictureEncryptionKey != nil && contact.profilePictureEncryptionKey.keyData.length > 0);
|
||||
BOOL hasProfileEncryptionKey = (contact.profileEncryptionKey != nil && contact.profileEncryptionKey.keyData.length > 0);
|
||||
if (!hasProfileEncryptionKey || !hasProfilePictureURL) {
|
||||
return;
|
||||
}
|
||||
|
||||
OWSAES256Key *profileKeyAtStart = contact.profilePictureEncryptionKey;
|
||||
OWSAES256Key *profileKeyAtStart = contact.profileEncryptionKey;
|
||||
|
||||
NSString *fileName = [self generateAvatarFilename];
|
||||
NSString *filePath = [OWSUserProfile profileAvatarFilepathWithFilename:fileName];
|
||||
|
@ -522,9 +522,9 @@ typedef void (^ProfileManagerFailureBlock)(NSError *error);
|
|||
|
||||
SNContact *latestContact = [LKStorage.shared getContactWithSessionID:contact.sessionID];
|
||||
|
||||
BOOL hasProfileEncryptionKey = (latestContact.profilePictureEncryptionKey != nil
|
||||
&& latestContact.profilePictureEncryptionKey.keyData.length > 0);
|
||||
if (!hasProfileEncryptionKey || ![latestContact.profilePictureEncryptionKey isEqual:contact.profilePictureEncryptionKey]) {
|
||||
BOOL hasProfileEncryptionKey = (latestContact.profileEncryptionKey != nil
|
||||
&& latestContact.profileEncryptionKey.keyData.length > 0);
|
||||
if (!hasProfileEncryptionKey || ![latestContact.profileEncryptionKey isEqual:contact.profileEncryptionKey]) {
|
||||
OWSLogWarn(@"Ignoring avatar download for obsolete user profile.");
|
||||
} else if (![avatarUrlPathAtStart isEqualToString:latestContact.profilePictureURL]) {
|
||||
OWSLogInfo(@"avatar url has changed during download");
|
||||
|
@ -563,13 +563,17 @@ typedef void (^ProfileManagerFailureBlock)(NSError *error);
|
|||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
||||
SNContact *contact = [LKStorage.shared getContactWithSessionID:recipientId];
|
||||
|
||||
if (!contact.profilePictureEncryptionKey) { return; }
|
||||
if (!contact.profileEncryptionKey) { return; }
|
||||
|
||||
NSString *_Nullable profileName =
|
||||
[self decryptProfileNameData:profileNameEncrypted profileKey:contact.profilePictureEncryptionKey];
|
||||
[self decryptProfileNameData:profileNameEncrypted profileKey:contact.profileEncryptionKey];
|
||||
|
||||
contact.name = profileName;
|
||||
contact.profilePictureURL = avatarUrlPath;
|
||||
|
||||
[LKStorage writeWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
[LKStorage.shared setContact:contact usingTransaction:transaction];
|
||||
}];
|
||||
|
||||
// Whenever we change avatarUrlPath, OWSUserProfile clears avatarFileName.
|
||||
// So if avatarUrlPath is set and avatarFileName is not set, we should to
|
||||
|
@ -659,7 +663,7 @@ typedef void (^ProfileManagerFailureBlock)(NSError *error);
|
|||
|
||||
- (nullable NSData *)encryptProfileData:(nullable NSData *)data
|
||||
{
|
||||
OWSAES256Key *localProfileKey = [LKStorage.shared getUser].profilePictureEncryptionKey;
|
||||
OWSAES256Key *localProfileKey = [LKStorage.shared getUser].profileEncryptionKey;
|
||||
|
||||
return [self encryptProfileData:data profileKey:localProfileKey];
|
||||
}
|
||||
|
@ -688,7 +692,7 @@ typedef void (^ProfileManagerFailureBlock)(NSError *error);
|
|||
[paddedNameData increaseLengthBy:paddingByteCount];
|
||||
OWSAssertDebug(paddedNameData.length == kOWSProfileManager_NameDataLength);
|
||||
|
||||
OWSAES256Key *localProfileKey = [LKStorage.shared getUser].profilePictureEncryptionKey;
|
||||
OWSAES256Key *localProfileKey = [LKStorage.shared getUser].profileEncryptionKey;
|
||||
|
||||
return [self encryptProfileData:[paddedNameData copy] profileKey:localProfileKey];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue