Эх сурвалжийг харах

Update availability for watchOS

kishikawa katsumi 10 жил өмнө
parent
commit
0fe0e8d5e8

+ 33 - 0
Lib/KeychainAccess/Keychain.swift

@@ -138,6 +138,7 @@ public struct AuthenticationPolicy : OptionSetType {
     even if fingers are added or removed.
     */
     @available(iOS 8.0, OSX 10.10, *)
+    @available(watchOS, unavailable)
     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.
     */
     @available(iOS 9.0, *)
+    @available(OSX, unavailable)
+    @available(watchOS, unavailable)
     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.
     */
     @available(iOS 9.0, *)
+    @available(OSX, unavailable)
+    @available(watchOS, unavailable)
     public static let TouchIDCurrentSet = AuthenticationPolicy(rawValue: 1 << 3)
 
     /**
     Constraint: Device passcode
     */
     @available(iOS 9.0, OSX 10.11, *)
+    @available(watchOS, unavailable)
     public static let DevicePasscode = AuthenticationPolicy(rawValue: 1 << 4)
 
     /**
@@ -167,6 +173,8 @@ public struct AuthenticationPolicy : OptionSetType {
     at least one of them must be satisfied.
     */
     @available(iOS 9.0, *)
+    @available(OSX, unavailable)
+    @available(watchOS, unavailable)
     public static let Or = AuthenticationPolicy(rawValue: 1 << 14)
 
     /**
@@ -174,12 +182,16 @@ public struct AuthenticationPolicy : OptionSetType {
     all must be satisfied.
     */
     @available(iOS 9.0, *)
+    @available(OSX, unavailable)
+    @available(watchOS, unavailable)
     public static let And = AuthenticationPolicy(rawValue: 1 << 15)
 
     /**
     Create access control for private key operations (i.e. sign operation)
     */
     @available(iOS 9.0, *)
+    @available(OSX, unavailable)
+    @available(watchOS, unavailable)
     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.
     */
     @available(iOS 9.0, *)
+    @available(OSX, unavailable)
+    @available(watchOS, unavailable)
     public static let ApplicationPassword = AuthenticationPolicy(rawValue: 1 << 31)
 
     public let rawValue : Int
@@ -232,6 +246,7 @@ private let ValueData = kSecValueData as String
 
 /** Other Constants */
 @available(iOS 8.0, OSX 10.10, *)
+@available(watchOS, unavailable)
 private let UseOperationPrompt = kSecUseOperationPrompt as String
 
 #if os(iOS)
@@ -240,11 +255,25 @@ private let UseNoAuthenticationUI = kSecUseNoAuthenticationUI as String
 #endif
 
 @available(iOS 9.0, OSX 10.11, *)
+@available(watchOS, unavailable)
 private let UseAuthenticationUI = kSecUseAuthenticationUI as String
 
 @available(iOS 9.0, OSX 10.11, *)
+@available(watchOS, unavailable)
 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)
 /** Credential Key Constants */
 private let SharedPassword = kSecSharedPassword as String
@@ -280,6 +309,7 @@ public class Keychain {
     }
 
     @available(iOS 8.0, OSX 10.10, *)
+    @available(watchOS, unavailable)
     public var authenticationPolicy: AuthenticationPolicy? {
         return options.authenticationPolicy
     }
@@ -297,6 +327,7 @@ public class Keychain {
     }
 
     @available(iOS 8.0, OSX 10.10, *)
+    @available(watchOS, unavailable)
     public var authenticationPrompt: String? {
         return options.authenticationPrompt
     }
@@ -369,6 +400,7 @@ public class Keychain {
     }
 
     @available(iOS 8.0, OSX 10.10, *)
+    @available(watchOS, unavailable)
     public func accessibility(accessibility: Accessibility, authenticationPolicy: AuthenticationPolicy) -> Keychain {
         var options = self.options
         options.accessibility = accessibility
@@ -395,6 +427,7 @@ public class Keychain {
     }
 
     @available(iOS 8.0, OSX 10.10, *)
+    @available(watchOS, unavailable)
     public func authenticationPrompt(authenticationPrompt: String) -> Keychain {
         var options = self.options
         options.authenticationPrompt = authenticationPrompt

+ 28 - 0
Lib/KeychainAccessTests/KeychainAccessTests.swift

@@ -855,6 +855,7 @@ class KeychainAccessTests: XCTestCase {
             XCTAssertNil(error)
             XCTAssertNotNil(accessControl)
         }
+        #if os(iOS)
         do {
             let accessibility: Accessibility = .WhenPasscodeSetThisDeviceOnly
 
@@ -1035,5 +1036,32 @@ class KeychainAccessTests: XCTestCase {
             XCTAssertNil(error)
             XCTAssertNotNil(accessControl)
         }
+        #endif
+        #if os(OSX)
+        do {
+            let accessibility: Accessibility = .WhenPasscodeSetThisDeviceOnly
+
+            let policy: AuthenticationPolicy = [.UserPresence]
+            let flags = SecAccessControlCreateFlags(rawValue: policy.rawValue)
+
+            var error: Unmanaged<CFError>?
+            let accessControl = SecAccessControlCreateWithFlags(kCFAllocatorDefault, accessibility.rawValue, flags, &error)
+
+            XCTAssertNil(error)
+            XCTAssertNotNil(accessControl)
+        }
+        do {
+            let accessibility: Accessibility = .WhenPasscodeSetThisDeviceOnly
+
+            let policy: AuthenticationPolicy = [.DevicePasscode]
+            let flags = SecAccessControlCreateFlags(rawValue: policy.rawValue)
+
+            var error: Unmanaged<CFError>?
+            let accessControl = SecAccessControlCreateWithFlags(kCFAllocatorDefault, accessibility.rawValue, flags, &error)
+
+            XCTAssertNil(error)
+            XCTAssertNotNil(accessControl)
+        }
+        #endif
     }
 }