|
|
|
@ -34,7 +34,13 @@ public enum UnidentifiedAccessMode: Int {
|
|
|
|
|
func setUnidentifiedAccessMode(_ mode: UnidentifiedAccessMode, recipientId: String)
|
|
|
|
|
|
|
|
|
|
@objc
|
|
|
|
|
func getAccess(forRecipientId recipientId: RecipientIdentifier) -> SSKUnidentifiedAccessPair?
|
|
|
|
|
func getRandomAccess() -> SSKUnidentifiedAccess?
|
|
|
|
|
|
|
|
|
|
@objc
|
|
|
|
|
func getAccess(forRecipientId recipientId: RecipientIdentifier) -> SSKUnidentifiedAccess?
|
|
|
|
|
|
|
|
|
|
@objc
|
|
|
|
|
func unidentifiedAccessMode(recipientId: RecipientIdentifier) -> UnidentifiedAccessMode
|
|
|
|
|
|
|
|
|
|
// Returns the UD access key for a given recipient if:
|
|
|
|
|
//
|
|
|
|
@ -124,43 +130,36 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager {
|
|
|
|
|
// MARK: - Recipient state
|
|
|
|
|
|
|
|
|
|
@objc
|
|
|
|
|
public func getAccess(forRecipientId recipientId: RecipientIdentifier) -> SSKUnidentifiedAccessPair? {
|
|
|
|
|
let theirAccessMode = unidentifiedAccessMode(recipientId: recipientId)
|
|
|
|
|
guard theirAccessMode == .enabled || theirAccessMode == .unrestricted else {
|
|
|
|
|
public func getRandomAccess() -> SSKUnidentifiedAccess? {
|
|
|
|
|
guard let ourSenderCertificate = senderCertificate() else {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
guard let theirAccessKey = enabledUDAccessKeyForRecipient(recipientId) else {
|
|
|
|
|
return nil
|
|
|
|
|
let theirAccessKey = SMKUDAccessKey(randomKeyData: ())
|
|
|
|
|
|
|
|
|
|
return SSKUnidentifiedAccess(accessKey: theirAccessKey, senderCertificate: ourSenderCertificate)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
guard let ourSenderCertificate = senderCertificate() else {
|
|
|
|
|
@objc
|
|
|
|
|
public func getAccess(forRecipientId recipientId: RecipientIdentifier) -> SSKUnidentifiedAccess? {
|
|
|
|
|
let theirAccessMode = unidentifiedAccessMode(recipientId: recipientId)
|
|
|
|
|
guard theirAccessMode == .enabled || theirAccessMode == .unrestricted else {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
guard let ourAccessKey: SMKUDAccessKey = {
|
|
|
|
|
if shouldAllowUnrestrictedAccessLocal() {
|
|
|
|
|
return SMKUDAccessKey(randomKeyData: ())
|
|
|
|
|
} else {
|
|
|
|
|
guard let localNumber = tsAccountManager.localNumber() else {
|
|
|
|
|
owsFailDebug("localNumber was unexpectedly nil")
|
|
|
|
|
guard let theirAccessKey = enabledUDAccessKeyForRecipient(recipientId) else {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return enabledUDAccessKeyForRecipient(localNumber)
|
|
|
|
|
}
|
|
|
|
|
}() else {
|
|
|
|
|
guard let ourSenderCertificate = senderCertificate() else {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let targetUnidentifiedAccess = SSKUnidentifiedAccess(accessKey: theirAccessKey, senderCertificate: ourSenderCertificate)
|
|
|
|
|
let selfUnidentifiedAccess = SSKUnidentifiedAccess(accessKey: ourAccessKey, senderCertificate: ourSenderCertificate)
|
|
|
|
|
return SSKUnidentifiedAccessPair(targetUnidentifiedAccess: targetUnidentifiedAccess,
|
|
|
|
|
selfUnidentifiedAccess: selfUnidentifiedAccess)
|
|
|
|
|
return SSKUnidentifiedAccess(accessKey: theirAccessKey, senderCertificate: ourSenderCertificate)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@objc
|
|
|
|
|
func unidentifiedAccessMode(recipientId: RecipientIdentifier) -> UnidentifiedAccessMode {
|
|
|
|
|
public func unidentifiedAccessMode(recipientId: RecipientIdentifier) -> UnidentifiedAccessMode {
|
|
|
|
|
guard let existingRawValue = dbConnection.object(forKey: recipientId, inCollection: kUnidentifiedAccessCollection) as? Int else {
|
|
|
|
|
return .unknown
|
|
|
|
|
}
|
|
|
|
|