|
@@ -138,6 +138,7 @@ public struct AuthenticationPolicy : OptionSetType {
|
|
even if fingers are added or removed.
|
|
even if fingers are added or removed.
|
|
*/
|
|
*/
|
|
@available(iOS 8.0, OSX 10.10, *)
|
|
@available(iOS 8.0, OSX 10.10, *)
|
|
|
|
+ @available(watchOS, unavailable)
|
|
public static let UserPresence = AuthenticationPolicy(rawValue: 1 << 0)
|
|
public static let UserPresence = AuthenticationPolicy(rawValue: 1 << 0)
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -146,6 +147,8 @@ public struct AuthenticationPolicy : OptionSetType {
|
|
Touch ID even if fingers are added or removed.
|
|
Touch ID even if fingers are added or removed.
|
|
*/
|
|
*/
|
|
@available(iOS 9.0, *)
|
|
@available(iOS 9.0, *)
|
|
|
|
+ @available(OSX, unavailable)
|
|
|
|
+ @available(watchOS, unavailable)
|
|
public static let TouchIDAny = AuthenticationPolicy(rawValue: 1 << 1)
|
|
public static let TouchIDAny = AuthenticationPolicy(rawValue: 1 << 1)
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -154,12 +157,15 @@ public struct AuthenticationPolicy : OptionSetType {
|
|
When fingers are added or removed, the item is invalidated.
|
|
When fingers are added or removed, the item is invalidated.
|
|
*/
|
|
*/
|
|
@available(iOS 9.0, *)
|
|
@available(iOS 9.0, *)
|
|
|
|
+ @available(OSX, unavailable)
|
|
|
|
+ @available(watchOS, unavailable)
|
|
public static let TouchIDCurrentSet = AuthenticationPolicy(rawValue: 1 << 3)
|
|
public static let TouchIDCurrentSet = AuthenticationPolicy(rawValue: 1 << 3)
|
|
|
|
|
|
/**
|
|
/**
|
|
Constraint: Device passcode
|
|
Constraint: Device passcode
|
|
*/
|
|
*/
|
|
@available(iOS 9.0, OSX 10.11, *)
|
|
@available(iOS 9.0, OSX 10.11, *)
|
|
|
|
+ @available(watchOS, unavailable)
|
|
public static let DevicePasscode = AuthenticationPolicy(rawValue: 1 << 4)
|
|
public static let DevicePasscode = AuthenticationPolicy(rawValue: 1 << 4)
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -167,6 +173,8 @@ public struct AuthenticationPolicy : OptionSetType {
|
|
at least one of them must be satisfied.
|
|
at least one of them must be satisfied.
|
|
*/
|
|
*/
|
|
@available(iOS 9.0, *)
|
|
@available(iOS 9.0, *)
|
|
|
|
+ @available(OSX, unavailable)
|
|
|
|
+ @available(watchOS, unavailable)
|
|
public static let Or = AuthenticationPolicy(rawValue: 1 << 14)
|
|
public static let Or = AuthenticationPolicy(rawValue: 1 << 14)
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -174,12 +182,16 @@ public struct AuthenticationPolicy : OptionSetType {
|
|
all must be satisfied.
|
|
all must be satisfied.
|
|
*/
|
|
*/
|
|
@available(iOS 9.0, *)
|
|
@available(iOS 9.0, *)
|
|
|
|
+ @available(OSX, unavailable)
|
|
|
|
+ @available(watchOS, unavailable)
|
|
public static let And = AuthenticationPolicy(rawValue: 1 << 15)
|
|
public static let And = AuthenticationPolicy(rawValue: 1 << 15)
|
|
|
|
|
|
/**
|
|
/**
|
|
Create access control for private key operations (i.e. sign operation)
|
|
Create access control for private key operations (i.e. sign operation)
|
|
*/
|
|
*/
|
|
@available(iOS 9.0, *)
|
|
@available(iOS 9.0, *)
|
|
|
|
+ @available(OSX, unavailable)
|
|
|
|
+ @available(watchOS, unavailable)
|
|
public static let PrivateKeyUsage = AuthenticationPolicy(rawValue: 1 << 30)
|
|
public static let PrivateKeyUsage = AuthenticationPolicy(rawValue: 1 << 30)
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -187,6 +199,8 @@ public struct AuthenticationPolicy : OptionSetType {
|
|
This is not a constraint but additional item encryption mechanism.
|
|
This is not a constraint but additional item encryption mechanism.
|
|
*/
|
|
*/
|
|
@available(iOS 9.0, *)
|
|
@available(iOS 9.0, *)
|
|
|
|
+ @available(OSX, unavailable)
|
|
|
|
+ @available(watchOS, unavailable)
|
|
public static let ApplicationPassword = AuthenticationPolicy(rawValue: 1 << 31)
|
|
public static let ApplicationPassword = AuthenticationPolicy(rawValue: 1 << 31)
|
|
|
|
|
|
public let rawValue : Int
|
|
public let rawValue : Int
|
|
@@ -232,6 +246,7 @@ private let ValueData = kSecValueData as String
|
|
|
|
|
|
/** Other Constants */
|
|
/** Other Constants */
|
|
@available(iOS 8.0, OSX 10.10, *)
|
|
@available(iOS 8.0, OSX 10.10, *)
|
|
|
|
+@available(watchOS, unavailable)
|
|
private let UseOperationPrompt = kSecUseOperationPrompt as String
|
|
private let UseOperationPrompt = kSecUseOperationPrompt as String
|
|
|
|
|
|
#if os(iOS)
|
|
#if os(iOS)
|
|
@@ -240,11 +255,25 @@ private let UseNoAuthenticationUI = kSecUseNoAuthenticationUI as String
|
|
#endif
|
|
#endif
|
|
|
|
|
|
@available(iOS 9.0, OSX 10.11, *)
|
|
@available(iOS 9.0, OSX 10.11, *)
|
|
|
|
+@available(watchOS, unavailable)
|
|
private let UseAuthenticationUI = kSecUseAuthenticationUI as String
|
|
private let UseAuthenticationUI = kSecUseAuthenticationUI as String
|
|
|
|
|
|
@available(iOS 9.0, OSX 10.11, *)
|
|
@available(iOS 9.0, OSX 10.11, *)
|
|
|
|
+@available(watchOS, unavailable)
|
|
private let UseAuthenticationContext = kSecUseAuthenticationContext as String
|
|
private let UseAuthenticationContext = kSecUseAuthenticationContext as String
|
|
|
|
|
|
|
|
+@available(iOS 9.0, OSX 10.11, *)
|
|
|
|
+@available(watchOS, unavailable)
|
|
|
|
+private let UseAuthenticationUIAllow = kSecUseAuthenticationUIAllow as String
|
|
|
|
+
|
|
|
|
+@available(iOS 9.0, OSX 10.11, *)
|
|
|
|
+@available(watchOS, unavailable)
|
|
|
|
+private let UseAuthenticationUIFail = kSecUseAuthenticationUIFail as String
|
|
|
|
+
|
|
|
|
+@available(iOS 9.0, OSX 10.11, *)
|
|
|
|
+@available(watchOS, unavailable)
|
|
|
|
+private let UseAuthenticationUISkip = kSecUseAuthenticationUISkip as String
|
|
|
|
+
|
|
#if os(iOS)
|
|
#if os(iOS)
|
|
/** Credential Key Constants */
|
|
/** Credential Key Constants */
|
|
private let SharedPassword = kSecSharedPassword as String
|
|
private let SharedPassword = kSecSharedPassword as String
|
|
@@ -280,6 +309,7 @@ public class Keychain {
|
|
}
|
|
}
|
|
|
|
|
|
@available(iOS 8.0, OSX 10.10, *)
|
|
@available(iOS 8.0, OSX 10.10, *)
|
|
|
|
+ @available(watchOS, unavailable)
|
|
public var authenticationPolicy: AuthenticationPolicy? {
|
|
public var authenticationPolicy: AuthenticationPolicy? {
|
|
return options.authenticationPolicy
|
|
return options.authenticationPolicy
|
|
}
|
|
}
|
|
@@ -297,6 +327,7 @@ public class Keychain {
|
|
}
|
|
}
|
|
|
|
|
|
@available(iOS 8.0, OSX 10.10, *)
|
|
@available(iOS 8.0, OSX 10.10, *)
|
|
|
|
+ @available(watchOS, unavailable)
|
|
public var authenticationPrompt: String? {
|
|
public var authenticationPrompt: String? {
|
|
return options.authenticationPrompt
|
|
return options.authenticationPrompt
|
|
}
|
|
}
|
|
@@ -369,6 +400,7 @@ public class Keychain {
|
|
}
|
|
}
|
|
|
|
|
|
@available(iOS 8.0, OSX 10.10, *)
|
|
@available(iOS 8.0, OSX 10.10, *)
|
|
|
|
+ @available(watchOS, unavailable)
|
|
public func accessibility(accessibility: Accessibility, authenticationPolicy: AuthenticationPolicy) -> Keychain {
|
|
public func accessibility(accessibility: Accessibility, authenticationPolicy: AuthenticationPolicy) -> Keychain {
|
|
var options = self.options
|
|
var options = self.options
|
|
options.accessibility = accessibility
|
|
options.accessibility = accessibility
|
|
@@ -395,6 +427,7 @@ public class Keychain {
|
|
}
|
|
}
|
|
|
|
|
|
@available(iOS 8.0, OSX 10.10, *)
|
|
@available(iOS 8.0, OSX 10.10, *)
|
|
|
|
+ @available(watchOS, unavailable)
|
|
public func authenticationPrompt(authenticationPrompt: String) -> Keychain {
|
|
public func authenticationPrompt(authenticationPrompt: String) -> Keychain {
|
|
var options = self.options
|
|
var options = self.options
|
|
options.authenticationPrompt = authenticationPrompt
|
|
options.authenticationPrompt = authenticationPrompt
|