diff --git a/SignalServiceKit/src/Messages/UD/OWSUDManager.swift b/SignalServiceKit/src/Messages/UD/OWSUDManager.swift index 8fa6666cf..95e5a8142 100644 --- a/SignalServiceKit/src/Messages/UD/OWSUDManager.swift +++ b/SignalServiceKit/src/Messages/UD/OWSUDManager.swift @@ -249,7 +249,7 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager { requireSyncAccess: Bool) -> OWSUDAccess? { guard isUDEnabled() else { if isUDVerboseLoggingEnabled() { - Logger.info("UD Send disabled for \(recipientId), UD disabled.") + Logger.info("UD disabled for \(recipientId), UD disabled.") } return nil } @@ -257,7 +257,7 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager { if requireSyncAccess { guard let localNumber = tsAccountManager.localNumber() else { if isUDVerboseLoggingEnabled() { - Logger.info("UD Send disabled for \(recipientId), no local number.") + Logger.info("UD disabled for \(recipientId), no local number.") } return nil } @@ -265,7 +265,7 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager { let selfAccessMode = unidentifiedAccessMode(forRecipientId: localNumber) guard selfAccessMode != .disabled else { if isUDVerboseLoggingEnabled() { - Logger.info("UD Send disabled for \(recipientId), UD disabled for sync messages.") + Logger.info("UD disabled for \(recipientId), UD disabled for sync messages.") } return nil } @@ -273,32 +273,46 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager { } let accessMode = unidentifiedAccessMode(forRecipientId: recipientId) - if accessMode == .unrestricted { - // Unrestricted users should use a derived key if possible, - // and fall back to a random key otherwise. + switch accessMode { + case .unrestricted: + // Unrestricted users should use a random key. if isUDVerboseLoggingEnabled() { - Logger.info("UD Send enabled for \(recipientId) with random key.") + Logger.info("UD enabled for \(recipientId) with random key.") } let udAccessKey = randomUDAccessKey() return OWSUDAccess(udAccessKey: udAccessKey, udAccessMode: accessMode, isRandomKey: true) - } - - guard accessMode == .enabled else { + case .unknown: + // Unknown users should use a derived key if possible, + // and otherwise use a random key. + if let udAccessKey = udAccessKey(forRecipientId: recipientId) { + if isUDVerboseLoggingEnabled() { + Logger.info("UD unknown for \(recipientId); trying random key.") + } + return OWSUDAccess(udAccessKey: udAccessKey, udAccessMode: accessMode, isRandomKey: false) + } else { + if isUDVerboseLoggingEnabled() { + Logger.info("UD unknown for \(recipientId); trying random key.") + } + let udAccessKey = randomUDAccessKey() + return OWSUDAccess(udAccessKey: udAccessKey, udAccessMode: accessMode, isRandomKey: true) + } + case .enabled: + guard let udAccessKey = udAccessKey(forRecipientId: recipientId) else { + if isUDVerboseLoggingEnabled() { + Logger.info("UD disabled for \(recipientId), no profile key for this recipient.") + } + return nil + } if isUDVerboseLoggingEnabled() { - Logger.info("UD Send disabled for \(recipientId), UD not enabled for this recipient.") + Logger.info("UD enabled for \(recipientId).") } - return nil - } - if isUDVerboseLoggingEnabled() { - Logger.info("UD Send enabled for \(recipientId).") - } - guard let udAccessKey = udAccessKey(forRecipientId: recipientId) else { + return OWSUDAccess(udAccessKey: udAccessKey, udAccessMode: accessMode, isRandomKey: false) + case .disabled: if isUDVerboseLoggingEnabled() { - Logger.info("UD Send disabled for \(recipientId), no profile key for this recipient.") + Logger.info("UD disabled for \(recipientId), UD not enabled for this recipient.") } return nil } - return OWSUDAccess(udAccessKey: udAccessKey, udAccessMode: accessMode, isRandomKey: false) } // MARK: - Sender Certificate