Build Information
Failed to build Valet, reference 5.0.0 (05c9e5
), with Swift 6.0 for Linux on 3 Dec 2024 11:43:25 UTC.
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4609320-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats 2>&1
Build Log
========================================
RunAll
========================================
Builder version: 4.58.4
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/square/Valet.git
Reference: 5.0.0
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
From https://github.com/square/Valet
* tag 5.0.0 -> FETCH_HEAD
HEAD is now at 05c9e51 Validate links (#324)
Cloned https://github.com/square/Valet.git
Revision (git rev-parse @):
05c9e514fbd352a6866877ca31326b4e0b7d6d01
SUCCESS checkout https://github.com/square/Valet.git at 5.0.0
========================================
Build
========================================
Selected platform: linux
Swift version: 6.0
Building package at path: $PWD
https://github.com/square/Valet.git
{
"dependencies" : [
],
"manifest_display_name" : "Valet",
"name" : "Valet",
"path" : "/host/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "12.0"
},
{
"name" : "tvos",
"version" : "12.0"
},
{
"name" : "watchos",
"version" : "4.0"
},
{
"name" : "macos",
"version" : "10.13"
}
],
"products" : [
{
"name" : "Valet",
"targets" : [
"Valet"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "Valet",
"module_type" : "SwiftTarget",
"name" : "Valet",
"path" : "Sources/Valet",
"product_memberships" : [
"Valet"
],
"sources" : [
"Accessibility.swift",
"CloudAccessibility.swift",
"Identifier.swift",
"Internal/Configuration.swift",
"Internal/Keychain.swift",
"Internal/SecItem.swift",
"Internal/Service.swift",
"Internal/WeakStorage.swift",
"KeychainError.swift",
"MigratableKeyValuePair.swift",
"MigrationError.swift",
"SecureEnclave.swift",
"SecureEnclaveAccessControl.swift",
"SecureEnclaveValet.swift",
"SharedGroupIdentifier.swift",
"SinglePromptSecureEnclaveValet.swift",
"Valet.swift"
],
"type" : "library"
}
],
"tools_version" : "6.0"
}
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats 2>&1
basic-6.0-latest: Pulling from finestructure/spi-images
Digest: sha256:47d26c99ca4f1ac0a332c85fd5b13ff4390e72115219984a57a68fe9d1063a05
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.0-latest
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-24593BA9C3E375BF.txt
error: emit-module command failed with exit code 1 (use -v to see invocation)
[3/18] Emitting module Valet
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:130:94: error: cannot find type 'OSStatus' in scope
128 | // MARK: Contains
129 |
130 | internal static func performCopy(forKey key: String, options: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
131 | guard !key.isEmpty else {
132 | return errSecParam
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:59:81: error: cannot find type 'OSStatus' in scope
57 | }
58 |
59 | internal static func performCopy(matching query: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
60 | guard !query.isEmpty else {
61 | // Must provide a query with at least one item
/host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift:35:40: error: cannot find 'NSMapTable' in scope
33 |
34 | private let lock = NSLock()
35 | private let identifierToValetMap = NSMapTable<NSString, T>.strongToWeakObjects()
| `- error: cannot find 'NSMapTable' in scope
36 | }
37 |
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:37:18: error: cannot find type 'OSStatus' in scope
35 | case emptyValue
36 |
37 | init(status: OSStatus) {
| `- error: cannot find type 'OSStatus' in scope
38 | switch status {
39 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:52:2: error: Objective-C interoperability is disabled
50 | // MARK: - Objective-C Compatibility
51 |
52 | @objc(VALMigratableKeyValuePairInput)
| `- error: Objective-C interoperability is disabled
53 | public final class ObjectiveCCompatibilityMigratableKeyValuePairInput: NSObject {
54 |
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:65:6: error: Objective-C interoperability is disabled
63 |
64 | /// The key in the key:value pair.
65 | @objc
| `- error: Objective-C interoperability is disabled
66 | public let key: Any
67 | /// The value in the key:value pair.
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:68:6: error: Objective-C interoperability is disabled
66 | public let key: Any
67 | /// The value in the key:value pair.
68 | @objc
| `- error: Objective-C interoperability is disabled
69 | public let value: Data
70 | }
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:72:2: error: Objective-C interoperability is disabled
70 | }
71 |
72 | @objc(VALMigratableKeyValuePairOutput)
| `- error: Objective-C interoperability is disabled
73 | public class ObjectiveCCompatibilityMigratableKeyValuePairOutput: NSObject {
74 |
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:81:6: error: Objective-C interoperability is disabled
79 | /// - key: The key in the key:value pair.
80 | /// - value: The value in the key:value pair.
81 | @objc
| `- error: Objective-C interoperability is disabled
82 | public init(key: String, value: Data) {
83 | self.key = key
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:92:6: error: Objective-C interoperability is disabled
90 | /// - key: The key in the key:value pair.
91 | /// - stringValue: The desired value in the key:value pair, represented as a String.
92 | @objc
| `- error: Objective-C interoperability is disabled
93 | public init(key: String, stringValue: String) {
94 | self.key = key
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:103:6: error: Objective-C interoperability is disabled
101 | /// A sentinal `ObjectiveCCompatibilityMigratableKeyValuePairOutput` that conveys that the migration should be prevented.
102 | @available(swift, obsoleted: 1.0)
103 | @objc
| `- error: Objective-C interoperability is disabled
104 | public static func preventMigration() -> ObjectiveCCompatibilityMigratableKeyValuePairOutput {
105 | ObjectiveCCompatibilityPreventMigrationOutput()
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:111:6: error: Objective-C interoperability is disabled
109 |
110 | /// The key in the key:value pair.
111 | @objc
| `- error: Objective-C interoperability is disabled
112 | public let key: String
113 | /// The value in the key:value pair.
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:114:6: error: Objective-C interoperability is disabled
112 | public let key: String
113 | /// The value in the key:value pair.
114 | @objc
| `- error: Objective-C interoperability is disabled
115 | public let value: Data
116 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveAccessControl.swift:55:36: error: cannot find type 'SecAccessControlCreateFlags' in scope
53 | // MARK: Internal Properties
54 |
55 | internal var secAccessControl: SecAccessControlCreateFlags {
| `- error: cannot find type 'SecAccessControlCreateFlags' in scope
56 | switch self {
57 | case .userPresence:
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:21:2: error: Objective-C interoperability is disabled
19 |
20 | /// Reads and writes keychain elements that are stored on the Secure Enclave using Accessibility attribute `.whenPasscodeSetThisDeviceOnly`. Accessing these keychain elements will require the user to confirm their presence via Touch ID, Face ID, or passcode entry. If no passcode is set on the device, accessing the keychain via a `SecureEnclaveValet` will fail. Data is removed from the Secure Enclave when the user removes a passcode from the device.
21 | @objc(VALSecureEnclaveValet)
| `- error: Objective-C interoperability is disabled
22 | public final class SecureEnclaveValet: NSObject, Sendable {
23 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:107:6: error: Objective-C interoperability is disabled
105 |
106 | public let identifier: Identifier
107 | @objc
| `- error: Objective-C interoperability is disabled
108 | public let accessControl: SecureEnclaveAccessControl
109 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:114:6: error: Objective-C interoperability is disabled
112 | /// - Returns: `true` if the keychain is accessible for reading and writing, `false` otherwise.
113 | /// - Note: Determined by writing a value to the keychain and then reading it back out. Will never prompt the user for Face ID, Touch ID, or password.
114 | @objc
| `- error: Objective-C interoperability is disabled
115 | public func canAccessKeychain() -> Bool {
116 | SecureEnclave.canAccessKeychain(with: service)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:124:6: error: Objective-C interoperability is disabled
122 | /// - Throws: An error of type `KeychainError`.
123 | /// - Important: Inserted data should be no larger than 4kb.
124 | @objc
| `- error: Objective-C interoperability is disabled
125 | public func setObject(_ object: Data, forKey key: String) throws(KeychainError) {
126 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:151:6: error: Objective-C interoperability is disabled
149 | /// - Returns: The data currently stored in the keychain for the provided key.
150 | /// - Throws: An error of type `KeychainError`.
151 | @objc
| `- error: Objective-C interoperability is disabled
152 | public func object(forKey key: String) throws(KeychainError) -> Data {
153 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:180:6: error: Objective-C interoperability is disabled
178 | /// - Throws: An error of type `KeychainError`.
179 | /// - Important: Inserted data should be no larger than 4kb.
180 | @objc
| `- error: Objective-C interoperability is disabled
181 | public func setString(_ string: String, forKey key: String) throws(KeychainError) {
182 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:207:6: error: Objective-C interoperability is disabled
205 | /// - Returns: The string currently stored in the keychain for the provided key.
206 | /// - Throws: An error of type `KeychainError`.
207 | @objc
| `- error: Objective-C interoperability is disabled
208 | public func string(forKey key: String) throws(KeychainError) -> String {
209 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:220:6: error: Objective-C interoperability is disabled
218 | /// - Parameter key: A key used to remove the desired object from the keychain.
219 | /// - Throws: An error of type `KeychainError`.
220 | @objc
| `- error: Objective-C interoperability is disabled
221 | public func removeObject(forKey key: String) throws(KeychainError) {
222 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:231:6: error: Objective-C interoperability is disabled
229 | /// Removes all key/object pairs accessible by this Valet instance from the keychain.
230 | /// - Throws: An error of type `KeychainError`.
231 | @objc
| `- error: Objective-C interoperability is disabled
232 | public func removeAllObjects() throws(KeychainError) {
233 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:246:6: error: Objective-C interoperability is disabled
244 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
245 | /// - Note: The keychain is not modified if an error is thrown.
246 | @objc
| `- error: Objective-C interoperability is disabled
247 | public func migrateObjects(matching query: [String : AnyHashable], removeOnCompletion: Bool) throws {
248 | try execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:259:6: error: Objective-C interoperability is disabled
257 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
258 | /// - Note: The keychain is not modified if an error is thrown.
259 | @objc
| `- error: Objective-C interoperability is disabled
260 | public func migrateObjects(from valet: Valet, removeOnCompletion: Bool) throws {
261 | try migrateObjects(matching: valet.baseKeychainQuery, removeOnCompletion: removeOnCompletion)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:308:6: error: Objective-C interoperability is disabled
306 | /// - accessControl: The desired access control for the SecureEnclaveValet.
307 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements with the desired flavor.
308 | @objc(valetWithIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
309 | public class func 🚫swift_valet(with identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
310 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:322:6: error: Objective-C interoperability is disabled
320 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements that can be shared across applications written by the same development team.
321 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
322 | @objc(sharedGroupValetWithAppIDPrefix:sharedGroupIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
323 | public class func 🚫swift_sharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
324 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:336:6: error: Objective-C interoperability is disabled
334 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements that can be shared across applications written by the same development team.
335 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
336 | @objc(sharedGroupValetWithGroupPrefix:sharedGroupIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
337 | public class func 🚫swift_sharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
338 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:21:2: error: Objective-C interoperability is disabled
19 |
20 | /// Reads and writes keychain elements.
21 | @objc(VALValet)
| `- error: Objective-C interoperability is disabled
22 | public final class Valet: NSObject, Sendable {
23 |
/host/spi-builder-workspace/Sources/Valet/Valet.swift:234:6: error: Objective-C interoperability is disabled
232 | // MARK: Public Properties
233 |
234 | @objc
| `- error: Objective-C interoperability is disabled
235 | public let accessibility: Accessibility
236 | public let identifier: Identifier
/host/spi-builder-workspace/Sources/Valet/Valet.swift:242:6: error: Objective-C interoperability is disabled
240 | /// - Returns: `true` if the keychain is accessible for reading and writing, `false` otherwise.
241 | /// - Note: Determined by writing a value to the keychain and then reading it back out.
242 | @objc
| `- error: Objective-C interoperability is disabled
243 | public func canAccessKeychain() -> Bool {
244 | execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:254:6: error: Objective-C interoperability is disabled
252 | /// - Throws: An error of type `KeychainError`.
253 | /// - Important: Inserted data should be no larger than 4kb.
254 | @objc
| `- error: Objective-C interoperability is disabled
255 | public func setObject(_ object: Data, forKey key: String) throws(KeychainError) {
256 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:266:6: error: Objective-C interoperability is disabled
264 | /// - Returns: The data currently stored in the keychain for the provided key.
265 | /// - Throws: An error of type `KeychainError`.
266 | @objc
| `- error: Objective-C interoperability is disabled
267 | public func object(forKey key: String) throws(KeychainError) -> Data {
268 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:299:6: error: Objective-C interoperability is disabled
297 | /// - Throws: An error of type `KeychainError`.
298 | /// - Important: Inserted data should be no larger than 4kb.
299 | @objc
| `- error: Objective-C interoperability is disabled
300 | public func setString(_ string: String, forKey key: String) throws(KeychainError) {
301 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:311:6: error: Objective-C interoperability is disabled
309 | /// - Returns: The string currently stored in the keychain for the provided key.
310 | /// - Throws: An error of type `KeychainError`.
311 | @objc
| `- error: Objective-C interoperability is disabled
312 | public func string(forKey key: String) throws(KeychainError) -> String {
313 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:322:6: error: Objective-C interoperability is disabled
320 | /// - Returns: The set of all (String) keys currently stored in this Valet instance. If no items are found, will return an empty set.
321 | /// - Throws: An error of type `KeychainError`.
322 | @objc
| `- error: Objective-C interoperability is disabled
323 | public func allKeys() throws(KeychainError) -> Set<String> {
324 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:335:6: error: Objective-C interoperability is disabled
333 | /// - Throws: An error of type `KeychainError`.
334 | /// - Note: No error is thrown if the `key` is not found in the keychain.
335 | @objc
| `- error: Objective-C interoperability is disabled
336 | public func removeObject(forKey key: String) throws(KeychainError) {
337 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:346:6: error: Objective-C interoperability is disabled
344 | /// Removes all key/object pairs accessible by this Valet instance from the keychain.
345 | /// - Throws: An error of type `KeychainError`.
346 | @objc
| `- error: Objective-C interoperability is disabled
347 | public func removeAllObjects() throws(KeychainError) {
348 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:373:6: error: Objective-C interoperability is disabled
371 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
372 | /// - Note: The keychain is not modified if an error is thrown.
373 | @objc
| `- error: Objective-C interoperability is disabled
374 | public func migrateObjects(matching query: [String : AnyHashable], removeOnCompletion: Bool) throws {
375 | try execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:398:6: error: Objective-C interoperability is disabled
396 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
397 | /// - Note: The keychain is not modified if an error is thrown.
398 | @objc
| `- error: Objective-C interoperability is disabled
399 | public func migrateObjects(from valet: Valet, removeOnCompletion: Bool) throws {
400 | try migrateObjects(matching: valet.baseKeychainQuery, removeOnCompletion: removeOnCompletion)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:408:6: error: Objective-C interoperability is disabled
406 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
407 | /// - Note: The keychain is not modified if an error is thrown.
408 | @objc
| `- error: Objective-C interoperability is disabled
409 | public func migrateObjectsFromAlwaysAccessibleValet(removeOnCompletion: Bool) throws {
410 | var keychainQuery = baseKeychainQuery
/host/spi-builder-workspace/Sources/Valet/Valet.swift:443:6: error: Objective-C interoperability is disabled
441 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
442 | /// - Note: The keychain is not modified if an error is thrown.
443 | @objc
| `- error: Objective-C interoperability is disabled
444 | public func migrateObjectsFromAlwaysAccessibleThisDeviceOnlyValet(removeOnCompletion: Bool) throws {
445 | var keychainQuery = baseKeychainQuery
/host/spi-builder-workspace/Sources/Valet/Valet.swift:514:6: error: Objective-C interoperability is disabled
512 | /// - Returns: A Valet that reads/writes keychain elements with the desired accessibility.
513 | @available(swift, obsoleted: 1.0)
514 | @objc(valetWithIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
515 | public class func 🚫swift_vanillaValet(with identifier: String, accessibility: Accessibility) -> Valet? {
516 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:527:6: error: Objective-C interoperability is disabled
525 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements with the desired accessibility.
526 | @available(swift, obsoleted: 1.0)
527 | @objc(iCloudValetWithIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
528 | public class func 🚫swift_iCloudValet(with identifier: String, accessibility: CloudAccessibility) -> Valet? {
529 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:542:6: error: Objective-C interoperability is disabled
540 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
541 | @available(swift, obsoleted: 1.0)
542 | @objc(sharedGroupValetWithAppIDPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
543 | public class func 🚫swift_vanillaSharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessibility: Accessibility) -> Valet? {
544 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:557:6: error: Objective-C interoperability is disabled
555 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
556 | @available(swift, obsoleted: 1.0)
557 | @objc(sharedGroupValetWithGroupPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
558 | public class func 🚫swift_vanillaSharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessibility: Accessibility) -> Valet? {
559 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:571:6: error: Objective-C interoperability is disabled
569 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements that can be shared across applications written by the same development team.
570 | @available(swift, obsoleted: 1.0)
571 | @objc(iCloudValetWithAppIDPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
572 | public class func 🚫swift_iCloudSharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessibility: CloudAccessibility) -> Valet? {
573 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:585:6: error: Objective-C interoperability is disabled
583 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements that can be shared across applications written by the same development team.
584 | @available(swift, obsoleted: 1.0)
585 | @objc(iCloudValetWithGroupPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
586 | public class func 🚫swift_iCloudSharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessibility: CloudAccessibility) -> Valet? {
587 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:669:6: error: Objective-C interoperability is disabled
667 | /// - Note: Will never prompt the user for Face ID, Touch ID, or password.
668 | @available(swift, obsoleted: 1.0)
669 | @objc(containsObjectForKey:)
| `- error: Objective-C interoperability is disabled
670 | public func 🚫swift_containsObject(forKey key: String) -> Bool {
671 | guard let containsObject = try? containsObject(forKey: key) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:683:6: error: Objective-C interoperability is disabled
681 | /// - error: An error of type `KeychainError` or `MigrationError`.
682 | @available(swift, obsoleted: 1.0)
683 | @objc(migrateObjectsMatching:compactMap:error:)
| `- error: Objective-C interoperability is disabled
684 | public func 🚫swift_migrateObjects(matching query: [String : AnyHashable], compactMap: (ObjectiveCCompatibilityMigratableKeyValuePairInput) -> ObjectiveCCompatibilityMigratableKeyValuePairOutput?) throws {
685 | try objc_compatibility_migrateObjects(matching: query, compactMap: compactMap)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:694:6: error: Objective-C interoperability is disabled
692 | /// - error: An error of type `KeychainError` or `MigrationError`.
693 | @available(swift, obsoleted: 1.0)
694 | @objc(migrateObjectsFrom:compactMap:error:)
| `- error: Objective-C interoperability is disabled
695 | public func 🚫swift_migrateObjects(from valet: Valet, compactMap: (ObjectiveCCompatibilityMigratableKeyValuePairInput) -> ObjectiveCCompatibilityMigratableKeyValuePairOutput?) throws {
696 | try objc_compatibility_migrateObjects(matching: valet.baseKeychainQuery, compactMap: compactMap)
[4/20] Compiling Valet SecureEnclave.swift
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveAccessControl.swift:55:36: error: cannot find type 'SecAccessControlCreateFlags' in scope
53 | // MARK: Internal Properties
54 |
55 | internal var secAccessControl: SecAccessControlCreateFlags {
| `- error: cannot find type 'SecAccessControlCreateFlags' in scope
56 | switch self {
57 | case .userPresence:
[5/20] Compiling Valet SecureEnclaveAccessControl.swift
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveAccessControl.swift:55:36: error: cannot find type 'SecAccessControlCreateFlags' in scope
53 | // MARK: Internal Properties
54 |
55 | internal var secAccessControl: SecAccessControlCreateFlags {
| `- error: cannot find type 'SecAccessControlCreateFlags' in scope
56 | switch self {
57 | case .userPresence:
[6/20] Compiling Valet WeakStorage.swift
/host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift:35:40: error: cannot find 'NSMapTable' in scope
33 |
34 | private let lock = NSLock()
35 | private let identifierToValetMap = NSMapTable<NSString, T>.strongToWeakObjects()
| `- error: cannot find 'NSMapTable' in scope
36 | }
37 |
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:37:18: error: cannot find type 'OSStatus' in scope
35 | case emptyValue
36 |
37 | init(status: OSStatus) {
| `- error: cannot find type 'OSStatus' in scope
38 | switch status {
39 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:39:14: error: cannot find 'errSecItemNotFound' in scope
37 | init(status: OSStatus) {
38 | switch status {
39 | case errSecItemNotFound:
| `- error: cannot find 'errSecItemNotFound' in scope
40 | self = .itemNotFound
41 | case errSecUserCanceled,
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:41:14: error: cannot find 'errSecUserCanceled' in scope
39 | case errSecItemNotFound:
40 | self = .itemNotFound
41 | case errSecUserCanceled,
| `- error: cannot find 'errSecUserCanceled' in scope
42 | errSecAuthFailed:
43 | self = .userCancelled
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:42:14: error: cannot find 'errSecAuthFailed' in scope
40 | self = .itemNotFound
41 | case errSecUserCanceled,
42 | errSecAuthFailed:
| `- error: cannot find 'errSecAuthFailed' in scope
43 | self = .userCancelled
44 | case errSecMissingEntitlement:
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:44:14: error: cannot find 'errSecMissingEntitlement' in scope
42 | errSecAuthFailed:
43 | self = .userCancelled
44 | case errSecMissingEntitlement:
| `- error: cannot find 'errSecMissingEntitlement' in scope
45 | self = .missingEntitlement
46 | default:
[7/20] Compiling Valet KeychainError.swift
/host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift:35:40: error: cannot find 'NSMapTable' in scope
33 |
34 | private let lock = NSLock()
35 | private let identifierToValetMap = NSMapTable<NSString, T>.strongToWeakObjects()
| `- error: cannot find 'NSMapTable' in scope
36 | }
37 |
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:37:18: error: cannot find type 'OSStatus' in scope
35 | case emptyValue
36 |
37 | init(status: OSStatus) {
| `- error: cannot find type 'OSStatus' in scope
38 | switch status {
39 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:39:14: error: cannot find 'errSecItemNotFound' in scope
37 | init(status: OSStatus) {
38 | switch status {
39 | case errSecItemNotFound:
| `- error: cannot find 'errSecItemNotFound' in scope
40 | self = .itemNotFound
41 | case errSecUserCanceled,
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:41:14: error: cannot find 'errSecUserCanceled' in scope
39 | case errSecItemNotFound:
40 | self = .itemNotFound
41 | case errSecUserCanceled,
| `- error: cannot find 'errSecUserCanceled' in scope
42 | errSecAuthFailed:
43 | self = .userCancelled
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:42:14: error: cannot find 'errSecAuthFailed' in scope
40 | self = .itemNotFound
41 | case errSecUserCanceled,
42 | errSecAuthFailed:
| `- error: cannot find 'errSecAuthFailed' in scope
43 | self = .userCancelled
44 | case errSecMissingEntitlement:
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:44:14: error: cannot find 'errSecMissingEntitlement' in scope
42 | errSecAuthFailed:
43 | self = .userCancelled
44 | case errSecMissingEntitlement:
| `- error: cannot find 'errSecMissingEntitlement' in scope
45 | self = .missingEntitlement
46 | default:
[8/20] Compiling Valet SinglePromptSecureEnclaveValet.swift
/host/spi-builder-workspace/Sources/Valet/Valet.swift:21:2: error: Objective-C interoperability is disabled
19 |
20 | /// Reads and writes keychain elements.
21 | @objc(VALValet)
| `- error: Objective-C interoperability is disabled
22 | public final class Valet: NSObject, Sendable {
23 |
/host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift:35:40: error: cannot find 'NSMapTable' in scope
33 |
34 | private let lock = NSLock()
35 | private let identifierToValetMap = NSMapTable<NSString, T>.strongToWeakObjects()
| `- error: cannot find 'NSMapTable' in scope
36 | }
37 |
/host/spi-builder-workspace/Sources/Valet/Valet.swift:234:6: error: Objective-C interoperability is disabled
232 | // MARK: Public Properties
233 |
234 | @objc
| `- error: Objective-C interoperability is disabled
235 | public let accessibility: Accessibility
236 | public let identifier: Identifier
/host/spi-builder-workspace/Sources/Valet/Valet.swift:242:6: error: Objective-C interoperability is disabled
240 | /// - Returns: `true` if the keychain is accessible for reading and writing, `false` otherwise.
241 | /// - Note: Determined by writing a value to the keychain and then reading it back out.
242 | @objc
| `- error: Objective-C interoperability is disabled
243 | public func canAccessKeychain() -> Bool {
244 | execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:254:6: error: Objective-C interoperability is disabled
252 | /// - Throws: An error of type `KeychainError`.
253 | /// - Important: Inserted data should be no larger than 4kb.
254 | @objc
| `- error: Objective-C interoperability is disabled
255 | public func setObject(_ object: Data, forKey key: String) throws(KeychainError) {
256 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:266:6: error: Objective-C interoperability is disabled
264 | /// - Returns: The data currently stored in the keychain for the provided key.
265 | /// - Throws: An error of type `KeychainError`.
266 | @objc
| `- error: Objective-C interoperability is disabled
267 | public func object(forKey key: String) throws(KeychainError) -> Data {
268 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:299:6: error: Objective-C interoperability is disabled
297 | /// - Throws: An error of type `KeychainError`.
298 | /// - Important: Inserted data should be no larger than 4kb.
299 | @objc
| `- error: Objective-C interoperability is disabled
300 | public func setString(_ string: String, forKey key: String) throws(KeychainError) {
301 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:311:6: error: Objective-C interoperability is disabled
309 | /// - Returns: The string currently stored in the keychain for the provided key.
310 | /// - Throws: An error of type `KeychainError`.
311 | @objc
| `- error: Objective-C interoperability is disabled
312 | public func string(forKey key: String) throws(KeychainError) -> String {
313 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:322:6: error: Objective-C interoperability is disabled
320 | /// - Returns: The set of all (String) keys currently stored in this Valet instance. If no items are found, will return an empty set.
321 | /// - Throws: An error of type `KeychainError`.
322 | @objc
| `- error: Objective-C interoperability is disabled
323 | public func allKeys() throws(KeychainError) -> Set<String> {
324 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:335:6: error: Objective-C interoperability is disabled
333 | /// - Throws: An error of type `KeychainError`.
334 | /// - Note: No error is thrown if the `key` is not found in the keychain.
335 | @objc
| `- error: Objective-C interoperability is disabled
336 | public func removeObject(forKey key: String) throws(KeychainError) {
337 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:346:6: error: Objective-C interoperability is disabled
344 | /// Removes all key/object pairs accessible by this Valet instance from the keychain.
345 | /// - Throws: An error of type `KeychainError`.
346 | @objc
| `- error: Objective-C interoperability is disabled
347 | public func removeAllObjects() throws(KeychainError) {
348 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:373:6: error: Objective-C interoperability is disabled
371 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
372 | /// - Note: The keychain is not modified if an error is thrown.
373 | @objc
| `- error: Objective-C interoperability is disabled
374 | public func migrateObjects(matching query: [String : AnyHashable], removeOnCompletion: Bool) throws {
375 | try execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:398:6: error: Objective-C interoperability is disabled
396 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
397 | /// - Note: The keychain is not modified if an error is thrown.
398 | @objc
| `- error: Objective-C interoperability is disabled
399 | public func migrateObjects(from valet: Valet, removeOnCompletion: Bool) throws {
400 | try migrateObjects(matching: valet.baseKeychainQuery, removeOnCompletion: removeOnCompletion)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:408:6: error: Objective-C interoperability is disabled
406 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
407 | /// - Note: The keychain is not modified if an error is thrown.
408 | @objc
| `- error: Objective-C interoperability is disabled
409 | public func migrateObjectsFromAlwaysAccessibleValet(removeOnCompletion: Bool) throws {
410 | var keychainQuery = baseKeychainQuery
/host/spi-builder-workspace/Sources/Valet/Valet.swift:443:6: error: Objective-C interoperability is disabled
441 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
442 | /// - Note: The keychain is not modified if an error is thrown.
443 | @objc
| `- error: Objective-C interoperability is disabled
444 | public func migrateObjectsFromAlwaysAccessibleThisDeviceOnlyValet(removeOnCompletion: Bool) throws {
445 | var keychainQuery = baseKeychainQuery
/host/spi-builder-workspace/Sources/Valet/Valet.swift:514:6: error: Objective-C interoperability is disabled
512 | /// - Returns: A Valet that reads/writes keychain elements with the desired accessibility.
513 | @available(swift, obsoleted: 1.0)
514 | @objc(valetWithIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
515 | public class func 🚫swift_vanillaValet(with identifier: String, accessibility: Accessibility) -> Valet? {
516 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:527:6: error: Objective-C interoperability is disabled
525 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements with the desired accessibility.
526 | @available(swift, obsoleted: 1.0)
527 | @objc(iCloudValetWithIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
528 | public class func 🚫swift_iCloudValet(with identifier: String, accessibility: CloudAccessibility) -> Valet? {
529 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:542:6: error: Objective-C interoperability is disabled
540 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
541 | @available(swift, obsoleted: 1.0)
542 | @objc(sharedGroupValetWithAppIDPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
543 | public class func 🚫swift_vanillaSharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessibility: Accessibility) -> Valet? {
544 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:557:6: error: Objective-C interoperability is disabled
555 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
556 | @available(swift, obsoleted: 1.0)
557 | @objc(sharedGroupValetWithGroupPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
558 | public class func 🚫swift_vanillaSharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessibility: Accessibility) -> Valet? {
559 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:571:6: error: Objective-C interoperability is disabled
569 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements that can be shared across applications written by the same development team.
570 | @available(swift, obsoleted: 1.0)
571 | @objc(iCloudValetWithAppIDPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
572 | public class func 🚫swift_iCloudSharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessibility: CloudAccessibility) -> Valet? {
573 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:585:6: error: Objective-C interoperability is disabled
583 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements that can be shared across applications written by the same development team.
584 | @available(swift, obsoleted: 1.0)
585 | @objc(iCloudValetWithGroupPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
586 | public class func 🚫swift_iCloudSharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessibility: CloudAccessibility) -> Valet? {
587 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:669:6: error: Objective-C interoperability is disabled
667 | /// - Note: Will never prompt the user for Face ID, Touch ID, or password.
668 | @available(swift, obsoleted: 1.0)
669 | @objc(containsObjectForKey:)
| `- error: Objective-C interoperability is disabled
670 | public func 🚫swift_containsObject(forKey key: String) -> Bool {
671 | guard let containsObject = try? containsObject(forKey: key) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:683:6: error: Objective-C interoperability is disabled
681 | /// - error: An error of type `KeychainError` or `MigrationError`.
682 | @available(swift, obsoleted: 1.0)
683 | @objc(migrateObjectsMatching:compactMap:error:)
| `- error: Objective-C interoperability is disabled
684 | public func 🚫swift_migrateObjects(matching query: [String : AnyHashable], compactMap: (ObjectiveCCompatibilityMigratableKeyValuePairInput) -> ObjectiveCCompatibilityMigratableKeyValuePairOutput?) throws {
685 | try objc_compatibility_migrateObjects(matching: query, compactMap: compactMap)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:694:6: error: Objective-C interoperability is disabled
692 | /// - error: An error of type `KeychainError` or `MigrationError`.
693 | @available(swift, obsoleted: 1.0)
694 | @objc(migrateObjectsFrom:compactMap:error:)
| `- error: Objective-C interoperability is disabled
695 | public func 🚫swift_migrateObjects(from valet: Valet, compactMap: (ObjectiveCCompatibilityMigratableKeyValuePairInput) -> ObjectiveCCompatibilityMigratableKeyValuePairOutput?) throws {
696 | try objc_compatibility_migrateObjects(matching: valet.baseKeychainQuery, compactMap: compactMap)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:130:94: error: cannot find type 'OSStatus' in scope
128 | // MARK: Contains
129 |
130 | internal static func performCopy(forKey key: String, options: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
131 | guard !key.isEmpty else {
132 | return errSecParam
/host/spi-builder-workspace/Sources/Valet/Valet.swift:285:14: error: cannot find 'errSecSuccess' in scope
283 | let status = Keychain.performCopy(forKey: key, options: baseKeychainQuery)
284 | switch status {
285 | case errSecSuccess:
| `- error: cannot find 'errSecSuccess' in scope
286 | return true
287 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/Valet.swift:287:14: error: cannot find 'errSecItemNotFound' in scope
285 | case errSecSuccess:
286 | return true
287 | case errSecItemNotFound:
| `- error: cannot find 'errSecItemNotFound' in scope
288 | return false
289 | default:
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:37:18: error: cannot find type 'OSStatus' in scope
35 | case emptyValue
36 |
37 | init(status: OSStatus) {
| `- error: cannot find type 'OSStatus' in scope
38 | switch status {
39 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/Valet.swift:290:19: error: no exact matches in call to initializer
288 | return false
289 | default:
290 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
291 | }
292 | }
Foundation.__BridgedNSError:5:12: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
2 | public var _domain: String { get }
3 | public var _code: Int { get }
4 | public init?(rawValue: Self.RawValue)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
5 | public init?(_bridgedNSError: NSError)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
6 | public var hashValue: Int { get }
7 | public func hash(into hasher: inout Hasher)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:290:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
288 | return false
289 | default:
290 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
291 | }
292 | }
/host/spi-builder-workspace/Sources/Valet/Valet.swift:419:23: error: cannot find 'kSecAttrAccessible' in scope
417 | #endif
418 |
419 | keychainQuery[kSecAttrAccessible as String] = "dk" // kSecAttrAccessibleAlways, but with the value hardcoded to avoid a build warning.
| `- error: cannot find 'kSecAttrAccessible' in scope
420 | let accessibilityDescription = "AccessibleAlways"
421 | let serviceAttribute: String
/host/spi-builder-workspace/Sources/Valet/Valet.swift:434:23: error: cannot find 'kSecAttrService' in scope
432 | #endif
433 | }
434 | keychainQuery[kSecAttrService as String] = serviceAttribute
| `- error: cannot find 'kSecAttrService' in scope
435 | try migrateObjects(matching: keychainQuery, removeOnCompletion: removeOnCompletion)
436 | }
/host/spi-builder-workspace/Sources/Valet/Valet.swift:454:23: error: cannot find 'kSecAttrAccessible' in scope
452 | #endif
453 |
454 | keychainQuery[kSecAttrAccessible as String] = "dku" // kSecAttrAccessibleAlwaysThisDeviceOnly, but with the value hardcoded to avoid a build warning.
| `- error: cannot find 'kSecAttrAccessible' in scope
455 | let accessibilityDescription = "AccessibleAlwaysThisDeviceOnly"
456 | let serviceAttribute: String
/host/spi-builder-workspace/Sources/Valet/Valet.swift:469:23: error: cannot find 'kSecAttrService' in scope
467 | #endif
468 | }
469 | keychainQuery[kSecAttrService as String] = serviceAttribute
| `- error: cannot find 'kSecAttrService' in scope
470 | try migrateObjects(matching: keychainQuery, removeOnCompletion: removeOnCompletion)
471 | }
[9/20] Compiling Valet Valet.swift
/host/spi-builder-workspace/Sources/Valet/Valet.swift:21:2: error: Objective-C interoperability is disabled
19 |
20 | /// Reads and writes keychain elements.
21 | @objc(VALValet)
| `- error: Objective-C interoperability is disabled
22 | public final class Valet: NSObject, Sendable {
23 |
/host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift:35:40: error: cannot find 'NSMapTable' in scope
33 |
34 | private let lock = NSLock()
35 | private let identifierToValetMap = NSMapTable<NSString, T>.strongToWeakObjects()
| `- error: cannot find 'NSMapTable' in scope
36 | }
37 |
/host/spi-builder-workspace/Sources/Valet/Valet.swift:234:6: error: Objective-C interoperability is disabled
232 | // MARK: Public Properties
233 |
234 | @objc
| `- error: Objective-C interoperability is disabled
235 | public let accessibility: Accessibility
236 | public let identifier: Identifier
/host/spi-builder-workspace/Sources/Valet/Valet.swift:242:6: error: Objective-C interoperability is disabled
240 | /// - Returns: `true` if the keychain is accessible for reading and writing, `false` otherwise.
241 | /// - Note: Determined by writing a value to the keychain and then reading it back out.
242 | @objc
| `- error: Objective-C interoperability is disabled
243 | public func canAccessKeychain() -> Bool {
244 | execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:254:6: error: Objective-C interoperability is disabled
252 | /// - Throws: An error of type `KeychainError`.
253 | /// - Important: Inserted data should be no larger than 4kb.
254 | @objc
| `- error: Objective-C interoperability is disabled
255 | public func setObject(_ object: Data, forKey key: String) throws(KeychainError) {
256 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:266:6: error: Objective-C interoperability is disabled
264 | /// - Returns: The data currently stored in the keychain for the provided key.
265 | /// - Throws: An error of type `KeychainError`.
266 | @objc
| `- error: Objective-C interoperability is disabled
267 | public func object(forKey key: String) throws(KeychainError) -> Data {
268 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:299:6: error: Objective-C interoperability is disabled
297 | /// - Throws: An error of type `KeychainError`.
298 | /// - Important: Inserted data should be no larger than 4kb.
299 | @objc
| `- error: Objective-C interoperability is disabled
300 | public func setString(_ string: String, forKey key: String) throws(KeychainError) {
301 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:311:6: error: Objective-C interoperability is disabled
309 | /// - Returns: The string currently stored in the keychain for the provided key.
310 | /// - Throws: An error of type `KeychainError`.
311 | @objc
| `- error: Objective-C interoperability is disabled
312 | public func string(forKey key: String) throws(KeychainError) -> String {
313 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:322:6: error: Objective-C interoperability is disabled
320 | /// - Returns: The set of all (String) keys currently stored in this Valet instance. If no items are found, will return an empty set.
321 | /// - Throws: An error of type `KeychainError`.
322 | @objc
| `- error: Objective-C interoperability is disabled
323 | public func allKeys() throws(KeychainError) -> Set<String> {
324 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:335:6: error: Objective-C interoperability is disabled
333 | /// - Throws: An error of type `KeychainError`.
334 | /// - Note: No error is thrown if the `key` is not found in the keychain.
335 | @objc
| `- error: Objective-C interoperability is disabled
336 | public func removeObject(forKey key: String) throws(KeychainError) {
337 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:346:6: error: Objective-C interoperability is disabled
344 | /// Removes all key/object pairs accessible by this Valet instance from the keychain.
345 | /// - Throws: An error of type `KeychainError`.
346 | @objc
| `- error: Objective-C interoperability is disabled
347 | public func removeAllObjects() throws(KeychainError) {
348 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/Valet.swift:373:6: error: Objective-C interoperability is disabled
371 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
372 | /// - Note: The keychain is not modified if an error is thrown.
373 | @objc
| `- error: Objective-C interoperability is disabled
374 | public func migrateObjects(matching query: [String : AnyHashable], removeOnCompletion: Bool) throws {
375 | try execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:398:6: error: Objective-C interoperability is disabled
396 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
397 | /// - Note: The keychain is not modified if an error is thrown.
398 | @objc
| `- error: Objective-C interoperability is disabled
399 | public func migrateObjects(from valet: Valet, removeOnCompletion: Bool) throws {
400 | try migrateObjects(matching: valet.baseKeychainQuery, removeOnCompletion: removeOnCompletion)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:408:6: error: Objective-C interoperability is disabled
406 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
407 | /// - Note: The keychain is not modified if an error is thrown.
408 | @objc
| `- error: Objective-C interoperability is disabled
409 | public func migrateObjectsFromAlwaysAccessibleValet(removeOnCompletion: Bool) throws {
410 | var keychainQuery = baseKeychainQuery
/host/spi-builder-workspace/Sources/Valet/Valet.swift:443:6: error: Objective-C interoperability is disabled
441 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
442 | /// - Note: The keychain is not modified if an error is thrown.
443 | @objc
| `- error: Objective-C interoperability is disabled
444 | public func migrateObjectsFromAlwaysAccessibleThisDeviceOnlyValet(removeOnCompletion: Bool) throws {
445 | var keychainQuery = baseKeychainQuery
/host/spi-builder-workspace/Sources/Valet/Valet.swift:514:6: error: Objective-C interoperability is disabled
512 | /// - Returns: A Valet that reads/writes keychain elements with the desired accessibility.
513 | @available(swift, obsoleted: 1.0)
514 | @objc(valetWithIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
515 | public class func 🚫swift_vanillaValet(with identifier: String, accessibility: Accessibility) -> Valet? {
516 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:527:6: error: Objective-C interoperability is disabled
525 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements with the desired accessibility.
526 | @available(swift, obsoleted: 1.0)
527 | @objc(iCloudValetWithIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
528 | public class func 🚫swift_iCloudValet(with identifier: String, accessibility: CloudAccessibility) -> Valet? {
529 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:542:6: error: Objective-C interoperability is disabled
540 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
541 | @available(swift, obsoleted: 1.0)
542 | @objc(sharedGroupValetWithAppIDPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
543 | public class func 🚫swift_vanillaSharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessibility: Accessibility) -> Valet? {
544 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:557:6: error: Objective-C interoperability is disabled
555 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
556 | @available(swift, obsoleted: 1.0)
557 | @objc(sharedGroupValetWithGroupPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
558 | public class func 🚫swift_vanillaSharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessibility: Accessibility) -> Valet? {
559 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:571:6: error: Objective-C interoperability is disabled
569 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements that can be shared across applications written by the same development team.
570 | @available(swift, obsoleted: 1.0)
571 | @objc(iCloudValetWithAppIDPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
572 | public class func 🚫swift_iCloudSharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessibility: CloudAccessibility) -> Valet? {
573 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:585:6: error: Objective-C interoperability is disabled
583 | /// - Returns: A Valet that reads/writes iCloud-shared keychain elements that can be shared across applications written by the same development team.
584 | @available(swift, obsoleted: 1.0)
585 | @objc(iCloudValetWithGroupPrefix:sharedGroupIdentifier:accessibility:)
| `- error: Objective-C interoperability is disabled
586 | public class func 🚫swift_iCloudSharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessibility: CloudAccessibility) -> Valet? {
587 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:669:6: error: Objective-C interoperability is disabled
667 | /// - Note: Will never prompt the user for Face ID, Touch ID, or password.
668 | @available(swift, obsoleted: 1.0)
669 | @objc(containsObjectForKey:)
| `- error: Objective-C interoperability is disabled
670 | public func 🚫swift_containsObject(forKey key: String) -> Bool {
671 | guard let containsObject = try? containsObject(forKey: key) else {
/host/spi-builder-workspace/Sources/Valet/Valet.swift:683:6: error: Objective-C interoperability is disabled
681 | /// - error: An error of type `KeychainError` or `MigrationError`.
682 | @available(swift, obsoleted: 1.0)
683 | @objc(migrateObjectsMatching:compactMap:error:)
| `- error: Objective-C interoperability is disabled
684 | public func 🚫swift_migrateObjects(matching query: [String : AnyHashable], compactMap: (ObjectiveCCompatibilityMigratableKeyValuePairInput) -> ObjectiveCCompatibilityMigratableKeyValuePairOutput?) throws {
685 | try objc_compatibility_migrateObjects(matching: query, compactMap: compactMap)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:694:6: error: Objective-C interoperability is disabled
692 | /// - error: An error of type `KeychainError` or `MigrationError`.
693 | @available(swift, obsoleted: 1.0)
694 | @objc(migrateObjectsFrom:compactMap:error:)
| `- error: Objective-C interoperability is disabled
695 | public func 🚫swift_migrateObjects(from valet: Valet, compactMap: (ObjectiveCCompatibilityMigratableKeyValuePairInput) -> ObjectiveCCompatibilityMigratableKeyValuePairOutput?) throws {
696 | try objc_compatibility_migrateObjects(matching: valet.baseKeychainQuery, compactMap: compactMap)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:130:94: error: cannot find type 'OSStatus' in scope
128 | // MARK: Contains
129 |
130 | internal static func performCopy(forKey key: String, options: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
131 | guard !key.isEmpty else {
132 | return errSecParam
/host/spi-builder-workspace/Sources/Valet/Valet.swift:285:14: error: cannot find 'errSecSuccess' in scope
283 | let status = Keychain.performCopy(forKey: key, options: baseKeychainQuery)
284 | switch status {
285 | case errSecSuccess:
| `- error: cannot find 'errSecSuccess' in scope
286 | return true
287 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/Valet.swift:287:14: error: cannot find 'errSecItemNotFound' in scope
285 | case errSecSuccess:
286 | return true
287 | case errSecItemNotFound:
| `- error: cannot find 'errSecItemNotFound' in scope
288 | return false
289 | default:
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:37:18: error: cannot find type 'OSStatus' in scope
35 | case emptyValue
36 |
37 | init(status: OSStatus) {
| `- error: cannot find type 'OSStatus' in scope
38 | switch status {
39 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/Valet.swift:290:19: error: no exact matches in call to initializer
288 | return false
289 | default:
290 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
291 | }
292 | }
Foundation.__BridgedNSError:5:12: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
2 | public var _domain: String { get }
3 | public var _code: Int { get }
4 | public init?(rawValue: Self.RawValue)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
5 | public init?(_bridgedNSError: NSError)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
6 | public var hashValue: Int { get }
7 | public func hash(into hasher: inout Hasher)
/host/spi-builder-workspace/Sources/Valet/Valet.swift:290:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
288 | return false
289 | default:
290 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
291 | }
292 | }
/host/spi-builder-workspace/Sources/Valet/Valet.swift:419:23: error: cannot find 'kSecAttrAccessible' in scope
417 | #endif
418 |
419 | keychainQuery[kSecAttrAccessible as String] = "dk" // kSecAttrAccessibleAlways, but with the value hardcoded to avoid a build warning.
| `- error: cannot find 'kSecAttrAccessible' in scope
420 | let accessibilityDescription = "AccessibleAlways"
421 | let serviceAttribute: String
/host/spi-builder-workspace/Sources/Valet/Valet.swift:434:23: error: cannot find 'kSecAttrService' in scope
432 | #endif
433 | }
434 | keychainQuery[kSecAttrService as String] = serviceAttribute
| `- error: cannot find 'kSecAttrService' in scope
435 | try migrateObjects(matching: keychainQuery, removeOnCompletion: removeOnCompletion)
436 | }
/host/spi-builder-workspace/Sources/Valet/Valet.swift:454:23: error: cannot find 'kSecAttrAccessible' in scope
452 | #endif
453 |
454 | keychainQuery[kSecAttrAccessible as String] = "dku" // kSecAttrAccessibleAlwaysThisDeviceOnly, but with the value hardcoded to avoid a build warning.
| `- error: cannot find 'kSecAttrAccessible' in scope
455 | let accessibilityDescription = "AccessibleAlwaysThisDeviceOnly"
456 | let serviceAttribute: String
/host/spi-builder-workspace/Sources/Valet/Valet.swift:469:23: error: cannot find 'kSecAttrService' in scope
467 | #endif
468 | }
469 | keychainQuery[kSecAttrService as String] = serviceAttribute
| `- error: cannot find 'kSecAttrService' in scope
470 | try migrateObjects(matching: keychainQuery, removeOnCompletion: removeOnCompletion)
471 | }
[10/20] Compiling Valet SecureEnclaveValet.swift
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:21:2: error: Objective-C interoperability is disabled
19 |
20 | /// Reads and writes keychain elements that are stored on the Secure Enclave using Accessibility attribute `.whenPasscodeSetThisDeviceOnly`. Accessing these keychain elements will require the user to confirm their presence via Touch ID, Face ID, or passcode entry. If no passcode is set on the device, accessing the keychain via a `SecureEnclaveValet` will fail. Data is removed from the Secure Enclave when the user removes a passcode from the device.
21 | @objc(VALSecureEnclaveValet)
| `- error: Objective-C interoperability is disabled
22 | public final class SecureEnclaveValet: NSObject, Sendable {
23 |
/host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift:35:40: error: cannot find 'NSMapTable' in scope
33 |
34 | private let lock = NSLock()
35 | private let identifierToValetMap = NSMapTable<NSString, T>.strongToWeakObjects()
| `- error: cannot find 'NSMapTable' in scope
36 | }
37 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:107:6: error: Objective-C interoperability is disabled
105 |
106 | public let identifier: Identifier
107 | @objc
| `- error: Objective-C interoperability is disabled
108 | public let accessControl: SecureEnclaveAccessControl
109 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:114:6: error: Objective-C interoperability is disabled
112 | /// - Returns: `true` if the keychain is accessible for reading and writing, `false` otherwise.
113 | /// - Note: Determined by writing a value to the keychain and then reading it back out. Will never prompt the user for Face ID, Touch ID, or password.
114 | @objc
| `- error: Objective-C interoperability is disabled
115 | public func canAccessKeychain() -> Bool {
116 | SecureEnclave.canAccessKeychain(with: service)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:124:6: error: Objective-C interoperability is disabled
122 | /// - Throws: An error of type `KeychainError`.
123 | /// - Important: Inserted data should be no larger than 4kb.
124 | @objc
| `- error: Objective-C interoperability is disabled
125 | public func setObject(_ object: Data, forKey key: String) throws(KeychainError) {
126 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:151:6: error: Objective-C interoperability is disabled
149 | /// - Returns: The data currently stored in the keychain for the provided key.
150 | /// - Throws: An error of type `KeychainError`.
151 | @objc
| `- error: Objective-C interoperability is disabled
152 | public func object(forKey key: String) throws(KeychainError) -> Data {
153 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:180:6: error: Objective-C interoperability is disabled
178 | /// - Throws: An error of type `KeychainError`.
179 | /// - Important: Inserted data should be no larger than 4kb.
180 | @objc
| `- error: Objective-C interoperability is disabled
181 | public func setString(_ string: String, forKey key: String) throws(KeychainError) {
182 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:207:6: error: Objective-C interoperability is disabled
205 | /// - Returns: The string currently stored in the keychain for the provided key.
206 | /// - Throws: An error of type `KeychainError`.
207 | @objc
| `- error: Objective-C interoperability is disabled
208 | public func string(forKey key: String) throws(KeychainError) -> String {
209 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:220:6: error: Objective-C interoperability is disabled
218 | /// - Parameter key: A key used to remove the desired object from the keychain.
219 | /// - Throws: An error of type `KeychainError`.
220 | @objc
| `- error: Objective-C interoperability is disabled
221 | public func removeObject(forKey key: String) throws(KeychainError) {
222 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:231:6: error: Objective-C interoperability is disabled
229 | /// Removes all key/object pairs accessible by this Valet instance from the keychain.
230 | /// - Throws: An error of type `KeychainError`.
231 | @objc
| `- error: Objective-C interoperability is disabled
232 | public func removeAllObjects() throws(KeychainError) {
233 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:246:6: error: Objective-C interoperability is disabled
244 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
245 | /// - Note: The keychain is not modified if an error is thrown.
246 | @objc
| `- error: Objective-C interoperability is disabled
247 | public func migrateObjects(matching query: [String : AnyHashable], removeOnCompletion: Bool) throws {
248 | try execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:259:6: error: Objective-C interoperability is disabled
257 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
258 | /// - Note: The keychain is not modified if an error is thrown.
259 | @objc
| `- error: Objective-C interoperability is disabled
260 | public func migrateObjects(from valet: Valet, removeOnCompletion: Bool) throws {
261 | try migrateObjects(matching: valet.baseKeychainQuery, removeOnCompletion: removeOnCompletion)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:308:6: error: Objective-C interoperability is disabled
306 | /// - accessControl: The desired access control for the SecureEnclaveValet.
307 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements with the desired flavor.
308 | @objc(valetWithIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
309 | public class func 🚫swift_valet(with identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
310 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:322:6: error: Objective-C interoperability is disabled
320 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements that can be shared across applications written by the same development team.
321 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
322 | @objc(sharedGroupValetWithAppIDPrefix:sharedGroupIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
323 | public class func 🚫swift_sharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
324 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:336:6: error: Objective-C interoperability is disabled
334 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements that can be shared across applications written by the same development team.
335 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
336 | @objc(sharedGroupValetWithGroupPrefix:sharedGroupIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
337 | public class func 🚫swift_sharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
338 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
[11/20] Compiling Valet SharedGroupIdentifier.swift
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:21:2: error: Objective-C interoperability is disabled
19 |
20 | /// Reads and writes keychain elements that are stored on the Secure Enclave using Accessibility attribute `.whenPasscodeSetThisDeviceOnly`. Accessing these keychain elements will require the user to confirm their presence via Touch ID, Face ID, or passcode entry. If no passcode is set on the device, accessing the keychain via a `SecureEnclaveValet` will fail. Data is removed from the Secure Enclave when the user removes a passcode from the device.
21 | @objc(VALSecureEnclaveValet)
| `- error: Objective-C interoperability is disabled
22 | public final class SecureEnclaveValet: NSObject, Sendable {
23 |
/host/spi-builder-workspace/Sources/Valet/Internal/WeakStorage.swift:35:40: error: cannot find 'NSMapTable' in scope
33 |
34 | private let lock = NSLock()
35 | private let identifierToValetMap = NSMapTable<NSString, T>.strongToWeakObjects()
| `- error: cannot find 'NSMapTable' in scope
36 | }
37 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:107:6: error: Objective-C interoperability is disabled
105 |
106 | public let identifier: Identifier
107 | @objc
| `- error: Objective-C interoperability is disabled
108 | public let accessControl: SecureEnclaveAccessControl
109 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:114:6: error: Objective-C interoperability is disabled
112 | /// - Returns: `true` if the keychain is accessible for reading and writing, `false` otherwise.
113 | /// - Note: Determined by writing a value to the keychain and then reading it back out. Will never prompt the user for Face ID, Touch ID, or password.
114 | @objc
| `- error: Objective-C interoperability is disabled
115 | public func canAccessKeychain() -> Bool {
116 | SecureEnclave.canAccessKeychain(with: service)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:124:6: error: Objective-C interoperability is disabled
122 | /// - Throws: An error of type `KeychainError`.
123 | /// - Important: Inserted data should be no larger than 4kb.
124 | @objc
| `- error: Objective-C interoperability is disabled
125 | public func setObject(_ object: Data, forKey key: String) throws(KeychainError) {
126 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:151:6: error: Objective-C interoperability is disabled
149 | /// - Returns: The data currently stored in the keychain for the provided key.
150 | /// - Throws: An error of type `KeychainError`.
151 | @objc
| `- error: Objective-C interoperability is disabled
152 | public func object(forKey key: String) throws(KeychainError) -> Data {
153 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:180:6: error: Objective-C interoperability is disabled
178 | /// - Throws: An error of type `KeychainError`.
179 | /// - Important: Inserted data should be no larger than 4kb.
180 | @objc
| `- error: Objective-C interoperability is disabled
181 | public func setString(_ string: String, forKey key: String) throws(KeychainError) {
182 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:207:6: error: Objective-C interoperability is disabled
205 | /// - Returns: The string currently stored in the keychain for the provided key.
206 | /// - Throws: An error of type `KeychainError`.
207 | @objc
| `- error: Objective-C interoperability is disabled
208 | public func string(forKey key: String) throws(KeychainError) -> String {
209 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:220:6: error: Objective-C interoperability is disabled
218 | /// - Parameter key: A key used to remove the desired object from the keychain.
219 | /// - Throws: An error of type `KeychainError`.
220 | @objc
| `- error: Objective-C interoperability is disabled
221 | public func removeObject(forKey key: String) throws(KeychainError) {
222 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:231:6: error: Objective-C interoperability is disabled
229 | /// Removes all key/object pairs accessible by this Valet instance from the keychain.
230 | /// - Throws: An error of type `KeychainError`.
231 | @objc
| `- error: Objective-C interoperability is disabled
232 | public func removeAllObjects() throws(KeychainError) {
233 | lock.lock()
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:246:6: error: Objective-C interoperability is disabled
244 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
245 | /// - Note: The keychain is not modified if an error is thrown.
246 | @objc
| `- error: Objective-C interoperability is disabled
247 | public func migrateObjects(matching query: [String : AnyHashable], removeOnCompletion: Bool) throws {
248 | try execute(in: lock) {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:259:6: error: Objective-C interoperability is disabled
257 | /// - Throws: An error of type `KeychainError` or `MigrationError`.
258 | /// - Note: The keychain is not modified if an error is thrown.
259 | @objc
| `- error: Objective-C interoperability is disabled
260 | public func migrateObjects(from valet: Valet, removeOnCompletion: Bool) throws {
261 | try migrateObjects(matching: valet.baseKeychainQuery, removeOnCompletion: removeOnCompletion)
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:308:6: error: Objective-C interoperability is disabled
306 | /// - accessControl: The desired access control for the SecureEnclaveValet.
307 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements with the desired flavor.
308 | @objc(valetWithIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
309 | public class func 🚫swift_valet(with identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
310 | guard let identifier = Identifier(nonEmpty: identifier) else {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:322:6: error: Objective-C interoperability is disabled
320 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements that can be shared across applications written by the same development team.
321 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
322 | @objc(sharedGroupValetWithAppIDPrefix:sharedGroupIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
323 | public class func 🚫swift_sharedGroupValet(appIDPrefix: String, nonEmptyIdentifier identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
324 | guard let identifier = SharedGroupIdentifier(appIDPrefix: appIDPrefix, nonEmptyGroup: identifier) else {
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveValet.swift:336:6: error: Objective-C interoperability is disabled
334 | /// - Returns: A SecureEnclaveValet that reads/writes keychain elements that can be shared across applications written by the same development team.
335 | /// - SeeAlso: https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps
336 | @objc(sharedGroupValetWithGroupPrefix:sharedGroupIdentifier:accessControl:)
| `- error: Objective-C interoperability is disabled
337 | public class func 🚫swift_sharedGroupValet(groupPrefix: String, nonEmptyIdentifier identifier: String, accessControl: SecureEnclaveAccessControl) -> SecureEnclaveValet? {
338 | guard let identifier = SharedGroupIdentifier(groupPrefix: groupPrefix, nonEmptyGroup: identifier) else {
[12/20] Compiling Valet MigratableKeyValuePair.swift
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:52:2: error: Objective-C interoperability is disabled
50 | // MARK: - Objective-C Compatibility
51 |
52 | @objc(VALMigratableKeyValuePairInput)
| `- error: Objective-C interoperability is disabled
53 | public final class ObjectiveCCompatibilityMigratableKeyValuePairInput: NSObject {
54 |
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:65:6: error: Objective-C interoperability is disabled
63 |
64 | /// The key in the key:value pair.
65 | @objc
| `- error: Objective-C interoperability is disabled
66 | public let key: Any
67 | /// The value in the key:value pair.
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:68:6: error: Objective-C interoperability is disabled
66 | public let key: Any
67 | /// The value in the key:value pair.
68 | @objc
| `- error: Objective-C interoperability is disabled
69 | public let value: Data
70 | }
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:72:2: error: Objective-C interoperability is disabled
70 | }
71 |
72 | @objc(VALMigratableKeyValuePairOutput)
| `- error: Objective-C interoperability is disabled
73 | public class ObjectiveCCompatibilityMigratableKeyValuePairOutput: NSObject {
74 |
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:81:6: error: Objective-C interoperability is disabled
79 | /// - key: The key in the key:value pair.
80 | /// - value: The value in the key:value pair.
81 | @objc
| `- error: Objective-C interoperability is disabled
82 | public init(key: String, value: Data) {
83 | self.key = key
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:92:6: error: Objective-C interoperability is disabled
90 | /// - key: The key in the key:value pair.
91 | /// - stringValue: The desired value in the key:value pair, represented as a String.
92 | @objc
| `- error: Objective-C interoperability is disabled
93 | public init(key: String, stringValue: String) {
94 | self.key = key
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:103:6: error: Objective-C interoperability is disabled
101 | /// A sentinal `ObjectiveCCompatibilityMigratableKeyValuePairOutput` that conveys that the migration should be prevented.
102 | @available(swift, obsoleted: 1.0)
103 | @objc
| `- error: Objective-C interoperability is disabled
104 | public static func preventMigration() -> ObjectiveCCompatibilityMigratableKeyValuePairOutput {
105 | ObjectiveCCompatibilityPreventMigrationOutput()
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:111:6: error: Objective-C interoperability is disabled
109 |
110 | /// The key in the key:value pair.
111 | @objc
| `- error: Objective-C interoperability is disabled
112 | public let key: String
113 | /// The value in the key:value pair.
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:114:6: error: Objective-C interoperability is disabled
112 | public let key: String
113 | /// The value in the key:value pair.
114 | @objc
| `- error: Objective-C interoperability is disabled
115 | public let value: Data
116 |
[13/20] Compiling Valet MigrationError.swift
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:52:2: error: Objective-C interoperability is disabled
50 | // MARK: - Objective-C Compatibility
51 |
52 | @objc(VALMigratableKeyValuePairInput)
| `- error: Objective-C interoperability is disabled
53 | public final class ObjectiveCCompatibilityMigratableKeyValuePairInput: NSObject {
54 |
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:65:6: error: Objective-C interoperability is disabled
63 |
64 | /// The key in the key:value pair.
65 | @objc
| `- error: Objective-C interoperability is disabled
66 | public let key: Any
67 | /// The value in the key:value pair.
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:68:6: error: Objective-C interoperability is disabled
66 | public let key: Any
67 | /// The value in the key:value pair.
68 | @objc
| `- error: Objective-C interoperability is disabled
69 | public let value: Data
70 | }
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:72:2: error: Objective-C interoperability is disabled
70 | }
71 |
72 | @objc(VALMigratableKeyValuePairOutput)
| `- error: Objective-C interoperability is disabled
73 | public class ObjectiveCCompatibilityMigratableKeyValuePairOutput: NSObject {
74 |
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:81:6: error: Objective-C interoperability is disabled
79 | /// - key: The key in the key:value pair.
80 | /// - value: The value in the key:value pair.
81 | @objc
| `- error: Objective-C interoperability is disabled
82 | public init(key: String, value: Data) {
83 | self.key = key
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:92:6: error: Objective-C interoperability is disabled
90 | /// - key: The key in the key:value pair.
91 | /// - stringValue: The desired value in the key:value pair, represented as a String.
92 | @objc
| `- error: Objective-C interoperability is disabled
93 | public init(key: String, stringValue: String) {
94 | self.key = key
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:103:6: error: Objective-C interoperability is disabled
101 | /// A sentinal `ObjectiveCCompatibilityMigratableKeyValuePairOutput` that conveys that the migration should be prevented.
102 | @available(swift, obsoleted: 1.0)
103 | @objc
| `- error: Objective-C interoperability is disabled
104 | public static func preventMigration() -> ObjectiveCCompatibilityMigratableKeyValuePairOutput {
105 | ObjectiveCCompatibilityPreventMigrationOutput()
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:111:6: error: Objective-C interoperability is disabled
109 |
110 | /// The key in the key:value pair.
111 | @objc
| `- error: Objective-C interoperability is disabled
112 | public let key: String
113 | /// The value in the key:value pair.
/host/spi-builder-workspace/Sources/Valet/MigratableKeyValuePair.swift:114:6: error: Objective-C interoperability is disabled
112 | public let key: String
113 | /// The value in the key:value pair.
114 | @objc
| `- error: Objective-C interoperability is disabled
115 | public let value: Data
116 |
[14/20] Compiling Valet Accessibility.swift
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:54:37: error: cannot find type 'CFString' in scope
52 |
53 | public var secAccessibilityAttribute: String {
54 | let accessibilityAttribute: CFString
| `- error: cannot find type 'CFString' in scope
55 |
56 | switch self {
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:58:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
56 | switch self {
57 | case .afterFirstUnlock:
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:60:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:62:38: error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:64:38: error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
| `- error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:66:38: error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
67 | }
68 |
[15/20] Compiling Valet CloudAccessibility.swift
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:54:37: error: cannot find type 'CFString' in scope
52 |
53 | public var secAccessibilityAttribute: String {
54 | let accessibilityAttribute: CFString
| `- error: cannot find type 'CFString' in scope
55 |
56 | switch self {
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:58:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
56 | switch self {
57 | case .afterFirstUnlock:
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:60:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:62:38: error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:64:38: error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
| `- error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:66:38: error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
67 | }
68 |
[16/20] Compiling Valet Identifier.swift
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:54:37: error: cannot find type 'CFString' in scope
52 |
53 | public var secAccessibilityAttribute: String {
54 | let accessibilityAttribute: CFString
| `- error: cannot find type 'CFString' in scope
55 |
56 | switch self {
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:58:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
56 | switch self {
57 | case .afterFirstUnlock:
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:60:38: error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
58 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlock
59 | case .afterFirstUnlockThisDeviceOnly:
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:62:38: error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
60 | accessibilityAttribute = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
61 | case .whenPasscodeSetThisDeviceOnly:
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:64:38: error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
62 | accessibilityAttribute = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
63 | case .whenUnlocked:
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
| `- error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
/host/spi-builder-workspace/Sources/Valet/Accessibility.swift:66:38: error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
64 | accessibilityAttribute = kSecAttrAccessibleWhenUnlocked
65 | case .whenUnlockedThisDeviceOnly:
66 | accessibilityAttribute = kSecAttrAccessibleWhenUnlockedThisDeviceOnly
| `- error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
67 | }
68 |
[17/20] Compiling Valet Configuration.swift
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:130:94: error: cannot find type 'OSStatus' in scope
128 | // MARK: Contains
129 |
130 | internal static func performCopy(forKey key: String, options: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
131 | guard !key.isEmpty else {
132 | return errSecParam
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:45:26: error: cannot find 'kSecAttrAccount' in scope
43 | } else {
44 | var secItemQuery = attributes
45 | secItemQuery[kSecAttrAccount as String] = canaryKey
| `- error: cannot find 'kSecAttrAccount' in scope
46 | secItemQuery[kSecValueData as String] = Data(canaryValue.utf8)
47 | try? SecItem.add(attributes: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:46:26: error: cannot find 'kSecValueData' in scope
44 | var secItemQuery = attributes
45 | secItemQuery[kSecAttrAccount as String] = canaryKey
46 | secItemQuery[kSecValueData as String] = Data(canaryValue.utf8)
| `- error: cannot find 'kSecValueData' in scope
47 | try? SecItem.add(attributes: secItemQuery)
48 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:70:22: error: cannot find 'kSecAttrAccount' in scope
68 |
69 | var secItemQuery = options
70 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
72 | secItemQuery[kSecReturnData as String] = true
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:71:22: error: cannot find 'kSecMatchLimit' in scope
69 | var secItemQuery = options
70 | secItemQuery[kSecAttrAccount as String] = key
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
| `- error: cannot find 'kSecMatchLimit' in scope
72 | secItemQuery[kSecReturnData as String] = true
73 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:71:50: error: cannot find 'kSecMatchLimitOne' in scope
69 | var secItemQuery = options
70 | secItemQuery[kSecAttrAccount as String] = key
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
| `- error: cannot find 'kSecMatchLimitOne' in scope
72 | secItemQuery[kSecReturnData as String] = true
73 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:72:22: error: cannot find 'kSecReturnData' in scope
70 | secItemQuery[kSecAttrAccount as String] = key
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
72 | secItemQuery[kSecReturnData as String] = true
| `- error: cannot find 'kSecReturnData' in scope
73 |
74 | return try SecItem.copy(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:94:22: error: cannot find 'kSecAttrAccount' in scope
92 |
93 | var secItemQuery = options
94 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
95 |
96 | #if os(macOS)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:102:58: error: cannot find 'errSecSuccess' in scope
100 | try SecItem.add(attributes: secItemQuery)
101 | #else
102 | if performCopy(forKey: key, options: options) == errSecSuccess {
| `- error: cannot find 'errSecSuccess' in scope
103 | try SecItem.update(attributes: [kSecValueData as String: object], forItemsMatching: secItemQuery)
104 | } else {
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:103:45: error: cannot find 'kSecValueData' in scope
101 | #else
102 | if performCopy(forKey: key, options: options) == errSecSuccess {
103 | try SecItem.update(attributes: [kSecValueData as String: object], forItemsMatching: secItemQuery)
| `- error: cannot find 'kSecValueData' in scope
104 | } else {
105 | secItemQuery[kSecValueData as String] = object
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:105:26: error: cannot find 'kSecValueData' in scope
103 | try SecItem.update(attributes: [kSecValueData as String: object], forItemsMatching: secItemQuery)
104 | } else {
105 | secItemQuery[kSecValueData as String] = object
| `- error: cannot find 'kSecValueData' in scope
106 | try SecItem.add(attributes: secItemQuery)
107 | }
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:119:22: error: cannot find 'kSecAttrAccount' in scope
117 |
118 | var secItemQuery = options
119 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
120 |
121 | try SecItem.deleteItems(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:136:22: error: cannot find 'kSecAttrAccount' in scope
134 |
135 | var secItemQuery = options
136 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
137 |
138 | return SecItem.performCopy(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:145:22: error: cannot find 'kSecMatchLimit' in scope
143 | internal static func allKeys(options: [String: AnyHashable]) throws(KeychainError) -> Set<String> {
144 | var secItemQuery = options
145 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimit' in scope
146 | secItemQuery[kSecReturnAttributes as String] = true
147 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:145:50: error: cannot find 'kSecMatchLimitAll' in scope
143 | internal static func allKeys(options: [String: AnyHashable]) throws(KeychainError) -> Set<String> {
144 | var secItemQuery = options
145 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimitAll' in scope
146 | secItemQuery[kSecReturnAttributes as String] = true
147 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:146:22: error: cannot find 'kSecReturnAttributes' in scope
144 | var secItemQuery = options
145 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
146 | secItemQuery[kSecReturnAttributes as String] = true
| `- error: cannot find 'kSecReturnAttributes' in scope
147 |
148 | do {
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:150:100: error: cannot find 'kSecAttrAccount' in scope
148 | do {
149 | let collection: Any = try SecItem.copy(matching: secItemQuery)
150 | if let singleMatch = collection as? [String: AnyHashable], let singleKey = singleMatch[kSecAttrAccount as String] as? String, singleKey != canaryKey {
| `- error: cannot find 'kSecAttrAccount' in scope
151 | return Set([singleKey])
152 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:155:42: error: cannot find 'kSecAttrAccount' in scope
153 | } else if let multipleMatches = collection as? [[String: AnyHashable]] {
154 | return Set(multipleMatches.compactMap({ attributes in
155 | let key = attributes[kSecAttrAccount as String] as? String
| `- error: cannot find 'kSecAttrAccount' in scope
156 | return key != canaryKey ? key : nil
157 | }))
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:180:21: error: cannot find 'kSecMatchLimit' in scope
178 | }
179 |
180 | guard query[kSecMatchLimit as String] as? String as CFString? != kSecMatchLimitOne else {
| `- error: cannot find 'kSecMatchLimit' in scope
181 | // Migration requires kSecMatchLimit to be set to kSecMatchLimitAll.
182 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:180:74: error: cannot find 'kSecMatchLimitOne' in scope
178 | }
179 |
180 | guard query[kSecMatchLimit as String] as? String as CFString? != kSecMatchLimitOne else {
| `- error: cannot find 'kSecMatchLimitOne' in scope
181 | // Migration requires kSecMatchLimit to be set to kSecMatchLimitAll.
182 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:180:61: error: cannot find type 'CFString' in scope
178 | }
179 |
180 | guard query[kSecMatchLimit as String] as? String as CFString? != kSecMatchLimitOne else {
| `- error: cannot find type 'CFString' in scope
181 | // Migration requires kSecMatchLimit to be set to kSecMatchLimitAll.
182 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:185:21: error: cannot find 'kSecReturnData' in scope
183 | }
184 |
185 | guard query[kSecReturnData as String] as? Bool != true else {
| `- error: cannot find 'kSecReturnData' in scope
186 | // kSecReturnData is not supported in a migration query.
187 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:190:21: error: cannot find 'kSecReturnAttributes' in scope
188 | }
189 |
190 | guard query[kSecReturnAttributes as String] as? Bool != false else {
| `- error: cannot find 'kSecReturnAttributes' in scope
191 | // Migration requires kSecReturnAttributes to be set to kCFBooleanTrue.
192 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:195:21: error: cannot find 'kSecReturnRef' in scope
193 | }
194 |
195 | guard query[kSecReturnRef as String] as? Bool != true else {
| `- error: cannot find 'kSecReturnRef' in scope
196 | // kSecReturnRef is not supported in a migration query.
197 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:200:21: error: cannot find 'kSecReturnPersistentRef' in scope
198 | }
199 |
200 | guard query[kSecReturnPersistentRef as String] as? Bool != false else {
| `- error: cannot find 'kSecReturnPersistentRef' in scope
201 | // Migration requires kSecReturnPersistentRef to be set to kCFBooleanTrue.
202 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:205:21: error: cannot find 'kSecClass' in scope
203 | }
204 |
205 | guard query[kSecClass as String] as? String as CFString? == kSecClassGenericPassword else {
| `- error: cannot find 'kSecClass' in scope
206 | // Migration requires kSecClass to be set to kSecClassGenericPassword to avoid data loss.
207 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:205:69: error: cannot find 'kSecClassGenericPassword' in scope
203 | }
204 |
205 | guard query[kSecClass as String] as? String as CFString? == kSecClassGenericPassword else {
| `- error: cannot find 'kSecClassGenericPassword' in scope
206 | // Migration requires kSecClass to be set to kSecClassGenericPassword to avoid data loss.
207 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:205:56: error: cannot find type 'CFString' in scope
203 | }
204 |
205 | guard query[kSecClass as String] as? String as CFString? == kSecClassGenericPassword else {
| `- error: cannot find type 'CFString' in scope
206 | // Migration requires kSecClass to be set to kSecClassGenericPassword to avoid data loss.
207 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:210:21: error: cannot find 'kSecAttrAccessControl' in scope
208 | }
209 |
210 | guard query[kSecAttrAccessControl as String] == nil else {
| `- error: cannot find 'kSecAttrAccessControl' in scope
211 | // kSecAttrAccessControl is not supported in a migration query. Keychain items can not be migrated en masse from the Secure Enclave.
212 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:216:22: error: cannot find 'kSecMatchLimit' in scope
214 |
215 | var secItemQuery = query
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimit' in scope
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:216:50: error: cannot find 'kSecMatchLimitAll' in scope
214 |
215 | var secItemQuery = query
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimitAll' in scope
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:217:22: error: cannot find 'kSecReturnAttributes' in scope
215 | var secItemQuery = query
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
217 | secItemQuery[kSecReturnAttributes as String] = true
| `- error: cannot find 'kSecReturnAttributes' in scope
218 | secItemQuery[kSecReturnData as String] = false
219 | secItemQuery[kSecReturnRef as String] = false
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:218:22: error: cannot find 'kSecReturnData' in scope
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
| `- error: cannot find 'kSecReturnData' in scope
219 | secItemQuery[kSecReturnRef as String] = false
220 | secItemQuery[kSecReturnPersistentRef as String] = true
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:219:22: error: cannot find 'kSecReturnRef' in scope
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
219 | secItemQuery[kSecReturnRef as String] = false
| `- error: cannot find 'kSecReturnRef' in scope
220 | secItemQuery[kSecReturnPersistentRef as String] = true
221 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:220:22: error: cannot find 'kSecReturnPersistentRef' in scope
218 | secItemQuery[kSecReturnData as String] = false
219 | secItemQuery[kSecReturnRef as String] = false
220 | secItemQuery[kSecReturnPersistentRef as String] = true
| `- error: cannot find 'kSecReturnPersistentRef' in scope
221 |
222 | let collection: Any = try SecItem.copy(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:237:62: error: cannot find 'kSecValuePersistentRef' in scope
235 | var retrievedItemsToMigrateWithData = [[String : AnyHashable]]()
236 | for retrievedItem in retrievedItemsToMigrate {
237 | guard let retrievedPersistentRef = retrievedItem[kSecValuePersistentRef as String] else {
| `- error: cannot find 'kSecValuePersistentRef' in scope
238 | throw KeychainError.couldNotAccessKeychain
239 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:243:17: error: cannot find 'kSecValuePersistentRef' in scope
241 |
242 | let retrieveDataQuery: [String : AnyHashable] = [
243 | kSecValuePersistentRef as String : retrievedPersistentRef,
| `- error: cannot find 'kSecValuePersistentRef' in scope
244 | kSecReturnData as String : true
245 | ]
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:244:17: error: cannot find 'kSecReturnData' in scope
242 | let retrieveDataQuery: [String : AnyHashable] = [
243 | kSecValuePersistentRef as String : retrievedPersistentRef,
244 | kSecReturnData as String : true
| `- error: cannot find 'kSecReturnData' in scope
245 | ]
246 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:254:48: error: cannot find 'kSecValueData' in scope
252 |
253 | var retrievedItemToMigrateWithData = retrievedItem
254 | retrievedItemToMigrateWithData[kSecValueData as String] = data
| `- error: cannot find 'kSecValueData' in scope
255 | retrievedItemsToMigrateWithData.append(retrievedItemToMigrateWithData)
256 | } catch KeychainError.itemNotFound {
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:268:43: error: cannot find 'kSecAttrAccount' in scope
266 | var keyValuePairsToMigrate = [String: Data]()
267 | for keychainEntry in retrievedItemsToMigrateWithData {
268 | guard let key = keychainEntry[kSecAttrAccount as String] else {
| `- error: cannot find 'kSecAttrAccount' in scope
269 | throw MigrationError.keyToMigrateInvalid
270 | }
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:277:44: error: cannot find 'kSecValueData' in scope
275 | }
276 |
277 | guard let data = keychainEntry[kSecValueData as String] as? Data else {
| `- error: cannot find 'kSecValueData' in scope
278 | // This state should be impossible, per Apple's documentation for `kSecValueData`.
279 | throw MigrationError.dataToMigrateInvalid
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:299:100: error: cannot find 'errSecItemNotFound' in scope
297 | }
298 |
299 | if Keychain.performCopy(forKey: migratablePair.key, options: destinationAttributes) == errSecItemNotFound {
| `- error: cannot find 'errSecItemNotFound' in scope
300 | keyValuePairsToMigrate[migratablePair.key] = migratablePair.value
301 | } else {
[18/20] Compiling Valet Keychain.swift
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:130:94: error: cannot find type 'OSStatus' in scope
128 | // MARK: Contains
129 |
130 | internal static func performCopy(forKey key: String, options: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
131 | guard !key.isEmpty else {
132 | return errSecParam
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:45:26: error: cannot find 'kSecAttrAccount' in scope
43 | } else {
44 | var secItemQuery = attributes
45 | secItemQuery[kSecAttrAccount as String] = canaryKey
| `- error: cannot find 'kSecAttrAccount' in scope
46 | secItemQuery[kSecValueData as String] = Data(canaryValue.utf8)
47 | try? SecItem.add(attributes: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:46:26: error: cannot find 'kSecValueData' in scope
44 | var secItemQuery = attributes
45 | secItemQuery[kSecAttrAccount as String] = canaryKey
46 | secItemQuery[kSecValueData as String] = Data(canaryValue.utf8)
| `- error: cannot find 'kSecValueData' in scope
47 | try? SecItem.add(attributes: secItemQuery)
48 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:70:22: error: cannot find 'kSecAttrAccount' in scope
68 |
69 | var secItemQuery = options
70 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
72 | secItemQuery[kSecReturnData as String] = true
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:71:22: error: cannot find 'kSecMatchLimit' in scope
69 | var secItemQuery = options
70 | secItemQuery[kSecAttrAccount as String] = key
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
| `- error: cannot find 'kSecMatchLimit' in scope
72 | secItemQuery[kSecReturnData as String] = true
73 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:71:50: error: cannot find 'kSecMatchLimitOne' in scope
69 | var secItemQuery = options
70 | secItemQuery[kSecAttrAccount as String] = key
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
| `- error: cannot find 'kSecMatchLimitOne' in scope
72 | secItemQuery[kSecReturnData as String] = true
73 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:72:22: error: cannot find 'kSecReturnData' in scope
70 | secItemQuery[kSecAttrAccount as String] = key
71 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitOne
72 | secItemQuery[kSecReturnData as String] = true
| `- error: cannot find 'kSecReturnData' in scope
73 |
74 | return try SecItem.copy(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:94:22: error: cannot find 'kSecAttrAccount' in scope
92 |
93 | var secItemQuery = options
94 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
95 |
96 | #if os(macOS)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:102:58: error: cannot find 'errSecSuccess' in scope
100 | try SecItem.add(attributes: secItemQuery)
101 | #else
102 | if performCopy(forKey: key, options: options) == errSecSuccess {
| `- error: cannot find 'errSecSuccess' in scope
103 | try SecItem.update(attributes: [kSecValueData as String: object], forItemsMatching: secItemQuery)
104 | } else {
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:103:45: error: cannot find 'kSecValueData' in scope
101 | #else
102 | if performCopy(forKey: key, options: options) == errSecSuccess {
103 | try SecItem.update(attributes: [kSecValueData as String: object], forItemsMatching: secItemQuery)
| `- error: cannot find 'kSecValueData' in scope
104 | } else {
105 | secItemQuery[kSecValueData as String] = object
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:105:26: error: cannot find 'kSecValueData' in scope
103 | try SecItem.update(attributes: [kSecValueData as String: object], forItemsMatching: secItemQuery)
104 | } else {
105 | secItemQuery[kSecValueData as String] = object
| `- error: cannot find 'kSecValueData' in scope
106 | try SecItem.add(attributes: secItemQuery)
107 | }
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:119:22: error: cannot find 'kSecAttrAccount' in scope
117 |
118 | var secItemQuery = options
119 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
120 |
121 | try SecItem.deleteItems(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:136:22: error: cannot find 'kSecAttrAccount' in scope
134 |
135 | var secItemQuery = options
136 | secItemQuery[kSecAttrAccount as String] = key
| `- error: cannot find 'kSecAttrAccount' in scope
137 |
138 | return SecItem.performCopy(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:145:22: error: cannot find 'kSecMatchLimit' in scope
143 | internal static func allKeys(options: [String: AnyHashable]) throws(KeychainError) -> Set<String> {
144 | var secItemQuery = options
145 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimit' in scope
146 | secItemQuery[kSecReturnAttributes as String] = true
147 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:145:50: error: cannot find 'kSecMatchLimitAll' in scope
143 | internal static func allKeys(options: [String: AnyHashable]) throws(KeychainError) -> Set<String> {
144 | var secItemQuery = options
145 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimitAll' in scope
146 | secItemQuery[kSecReturnAttributes as String] = true
147 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:146:22: error: cannot find 'kSecReturnAttributes' in scope
144 | var secItemQuery = options
145 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
146 | secItemQuery[kSecReturnAttributes as String] = true
| `- error: cannot find 'kSecReturnAttributes' in scope
147 |
148 | do {
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:150:100: error: cannot find 'kSecAttrAccount' in scope
148 | do {
149 | let collection: Any = try SecItem.copy(matching: secItemQuery)
150 | if let singleMatch = collection as? [String: AnyHashable], let singleKey = singleMatch[kSecAttrAccount as String] as? String, singleKey != canaryKey {
| `- error: cannot find 'kSecAttrAccount' in scope
151 | return Set([singleKey])
152 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:155:42: error: cannot find 'kSecAttrAccount' in scope
153 | } else if let multipleMatches = collection as? [[String: AnyHashable]] {
154 | return Set(multipleMatches.compactMap({ attributes in
155 | let key = attributes[kSecAttrAccount as String] as? String
| `- error: cannot find 'kSecAttrAccount' in scope
156 | return key != canaryKey ? key : nil
157 | }))
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:180:21: error: cannot find 'kSecMatchLimit' in scope
178 | }
179 |
180 | guard query[kSecMatchLimit as String] as? String as CFString? != kSecMatchLimitOne else {
| `- error: cannot find 'kSecMatchLimit' in scope
181 | // Migration requires kSecMatchLimit to be set to kSecMatchLimitAll.
182 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:180:74: error: cannot find 'kSecMatchLimitOne' in scope
178 | }
179 |
180 | guard query[kSecMatchLimit as String] as? String as CFString? != kSecMatchLimitOne else {
| `- error: cannot find 'kSecMatchLimitOne' in scope
181 | // Migration requires kSecMatchLimit to be set to kSecMatchLimitAll.
182 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:180:61: error: cannot find type 'CFString' in scope
178 | }
179 |
180 | guard query[kSecMatchLimit as String] as? String as CFString? != kSecMatchLimitOne else {
| `- error: cannot find type 'CFString' in scope
181 | // Migration requires kSecMatchLimit to be set to kSecMatchLimitAll.
182 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:185:21: error: cannot find 'kSecReturnData' in scope
183 | }
184 |
185 | guard query[kSecReturnData as String] as? Bool != true else {
| `- error: cannot find 'kSecReturnData' in scope
186 | // kSecReturnData is not supported in a migration query.
187 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:190:21: error: cannot find 'kSecReturnAttributes' in scope
188 | }
189 |
190 | guard query[kSecReturnAttributes as String] as? Bool != false else {
| `- error: cannot find 'kSecReturnAttributes' in scope
191 | // Migration requires kSecReturnAttributes to be set to kCFBooleanTrue.
192 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:195:21: error: cannot find 'kSecReturnRef' in scope
193 | }
194 |
195 | guard query[kSecReturnRef as String] as? Bool != true else {
| `- error: cannot find 'kSecReturnRef' in scope
196 | // kSecReturnRef is not supported in a migration query.
197 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:200:21: error: cannot find 'kSecReturnPersistentRef' in scope
198 | }
199 |
200 | guard query[kSecReturnPersistentRef as String] as? Bool != false else {
| `- error: cannot find 'kSecReturnPersistentRef' in scope
201 | // Migration requires kSecReturnPersistentRef to be set to kCFBooleanTrue.
202 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:205:21: error: cannot find 'kSecClass' in scope
203 | }
204 |
205 | guard query[kSecClass as String] as? String as CFString? == kSecClassGenericPassword else {
| `- error: cannot find 'kSecClass' in scope
206 | // Migration requires kSecClass to be set to kSecClassGenericPassword to avoid data loss.
207 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:205:69: error: cannot find 'kSecClassGenericPassword' in scope
203 | }
204 |
205 | guard query[kSecClass as String] as? String as CFString? == kSecClassGenericPassword else {
| `- error: cannot find 'kSecClassGenericPassword' in scope
206 | // Migration requires kSecClass to be set to kSecClassGenericPassword to avoid data loss.
207 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:205:56: error: cannot find type 'CFString' in scope
203 | }
204 |
205 | guard query[kSecClass as String] as? String as CFString? == kSecClassGenericPassword else {
| `- error: cannot find type 'CFString' in scope
206 | // Migration requires kSecClass to be set to kSecClassGenericPassword to avoid data loss.
207 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:210:21: error: cannot find 'kSecAttrAccessControl' in scope
208 | }
209 |
210 | guard query[kSecAttrAccessControl as String] == nil else {
| `- error: cannot find 'kSecAttrAccessControl' in scope
211 | // kSecAttrAccessControl is not supported in a migration query. Keychain items can not be migrated en masse from the Secure Enclave.
212 | throw MigrationError.invalidQuery
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:216:22: error: cannot find 'kSecMatchLimit' in scope
214 |
215 | var secItemQuery = query
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimit' in scope
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:216:50: error: cannot find 'kSecMatchLimitAll' in scope
214 |
215 | var secItemQuery = query
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
| `- error: cannot find 'kSecMatchLimitAll' in scope
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:217:22: error: cannot find 'kSecReturnAttributes' in scope
215 | var secItemQuery = query
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
217 | secItemQuery[kSecReturnAttributes as String] = true
| `- error: cannot find 'kSecReturnAttributes' in scope
218 | secItemQuery[kSecReturnData as String] = false
219 | secItemQuery[kSecReturnRef as String] = false
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:218:22: error: cannot find 'kSecReturnData' in scope
216 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
| `- error: cannot find 'kSecReturnData' in scope
219 | secItemQuery[kSecReturnRef as String] = false
220 | secItemQuery[kSecReturnPersistentRef as String] = true
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:219:22: error: cannot find 'kSecReturnRef' in scope
217 | secItemQuery[kSecReturnAttributes as String] = true
218 | secItemQuery[kSecReturnData as String] = false
219 | secItemQuery[kSecReturnRef as String] = false
| `- error: cannot find 'kSecReturnRef' in scope
220 | secItemQuery[kSecReturnPersistentRef as String] = true
221 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:220:22: error: cannot find 'kSecReturnPersistentRef' in scope
218 | secItemQuery[kSecReturnData as String] = false
219 | secItemQuery[kSecReturnRef as String] = false
220 | secItemQuery[kSecReturnPersistentRef as String] = true
| `- error: cannot find 'kSecReturnPersistentRef' in scope
221 |
222 | let collection: Any = try SecItem.copy(matching: secItemQuery)
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:237:62: error: cannot find 'kSecValuePersistentRef' in scope
235 | var retrievedItemsToMigrateWithData = [[String : AnyHashable]]()
236 | for retrievedItem in retrievedItemsToMigrate {
237 | guard let retrievedPersistentRef = retrievedItem[kSecValuePersistentRef as String] else {
| `- error: cannot find 'kSecValuePersistentRef' in scope
238 | throw KeychainError.couldNotAccessKeychain
239 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:243:17: error: cannot find 'kSecValuePersistentRef' in scope
241 |
242 | let retrieveDataQuery: [String : AnyHashable] = [
243 | kSecValuePersistentRef as String : retrievedPersistentRef,
| `- error: cannot find 'kSecValuePersistentRef' in scope
244 | kSecReturnData as String : true
245 | ]
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:244:17: error: cannot find 'kSecReturnData' in scope
242 | let retrieveDataQuery: [String : AnyHashable] = [
243 | kSecValuePersistentRef as String : retrievedPersistentRef,
244 | kSecReturnData as String : true
| `- error: cannot find 'kSecReturnData' in scope
245 | ]
246 |
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:254:48: error: cannot find 'kSecValueData' in scope
252 |
253 | var retrievedItemToMigrateWithData = retrievedItem
254 | retrievedItemToMigrateWithData[kSecValueData as String] = data
| `- error: cannot find 'kSecValueData' in scope
255 | retrievedItemsToMigrateWithData.append(retrievedItemToMigrateWithData)
256 | } catch KeychainError.itemNotFound {
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:268:43: error: cannot find 'kSecAttrAccount' in scope
266 | var keyValuePairsToMigrate = [String: Data]()
267 | for keychainEntry in retrievedItemsToMigrateWithData {
268 | guard let key = keychainEntry[kSecAttrAccount as String] else {
| `- error: cannot find 'kSecAttrAccount' in scope
269 | throw MigrationError.keyToMigrateInvalid
270 | }
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:277:44: error: cannot find 'kSecValueData' in scope
275 | }
276 |
277 | guard let data = keychainEntry[kSecValueData as String] as? Data else {
| `- error: cannot find 'kSecValueData' in scope
278 | // This state should be impossible, per Apple's documentation for `kSecValueData`.
279 | throw MigrationError.dataToMigrateInvalid
/host/spi-builder-workspace/Sources/Valet/Internal/Keychain.swift:299:100: error: cannot find 'errSecItemNotFound' in scope
297 | }
298 |
299 | if Keychain.performCopy(forKey: migratablePair.key, options: destinationAttributes) == errSecItemNotFound {
| `- error: cannot find 'errSecItemNotFound' in scope
300 | keyValuePairsToMigrate[migratablePair.key] = migratablePair.value
301 | } else {
[19/20] Compiling Valet SecItem.swift
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:59:81: error: cannot find type 'OSStatus' in scope
57 | }
58 |
59 | internal static func performCopy(matching query: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
60 | guard !query.isEmpty else {
61 | // Must provide a query with at least one item
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:38:22: error: cannot find 'errSecNotAvailable' in scope
36 | }
37 |
38 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
39 | var result: AnyObject? = nil
40 | execute(in: secItemLock) {
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:41:22: error: cannot find 'SecItemCopyMatching' in scope
39 | var result: AnyObject? = nil
40 | execute(in: secItemLock) {
41 | status = SecItemCopyMatching(query as CFDictionary, &result)
| `- error: cannot find 'SecItemCopyMatching' in scope
42 | }
43 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:41:51: error: cannot find type 'CFDictionary' in scope
39 | var result: AnyObject? = nil
40 | execute(in: secItemLock) {
41 | status = SecItemCopyMatching(query as CFDictionary, &result)
| `- error: cannot find type 'CFDictionary' in scope
42 | }
43 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:44:22: error: cannot find 'errSecSuccess' in scope
42 | }
43 |
44 | if status == errSecSuccess {
| `- error: cannot find 'errSecSuccess' in scope
45 | if let result = result as? DesiredType {
46 | return result
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:37:18: error: cannot find type 'OSStatus' in scope
35 | case emptyValue
36 |
37 | init(status: OSStatus) {
| `- error: cannot find type 'OSStatus' in scope
38 | switch status {
39 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:55:19: error: no exact matches in call to initializer
53 |
54 | } else {
55 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
56 | }
57 | }
Foundation.__BridgedNSError:5:12: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
2 | public var _domain: String { get }
3 | public var _code: Int { get }
4 | public init?(rawValue: Self.RawValue)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
5 | public init?(_bridgedNSError: NSError)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
6 | public var hashValue: Int { get }
7 | public func hash(into hasher: inout Hasher)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:55:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
53 |
54 | } else {
55 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
56 | }
57 | }
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:65:22: error: cannot find 'errSecNotAvailable' in scope
63 | }
64 |
65 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:67:22: error: cannot find 'SecItemCopyMatching' in scope
65 | var status = errSecNotAvailable
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
| `- error: cannot find 'SecItemCopyMatching' in scope
68 | }
69 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:67:51: error: cannot find type 'CFDictionary' in scope
65 | var status = errSecNotAvailable
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
| `- error: cannot find type 'CFDictionary' in scope
68 | }
69 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:67:65: error: 'nil' requires a contextual type
65 | var status = errSecNotAvailable
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
| `- error: 'nil' requires a contextual type
68 | }
69 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:78:22: error: cannot find 'errSecNotAvailable' in scope
76 | }
77 |
78 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
79 | var result: AnyObject? = nil
80 | execute(in: secItemLock) {
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:81:22: error: cannot find 'SecItemAdd' in scope
79 | var result: AnyObject? = nil
80 | execute(in: secItemLock) {
81 | status = SecItemAdd(attributes as CFDictionary, &result)
| `- error: cannot find 'SecItemAdd' in scope
82 | }
83 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:81:47: error: cannot find type 'CFDictionary' in scope
79 | var result: AnyObject? = nil
80 | execute(in: secItemLock) {
81 | status = SecItemAdd(attributes as CFDictionary, &result)
| `- error: cannot find type 'CFDictionary' in scope
82 | }
83 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:85:14: error: cannot find 'errSecSuccess' in scope
83 |
84 | switch status {
85 | case errSecSuccess:
| `- error: cannot find 'errSecSuccess' in scope
86 | // We're done!
87 | break
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:89:19: error: no exact matches in call to initializer
87 | break
88 | default:
89 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
90 | }
91 | }
Foundation.__BridgedNSError:5:12: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
2 | public var _domain: String { get }
3 | public var _code: Int { get }
4 | public init?(rawValue: Self.RawValue)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
5 | public init?(_bridgedNSError: NSError)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
6 | public var hashValue: Int { get }
7 | public func hash(into hasher: inout Hasher)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:89:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
87 | break
88 | default:
89 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
90 | }
91 | }
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:102:22: error: cannot find 'errSecNotAvailable' in scope
100 | }
101 |
102 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:104:22: error: cannot find 'SecItemUpdate' in scope
102 | var status = errSecNotAvailable
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
| `- error: cannot find 'SecItemUpdate' in scope
105 | }
106 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:104:45: error: cannot find type 'CFDictionary' in scope
102 | var status = errSecNotAvailable
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
| `- error: cannot find type 'CFDictionary' in scope
105 | }
106 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:104:73: error: cannot find type 'CFDictionary' in scope
102 | var status = errSecNotAvailable
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
| `- error: cannot find type 'CFDictionary' in scope
105 | }
106 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:108:14: error: cannot find 'errSecSuccess' in scope
106 |
107 | switch status {
108 | case errSecSuccess:
| `- error: cannot find 'errSecSuccess' in scope
109 | // We're done!
110 | break
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:112:19: error: no exact matches in call to initializer
110 | break
111 | default:
112 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
113 | }
114 | }
Foundation.__BridgedNSError:5:12: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
2 | public var _domain: String { get }
3 | public var _code: Int { get }
4 | public init?(rawValue: Self.RawValue)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
5 | public init?(_bridgedNSError: NSError)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
6 | public var hashValue: Int { get }
7 | public func hash(into hasher: inout Hasher)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:112:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
110 | break
111 | default:
112 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
113 | }
114 | }
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:126:22: error: cannot find 'errSecNotAvailable' in scope
124 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
125 | #endif
126 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
127 | execute(in: secItemLock) {
128 | status = SecItemDelete(secItemQuery as CFDictionary)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:128:22: error: cannot find 'SecItemDelete' in scope
126 | var status = errSecNotAvailable
127 | execute(in: secItemLock) {
128 | status = SecItemDelete(secItemQuery as CFDictionary)
| `- error: cannot find 'SecItemDelete' in scope
129 | }
130 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:128:52: error: cannot find type 'CFDictionary' in scope
126 | var status = errSecNotAvailable
127 | execute(in: secItemLock) {
128 | status = SecItemDelete(secItemQuery as CFDictionary)
| `- error: cannot find type 'CFDictionary' in scope
129 | }
130 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:131:22: error: cannot find 'errSecSuccess' in scope
129 | }
130 |
131 | if status == errSecSuccess {
| `- error: cannot find 'errSecSuccess' in scope
132 | // We're done!
133 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:135:20: error: no exact matches in call to initializer
133 |
134 | } else {
135 | switch KeychainError(status: status) {
| `- error: no exact matches in call to initializer
136 | case .couldNotAccessKeychain:
137 | throw KeychainError.couldNotAccessKeychain
Foundation.__BridgedNSError:5:12: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
2 | public var _domain: String { get }
3 | public var _code: Int { get }
4 | public init?(rawValue: Self.RawValue)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
5 | public init?(_bridgedNSError: NSError)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
6 | public var hashValue: Int { get }
7 | public func hash(into hasher: inout Hasher)
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:63:13: error: cannot find 'kSecClass' in scope
61 | internal func generateBaseQuery() -> [String : AnyHashable] {
62 | var baseQuery: [String : AnyHashable] = [
63 | kSecClass as String : kSecClassGenericPassword as String,
| `- error: cannot find 'kSecClass' in scope
64 | kSecAttrService as String : secService,
65 | ]
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:63:35: error: cannot find 'kSecClassGenericPassword' in scope
61 | internal func generateBaseQuery() -> [String : AnyHashable] {
62 | var baseQuery: [String : AnyHashable] = [
63 | kSecClass as String : kSecClassGenericPassword as String,
| `- error: cannot find 'kSecClassGenericPassword' in scope
64 | kSecAttrService as String : secService,
65 | ]
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:64:13: error: cannot find 'kSecAttrService' in scope
62 | var baseQuery: [String : AnyHashable] = [
63 | kSecClass as String : kSecClassGenericPassword as String,
64 | kSecAttrService as String : secService,
| `- error: cannot find 'kSecAttrService' in scope
65 | ]
66 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:68:23: error: cannot find 'kSecUseDataProtectionKeychain' in scope
66 |
67 | if #available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) {
68 | baseQuery[kSecUseDataProtectionKeychain as String] = true
| `- error: cannot find 'kSecUseDataProtectionKeychain' in scope
69 | }
70 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:77:23: error: cannot find 'kSecAttrAccessGroup' in scope
75 |
76 | case let .sharedGroup(groupIdentifier, _, desiredConfiguration):
77 | baseQuery[kSecAttrAccessGroup as String] = groupIdentifier.description
| `- error: cannot find 'kSecAttrAccessGroup' in scope
78 | configuration = desiredConfiguration
79 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:92:23: error: cannot find 'kSecAttrAccessible' in scope
90 | switch configuration {
91 | case .valet:
92 | baseQuery[kSecAttrAccessible as String] = configuration.accessibility.secAccessibilityAttribute
| `- error: cannot find 'kSecAttrAccessible' in scope
93 |
94 | case .iCloud:
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:95:23: error: cannot find 'kSecAttrSynchronizable' in scope
93 |
94 | case .iCloud:
95 | baseQuery[kSecAttrSynchronizable as String] = true
| `- error: cannot find 'kSecAttrSynchronizable' in scope
96 | baseQuery[kSecAttrAccessible as String] = configuration.accessibility.secAccessibilityAttribute
97 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:96:23: error: cannot find 'kSecAttrAccessible' in scope
94 | case .iCloud:
95 | baseQuery[kSecAttrSynchronizable as String] = true
96 | baseQuery[kSecAttrAccessible as String] = configuration.accessibility.secAccessibilityAttribute
| `- error: cannot find 'kSecAttrAccessible' in scope
97 |
98 | case let .secureEnclave(desiredAccessControl),
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:101:23: error: cannot find 'kSecAttrAccessControl' in scope
99 | let .singlePromptSecureEnclave(desiredAccessControl):
100 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
101 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: cannot find 'kSecAttrAccessControl' in scope
102 | }
103 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:101:58: error: cannot find 'SecAccessControlCreateWithFlags' in scope
99 | let .singlePromptSecureEnclave(desiredAccessControl):
100 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
101 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: cannot find 'SecAccessControlCreateWithFlags' in scope
102 | }
103 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:101:95: error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
99 | let .singlePromptSecureEnclave(desiredAccessControl):
100 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
101 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
102 | }
103 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveAccessControl.swift:55:36: error: cannot find type 'SecAccessControlCreateFlags' in scope
53 | // MARK: Internal Properties
54 |
55 | internal var secAccessControl: SecAccessControlCreateFlags {
| `- error: cannot find type 'SecAccessControlCreateFlags' in scope
56 | switch self {
57 | case .userPresence:
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:101:90: error: 'nil' requires a contextual type
99 | let .singlePromptSecureEnclave(desiredAccessControl):
100 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
101 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: 'nil' requires a contextual type
102 | }
103 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:101:183: error: 'nil' requires a contextual type
99 | let .singlePromptSecureEnclave(desiredAccessControl):
100 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
101 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: 'nil' requires a contextual type
102 | }
103 |
[20/20] Compiling Valet Service.swift
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:59:81: error: cannot find type 'OSStatus' in scope
57 | }
58 |
59 | internal static func performCopy(matching query: [String : AnyHashable]) -> OSStatus {
| `- error: cannot find type 'OSStatus' in scope
60 | guard !query.isEmpty else {
61 | // Must provide a query with at least one item
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:38:22: error: cannot find 'errSecNotAvailable' in scope
36 | }
37 |
38 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
39 | var result: AnyObject? = nil
40 | execute(in: secItemLock) {
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:41:22: error: cannot find 'SecItemCopyMatching' in scope
39 | var result: AnyObject? = nil
40 | execute(in: secItemLock) {
41 | status = SecItemCopyMatching(query as CFDictionary, &result)
| `- error: cannot find 'SecItemCopyMatching' in scope
42 | }
43 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:41:51: error: cannot find type 'CFDictionary' in scope
39 | var result: AnyObject? = nil
40 | execute(in: secItemLock) {
41 | status = SecItemCopyMatching(query as CFDictionary, &result)
| `- error: cannot find type 'CFDictionary' in scope
42 | }
43 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:44:22: error: cannot find 'errSecSuccess' in scope
42 | }
43 |
44 | if status == errSecSuccess {
| `- error: cannot find 'errSecSuccess' in scope
45 | if let result = result as? DesiredType {
46 | return result
/host/spi-builder-workspace/Sources/Valet/KeychainError.swift:37:18: error: cannot find type 'OSStatus' in scope
35 | case emptyValue
36 |
37 | init(status: OSStatus) {
| `- error: cannot find type 'OSStatus' in scope
38 | switch status {
39 | case errSecItemNotFound:
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:55:19: error: no exact matches in call to initializer
53 |
54 | } else {
55 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
56 | }
57 | }
Foundation.__BridgedNSError:5:12: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
2 | public var _domain: String { get }
3 | public var _code: Int { get }
4 | public init?(rawValue: Self.RawValue)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
5 | public init?(_bridgedNSError: NSError)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
6 | public var hashValue: Int { get }
7 | public func hash(into hasher: inout Hasher)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:55:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
53 |
54 | } else {
55 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
56 | }
57 | }
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:65:22: error: cannot find 'errSecNotAvailable' in scope
63 | }
64 |
65 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:67:22: error: cannot find 'SecItemCopyMatching' in scope
65 | var status = errSecNotAvailable
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
| `- error: cannot find 'SecItemCopyMatching' in scope
68 | }
69 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:67:51: error: cannot find type 'CFDictionary' in scope
65 | var status = errSecNotAvailable
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
| `- error: cannot find type 'CFDictionary' in scope
68 | }
69 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:67:65: error: 'nil' requires a contextual type
65 | var status = errSecNotAvailable
66 | execute(in: secItemLock) {
67 | status = SecItemCopyMatching(query as CFDictionary, nil)
| `- error: 'nil' requires a contextual type
68 | }
69 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:78:22: error: cannot find 'errSecNotAvailable' in scope
76 | }
77 |
78 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
79 | var result: AnyObject? = nil
80 | execute(in: secItemLock) {
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:81:22: error: cannot find 'SecItemAdd' in scope
79 | var result: AnyObject? = nil
80 | execute(in: secItemLock) {
81 | status = SecItemAdd(attributes as CFDictionary, &result)
| `- error: cannot find 'SecItemAdd' in scope
82 | }
83 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:81:47: error: cannot find type 'CFDictionary' in scope
79 | var result: AnyObject? = nil
80 | execute(in: secItemLock) {
81 | status = SecItemAdd(attributes as CFDictionary, &result)
| `- error: cannot find type 'CFDictionary' in scope
82 | }
83 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:85:14: error: cannot find 'errSecSuccess' in scope
83 |
84 | switch status {
85 | case errSecSuccess:
| `- error: cannot find 'errSecSuccess' in scope
86 | // We're done!
87 | break
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:89:19: error: no exact matches in call to initializer
87 | break
88 | default:
89 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
90 | }
91 | }
Foundation.__BridgedNSError:5:12: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
2 | public var _domain: String { get }
3 | public var _code: Int { get }
4 | public init?(rawValue: Self.RawValue)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
5 | public init?(_bridgedNSError: NSError)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
6 | public var hashValue: Int { get }
7 | public func hash(into hasher: inout Hasher)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:89:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
87 | break
88 | default:
89 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
90 | }
91 | }
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:102:22: error: cannot find 'errSecNotAvailable' in scope
100 | }
101 |
102 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:104:22: error: cannot find 'SecItemUpdate' in scope
102 | var status = errSecNotAvailable
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
| `- error: cannot find 'SecItemUpdate' in scope
105 | }
106 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:104:45: error: cannot find type 'CFDictionary' in scope
102 | var status = errSecNotAvailable
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
| `- error: cannot find type 'CFDictionary' in scope
105 | }
106 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:104:73: error: cannot find type 'CFDictionary' in scope
102 | var status = errSecNotAvailable
103 | execute(in: secItemLock) {
104 | status = SecItemUpdate(query as CFDictionary, attributes as CFDictionary)
| `- error: cannot find type 'CFDictionary' in scope
105 | }
106 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:108:14: error: cannot find 'errSecSuccess' in scope
106 |
107 | switch status {
108 | case errSecSuccess:
| `- error: cannot find 'errSecSuccess' in scope
109 | // We're done!
110 | break
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:112:19: error: no exact matches in call to initializer
110 | break
111 | default:
112 | throw KeychainError(status: status)
| `- error: no exact matches in call to initializer
113 | }
114 | }
Foundation.__BridgedNSError:5:12: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
2 | public var _domain: String { get }
3 | public var _code: Int { get }
4 | public init?(rawValue: Self.RawValue)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
5 | public init?(_bridgedNSError: NSError)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
6 | public var hashValue: Int { get }
7 | public func hash(into hasher: inout Hasher)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:112:19: error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
110 | break
111 | default:
112 | throw KeychainError(status: status)
| |- error: value of optional type 'KeychainError?' must be unwrapped to a value of type 'KeychainError'
| |- note: coalesce using '??' to provide a default when the optional value contains 'nil'
| `- note: force-unwrap using '!' to abort execution if the optional value contains 'nil'
113 | }
114 | }
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:126:22: error: cannot find 'errSecNotAvailable' in scope
124 | secItemQuery[kSecMatchLimit as String] = kSecMatchLimitAll
125 | #endif
126 | var status = errSecNotAvailable
| `- error: cannot find 'errSecNotAvailable' in scope
127 | execute(in: secItemLock) {
128 | status = SecItemDelete(secItemQuery as CFDictionary)
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:128:22: error: cannot find 'SecItemDelete' in scope
126 | var status = errSecNotAvailable
127 | execute(in: secItemLock) {
128 | status = SecItemDelete(secItemQuery as CFDictionary)
| `- error: cannot find 'SecItemDelete' in scope
129 | }
130 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:128:52: error: cannot find type 'CFDictionary' in scope
126 | var status = errSecNotAvailable
127 | execute(in: secItemLock) {
128 | status = SecItemDelete(secItemQuery as CFDictionary)
| `- error: cannot find type 'CFDictionary' in scope
129 | }
130 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:131:22: error: cannot find 'errSecSuccess' in scope
129 | }
130 |
131 | if status == errSecSuccess {
| `- error: cannot find 'errSecSuccess' in scope
132 | // We're done!
133 |
/host/spi-builder-workspace/Sources/Valet/Internal/SecItem.swift:135:20: error: no exact matches in call to initializer
133 |
134 | } else {
135 | switch KeychainError(status: status) {
| `- error: no exact matches in call to initializer
136 | case .couldNotAccessKeychain:
137 | throw KeychainError.couldNotAccessKeychain
Foundation.__BridgedNSError:5:12: note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
2 | public var _domain: String { get }
3 | public var _code: Int { get }
4 | public init?(rawValue: Self.RawValue)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(rawValue:)')
5 | public init?(_bridgedNSError: NSError)
| `- note: incorrect labels for candidate (have: '(status:)', expected: '(_bridgedNSError:)')
6 | public var hashValue: Int { get }
7 | public func hash(into hasher: inout Hasher)
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:63:13: error: cannot find 'kSecClass' in scope
61 | internal func generateBaseQuery() -> [String : AnyHashable] {
62 | var baseQuery: [String : AnyHashable] = [
63 | kSecClass as String : kSecClassGenericPassword as String,
| `- error: cannot find 'kSecClass' in scope
64 | kSecAttrService as String : secService,
65 | ]
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:63:35: error: cannot find 'kSecClassGenericPassword' in scope
61 | internal func generateBaseQuery() -> [String : AnyHashable] {
62 | var baseQuery: [String : AnyHashable] = [
63 | kSecClass as String : kSecClassGenericPassword as String,
| `- error: cannot find 'kSecClassGenericPassword' in scope
64 | kSecAttrService as String : secService,
65 | ]
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:64:13: error: cannot find 'kSecAttrService' in scope
62 | var baseQuery: [String : AnyHashable] = [
63 | kSecClass as String : kSecClassGenericPassword as String,
64 | kSecAttrService as String : secService,
| `- error: cannot find 'kSecAttrService' in scope
65 | ]
66 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:68:23: error: cannot find 'kSecUseDataProtectionKeychain' in scope
66 |
67 | if #available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *) {
68 | baseQuery[kSecUseDataProtectionKeychain as String] = true
| `- error: cannot find 'kSecUseDataProtectionKeychain' in scope
69 | }
70 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:77:23: error: cannot find 'kSecAttrAccessGroup' in scope
75 |
76 | case let .sharedGroup(groupIdentifier, _, desiredConfiguration):
77 | baseQuery[kSecAttrAccessGroup as String] = groupIdentifier.description
| `- error: cannot find 'kSecAttrAccessGroup' in scope
78 | configuration = desiredConfiguration
79 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:92:23: error: cannot find 'kSecAttrAccessible' in scope
90 | switch configuration {
91 | case .valet:
92 | baseQuery[kSecAttrAccessible as String] = configuration.accessibility.secAccessibilityAttribute
| `- error: cannot find 'kSecAttrAccessible' in scope
93 |
94 | case .iCloud:
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:95:23: error: cannot find 'kSecAttrSynchronizable' in scope
93 |
94 | case .iCloud:
95 | baseQuery[kSecAttrSynchronizable as String] = true
| `- error: cannot find 'kSecAttrSynchronizable' in scope
96 | baseQuery[kSecAttrAccessible as String] = configuration.accessibility.secAccessibilityAttribute
97 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:96:23: error: cannot find 'kSecAttrAccessible' in scope
94 | case .iCloud:
95 | baseQuery[kSecAttrSynchronizable as String] = true
96 | baseQuery[kSecAttrAccessible as String] = configuration.accessibility.secAccessibilityAttribute
| `- error: cannot find 'kSecAttrAccessible' in scope
97 |
98 | case let .secureEnclave(desiredAccessControl),
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:101:23: error: cannot find 'kSecAttrAccessControl' in scope
99 | let .singlePromptSecureEnclave(desiredAccessControl):
100 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
101 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: cannot find 'kSecAttrAccessControl' in scope
102 | }
103 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:101:58: error: cannot find 'SecAccessControlCreateWithFlags' in scope
99 | let .singlePromptSecureEnclave(desiredAccessControl):
100 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
101 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: cannot find 'SecAccessControlCreateWithFlags' in scope
102 | }
103 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:101:95: error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
99 | let .singlePromptSecureEnclave(desiredAccessControl):
100 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
101 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
102 | }
103 |
/host/spi-builder-workspace/Sources/Valet/SecureEnclaveAccessControl.swift:55:36: error: cannot find type 'SecAccessControlCreateFlags' in scope
53 | // MARK: Internal Properties
54 |
55 | internal var secAccessControl: SecAccessControlCreateFlags {
| `- error: cannot find type 'SecAccessControlCreateFlags' in scope
56 | switch self {
57 | case .userPresence:
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:101:90: error: 'nil' requires a contextual type
99 | let .singlePromptSecureEnclave(desiredAccessControl):
100 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
101 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: 'nil' requires a contextual type
102 | }
103 |
/host/spi-builder-workspace/Sources/Valet/Internal/Service.swift:101:183: error: 'nil' requires a contextual type
99 | let .singlePromptSecureEnclave(desiredAccessControl):
100 | // Note that kSecAttrAccessControl and kSecAttrAccessible are mutually exclusive.
101 | baseQuery[kSecAttrAccessControl as String] = SecAccessControlCreateWithFlags(nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, desiredAccessControl.secAccessControl, nil)
| `- error: 'nil' requires a contextual type
102 | }
103 |
BUILD FAILURE 6.0 linux