Apply refinements to UD logic.

pull/1/head
Matthew Chen 7 years ago
parent 44f6774396
commit 7d8b20d091

@ -249,7 +249,7 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager {
requireSyncAccess: Bool) -> OWSUDAccess? { requireSyncAccess: Bool) -> OWSUDAccess? {
guard isUDEnabled() else { guard isUDEnabled() else {
if isUDVerboseLoggingEnabled() { if isUDVerboseLoggingEnabled() {
Logger.info("UD Send disabled for \(recipientId), UD disabled.") Logger.info("UD disabled for \(recipientId), UD disabled.")
} }
return nil return nil
} }
@ -257,7 +257,7 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager {
if requireSyncAccess { if requireSyncAccess {
guard let localNumber = tsAccountManager.localNumber() else { guard let localNumber = tsAccountManager.localNumber() else {
if isUDVerboseLoggingEnabled() { if isUDVerboseLoggingEnabled() {
Logger.info("UD Send disabled for \(recipientId), no local number.") Logger.info("UD disabled for \(recipientId), no local number.")
} }
return nil return nil
} }
@ -265,7 +265,7 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager {
let selfAccessMode = unidentifiedAccessMode(forRecipientId: localNumber) let selfAccessMode = unidentifiedAccessMode(forRecipientId: localNumber)
guard selfAccessMode != .disabled else { guard selfAccessMode != .disabled else {
if isUDVerboseLoggingEnabled() { 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 return nil
} }
@ -273,32 +273,46 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager {
} }
let accessMode = unidentifiedAccessMode(forRecipientId: recipientId) let accessMode = unidentifiedAccessMode(forRecipientId: recipientId)
if accessMode == .unrestricted { switch accessMode {
// Unrestricted users should use a derived key if possible, case .unrestricted:
// and fall back to a random key otherwise. // Unrestricted users should use a random key.
if isUDVerboseLoggingEnabled() { if isUDVerboseLoggingEnabled() {
Logger.info("UD Send enabled for \(recipientId) with random key.") Logger.info("UD enabled for \(recipientId) with random key.")
} }
let udAccessKey = randomUDAccessKey() let udAccessKey = randomUDAccessKey()
return OWSUDAccess(udAccessKey: udAccessKey, udAccessMode: accessMode, isRandomKey: true) return OWSUDAccess(udAccessKey: udAccessKey, udAccessMode: accessMode, isRandomKey: true)
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)
guard accessMode == .enabled else { } 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() { if isUDVerboseLoggingEnabled() {
Logger.info("UD Send disabled for \(recipientId), UD not enabled for this recipient.") Logger.info("UD disabled for \(recipientId), no profile key for this recipient.")
} }
return nil return nil
} }
if isUDVerboseLoggingEnabled() { if isUDVerboseLoggingEnabled() {
Logger.info("UD Send enabled for \(recipientId).") Logger.info("UD enabled for \(recipientId).")
} }
guard let udAccessKey = udAccessKey(forRecipientId: recipientId) else { return OWSUDAccess(udAccessKey: udAccessKey, udAccessMode: accessMode, isRandomKey: false)
case .disabled:
if isUDVerboseLoggingEnabled() { 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 nil
} }
return OWSUDAccess(udAccessKey: udAccessKey, udAccessMode: accessMode, isRandomKey: false)
} }
// MARK: - Sender Certificate // MARK: - Sender Certificate

Loading…
Cancel
Save