Build Information
Successful build of Haversack, reference main (a02118
), with Swift 6.1 for macOS (SPM) on 28 Apr 2025 05:22:19 UTC.
Swift 6 data race errors: 24
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Build Log
19 | }
20 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:26:109: warning: converting a value of type '@Sendable (__shared sending Result<T, any Error>) -> ()' to type '(Result<T, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
24 | public func save<T: KeychainStorable>(_ item: T, itemSecurity: ItemSecurity, updateExisting: Bool) async throws -> T {
25 | try await withCheckedThrowingContinuation { continuation in
26 | save(item, itemSecurity: itemSecurity, updateExisting: updateExisting, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (__shared sending Result<T, any Error>) -> ()' to type '(Result<T, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
27 | }
28 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:33:98: warning: converting a value of type '@Sendable (__shared sending Result<SecKey, any Error>) -> ()' to type '(Result<SecKey, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
31 | public func generateKey(fromConfig config: KeyGenerationConfig, itemSecurity: ItemSecurity) async throws -> SecKey {
32 | try await withCheckedThrowingContinuation { continuation in
33 | generateKey(fromConfig: config, itemSecurity: itemSecurity, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (__shared sending Result<SecKey, any Error>) -> ()' to type '(Result<SecKey, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
34 | }
35 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:40:107: warning: converting a value of type '@Sendable (sending (any Error)?) -> ()' to type '((any Error)?) -> Void' risks causing data races; this is an error in the Swift 6 language mode
38 | public func delete<T: KeychainQuerying>(where query: T, treatNotFoundAsSuccess: Bool = true) async throws {
39 | let error = try await withCheckedThrowingContinuation { continuation in
40 | delete(where: query, treatNotFoundAsSuccess: treatNotFoundAsSuccess, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (sending (any Error)?) -> ()' to type '((any Error)?) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
41 | }
42 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:51:99: warning: converting a value of type '@Sendable (sending (any Error)?) -> ()' to type '((any Error)?) -> Void' risks causing data races; this is an error in the Swift 6 language mode
49 | public func delete<T: KeychainStorable>(_ item: T, treatNotFoundAsSuccess: Bool = true) async throws {
50 | let error = try await withCheckedThrowingContinuation { continuation in
51 | delete(item, treatNotFoundAsSuccess: treatNotFoundAsSuccess, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (sending (any Error)?) -> ()' to type '((any Error)?) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
52 | }
53 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:46:38: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
44 | let result: Result<T.Entity, Error>
45 | do {
46 | let localQuery = try makeSearchQuery(query, singleItem: true)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
47 |
48 | let entity = try self.configuration.strategy.searchForOne(localQuery)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:46:54: warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
39 | /// - completion: A function/block to be called when the search operation is completed.
40 | /// - result: The item or an error will be given to the completion handler.
41 | public func first<T: KeychainQuerying>(where query: T, completionQueue: OperationQueue? = nil,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
42 | completion: @escaping (_ result: Result<T.Entity, Error>) -> Void) {
43 | configuration.serialQueue.async {
44 | let result: Result<T.Entity, Error>
45 | do {
46 | let localQuery = try makeSearchQuery(query, singleItem: true)
| `- warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
47 |
48 | let entity = try self.configuration.strategy.searchForOne(localQuery)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:54:37: warning: capture of 'completion' with non-sendable type '(Result<T.Entity, any Error>) -> Void' in a '@Sendable' closure
52 | }
53 |
54 | call(completionHandler: completion, onQueue: completionQueue, with: result)
| |- warning: capture of 'completion' with non-sendable type '(Result<T.Entity, any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
55 | }
56 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:83:38: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
81 | let result: Result<[T.Entity], Error>
82 | do {
83 | let localQuery = try makeSearchQuery(query, singleItem: true)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
84 |
85 | let entities = try self.configuration.strategy.search(localQuery)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:83:54: warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
76 | /// - completion: A function/block to be called when the search operation is completed.
77 | /// - result: An array of items or an error will be given to the completion handler.
78 | public func search<T: KeychainQuerying>(where query: T, completionQueue: OperationQueue? = nil,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
79 | completion: @escaping (_ result: Result<[T.Entity], Error>) -> Void) {
80 | configuration.serialQueue.async {
81 | let result: Result<[T.Entity], Error>
82 | do {
83 | let localQuery = try makeSearchQuery(query, singleItem: true)
| `- warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
84 |
85 | let entities = try self.configuration.strategy.search(localQuery)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:91:37: warning: capture of 'completion' with non-sendable type '(Result<[T.Entity], any Error>) -> Void' in a '@Sendable' closure
89 | }
90 |
91 | call(completionHandler: completion, onQueue: completionQueue, with: result)
| |- warning: capture of 'completion' with non-sendable type '(Result<[T.Entity], any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
92 | }
93 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:129:35: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
127 |
128 | do {
129 | let theItem = try unsynchronizedSave(item, itemSecurity: itemSecurity, updateExisting: updateExisting)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
130 | result = .success(theItem)
131 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:129:54: warning: capture of 'item' with non-sendable type 'T' in a '@Sendable' closure
120 | /// - completion: A function/block to be called when the save operation is completed.
121 | /// - result: The original `item` that was saved or an error will be given to the completion handler.
122 | public func save<T: KeychainStorable>(_ item: T, itemSecurity: ItemSecurity, updateExisting: Bool,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
123 | completionQueue: OperationQueue? = nil,
124 | completion: @escaping (_ result: Result<T, Error>) -> Void) {
:
127 |
128 | do {
129 | let theItem = try unsynchronizedSave(item, itemSecurity: itemSecurity, updateExisting: updateExisting)
| `- warning: capture of 'item' with non-sendable type 'T' in a '@Sendable' closure
130 | result = .success(theItem)
131 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:129:74: warning: capture of 'itemSecurity' with non-sendable type 'ItemSecurity' in a '@Sendable' closure
127 |
128 | do {
129 | let theItem = try unsynchronizedSave(item, itemSecurity: itemSecurity, updateExisting: updateExisting)
| `- warning: capture of 'itemSecurity' with non-sendable type 'ItemSecurity' in a '@Sendable' closure
130 | result = .success(theItem)
131 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/ItemSecurity.swift:7:15: note: consider making struct 'ItemSecurity' conform to the 'Sendable' protocol
5 |
6 | /// Specify the security of the keychain item
7 | public struct ItemSecurity {
| `- note: consider making struct 'ItemSecurity' conform to the 'Sendable' protocol
8 |
9 | /// The Haversack standard security for keychain items.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:135:37: warning: capture of 'completion' with non-sendable type '(Result<T, any Error>) -> Void' in a '@Sendable' closure
133 | }
134 |
135 | call(completionHandler: completion, onQueue: completionQueue, with: result)
| |- warning: capture of 'completion' with non-sendable type '(Result<T, any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
136 | }
137 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:175:21: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
173 |
174 | do {
175 | try self.unsynchronizedDelete(item, treatNotFoundAsSuccess: treatNotFoundAsSuccess)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
176 | result = nil
177 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:175:47: warning: capture of 'item' with non-sendable type 'T' in a '@Sendable' closure
166 | /// - error: If an error occurs during the delete operation it will be given to the completion
167 | /// block; a `nil` represents no error.
168 | public func delete<T: KeychainStorable>(_ item: T, treatNotFoundAsSuccess: Bool = true,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
169 | completionQueue: OperationQueue? = nil,
170 | completion: @escaping (_ error: Error?) -> Void) {
:
173 |
174 | do {
175 | try self.unsynchronizedDelete(item, treatNotFoundAsSuccess: treatNotFoundAsSuccess)
| `- warning: capture of 'item' with non-sendable type 'T' in a '@Sendable' closure
176 | result = nil
177 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:183:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
181 | if let actualQueue = completionQueue {
182 | actualQueue.addOperation {
183 | completion(result)
| |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
184 | }
185 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:183:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
181 | if let actualQueue = completionQueue {
182 | actualQueue.addOperation {
183 | completion(result)
| |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
184 | }
185 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:220:38: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
218 |
219 | do {
220 | let localQuery = try makeDeleteQuery(query)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
221 | try self.configuration.strategy.delete(localQuery.query, treatNotFoundAsSuccess: treatNotFoundAsSuccess)
222 | result = nil
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:220:54: warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
211 | /// - error: If an error occurs during the delete operation it will be given to the completion
212 | /// block; a `nil` represents no error.
213 | public func delete<T: KeychainQuerying>(where query: T, treatNotFoundAsSuccess: Bool = true,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
214 | completionQueue: OperationQueue? = nil,
215 | completion: @escaping (_ error: Error?) -> Void) {
:
218 |
219 | do {
220 | let localQuery = try makeDeleteQuery(query)
| `- warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
221 | try self.configuration.strategy.delete(localQuery.query, treatNotFoundAsSuccess: treatNotFoundAsSuccess)
222 | result = nil
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:229:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
227 | if let actualQueue = completionQueue {
228 | actualQueue.addOperation {
229 | completion(result)
| |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
230 | }
231 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:229:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
227 | if let actualQueue = completionQueue {
228 | actualQueue.addOperation {
229 | completion(result)
| |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
230 | }
231 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:304:31: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
302 |
303 | do {
304 | let key = try unsynchronizedKeyGeneration(fromConfig: config, itemSecurity: itemSecurity)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
305 | result = .success(key)
306 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:304:71: warning: capture of 'config' with non-sendable type 'KeyGenerationConfig' in a '@Sendable' closure
302 |
303 | do {
304 | let key = try unsynchronizedKeyGeneration(fromConfig: config, itemSecurity: itemSecurity)
| `- warning: capture of 'config' with non-sendable type 'KeyGenerationConfig' in a '@Sendable' closure
305 | result = .success(key)
306 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/KeyGenerationConfig.swift:10:15: note: consider making struct 'KeyGenerationConfig' conform to the 'Sendable' protocol
8 | /// Create a `KeyGenerationConfig` and then pass it to ``Haversack/Haversack/generateKey(fromConfig:itemSecurity:)-1r4ki``
9 | /// or one of it's asynchronous variants.
10 | public struct KeyGenerationConfig {
| `- note: consider making struct 'KeyGenerationConfig' conform to the 'Sendable' protocol
11 | /// The keychain config query.
12 | ///
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:304:93: warning: capture of 'itemSecurity' with non-sendable type 'ItemSecurity' in a '@Sendable' closure
302 |
303 | do {
304 | let key = try unsynchronizedKeyGeneration(fromConfig: config, itemSecurity: itemSecurity)
| `- warning: capture of 'itemSecurity' with non-sendable type 'ItemSecurity' in a '@Sendable' closure
305 | result = .success(key)
306 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/ItemSecurity.swift:7:15: note: consider making struct 'ItemSecurity' conform to the 'Sendable' protocol
5 |
6 | /// Specify the security of the keychain item
7 | public struct ItemSecurity {
| `- note: consider making struct 'ItemSecurity' conform to the 'Sendable' protocol
8 |
9 | /// The Haversack standard security for keychain items.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:310:37: warning: capture of 'completion' with non-sendable type '(Result<SecKey, any Error>) -> Void' in a '@Sendable' closure
308 | }
309 |
310 | call(completionHandler: completion, onQueue: completionQueue, with: result)
| |- warning: capture of 'completion' with non-sendable type '(Result<SecKey, any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
311 | }
312 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:402:17: warning: capture of 'completionHandler' with non-sendable type '(Result<T, any Error>) -> Void' in a '@Sendable' closure
400 | if let actualQueue = queue {
401 | actualQueue.addOperation {
402 | completionHandler(result)
| |- warning: capture of 'completionHandler' with non-sendable type '(Result<T, any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
403 | }
404 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:402:35: warning: capture of 'result' with non-sendable type 'Result<T, any Error>' in a '@Sendable' closure
396 | #endif
397 |
398 | private func call<T>(completionHandler: @escaping (_ result: Result<T, Error>) -> Void,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
399 | onQueue queue: OperationQueue?, with result: Result<T, Error>) {
400 | if let actualQueue = queue {
401 | actualQueue.addOperation {
402 | completionHandler(result)
| `- warning: capture of 'result' with non-sendable type 'Result<T, any Error>' in a '@Sendable' closure
403 | }
404 | } else {
[101/127] Compiling Haversack Haversack.swift
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:11:58: warning: converting a value of type '@Sendable (__shared sending Result<T.Entity, any Error>) -> ()' to type '(Result<T.Entity, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
9 | public func first<T: KeychainQuerying>(where query: T) async throws -> T.Entity {
10 | try await withCheckedThrowingContinuation { continuation in
11 | first(where: query, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (__shared sending Result<T.Entity, any Error>) -> ()' to type '(Result<T.Entity, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
12 | }
13 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:18:59: warning: converting a value of type '@Sendable (__shared sending Result<[T.Entity], any Error>) -> ()' to type '(Result<[T.Entity], any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
16 | public func search<T: KeychainQuerying>(where query: T) async throws -> [T.Entity] {
17 | try await withCheckedThrowingContinuation { continuation in
18 | search(where: query, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (__shared sending Result<[T.Entity], any Error>) -> ()' to type '(Result<[T.Entity], any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
19 | }
20 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:26:109: warning: converting a value of type '@Sendable (__shared sending Result<T, any Error>) -> ()' to type '(Result<T, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
24 | public func save<T: KeychainStorable>(_ item: T, itemSecurity: ItemSecurity, updateExisting: Bool) async throws -> T {
25 | try await withCheckedThrowingContinuation { continuation in
26 | save(item, itemSecurity: itemSecurity, updateExisting: updateExisting, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (__shared sending Result<T, any Error>) -> ()' to type '(Result<T, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
27 | }
28 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:33:98: warning: converting a value of type '@Sendable (__shared sending Result<SecKey, any Error>) -> ()' to type '(Result<SecKey, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
31 | public func generateKey(fromConfig config: KeyGenerationConfig, itemSecurity: ItemSecurity) async throws -> SecKey {
32 | try await withCheckedThrowingContinuation { continuation in
33 | generateKey(fromConfig: config, itemSecurity: itemSecurity, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (__shared sending Result<SecKey, any Error>) -> ()' to type '(Result<SecKey, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
34 | }
35 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:40:107: warning: converting a value of type '@Sendable (sending (any Error)?) -> ()' to type '((any Error)?) -> Void' risks causing data races; this is an error in the Swift 6 language mode
38 | public func delete<T: KeychainQuerying>(where query: T, treatNotFoundAsSuccess: Bool = true) async throws {
39 | let error = try await withCheckedThrowingContinuation { continuation in
40 | delete(where: query, treatNotFoundAsSuccess: treatNotFoundAsSuccess, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (sending (any Error)?) -> ()' to type '((any Error)?) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
41 | }
42 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:51:99: warning: converting a value of type '@Sendable (sending (any Error)?) -> ()' to type '((any Error)?) -> Void' risks causing data races; this is an error in the Swift 6 language mode
49 | public func delete<T: KeychainStorable>(_ item: T, treatNotFoundAsSuccess: Bool = true) async throws {
50 | let error = try await withCheckedThrowingContinuation { continuation in
51 | delete(item, treatNotFoundAsSuccess: treatNotFoundAsSuccess, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (sending (any Error)?) -> ()' to type '((any Error)?) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
52 | }
53 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:46:38: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
44 | let result: Result<T.Entity, Error>
45 | do {
46 | let localQuery = try makeSearchQuery(query, singleItem: true)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
47 |
48 | let entity = try self.configuration.strategy.searchForOne(localQuery)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:46:54: warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
39 | /// - completion: A function/block to be called when the search operation is completed.
40 | /// - result: The item or an error will be given to the completion handler.
41 | public func first<T: KeychainQuerying>(where query: T, completionQueue: OperationQueue? = nil,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
42 | completion: @escaping (_ result: Result<T.Entity, Error>) -> Void) {
43 | configuration.serialQueue.async {
44 | let result: Result<T.Entity, Error>
45 | do {
46 | let localQuery = try makeSearchQuery(query, singleItem: true)
| `- warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
47 |
48 | let entity = try self.configuration.strategy.searchForOne(localQuery)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:54:37: warning: capture of 'completion' with non-sendable type '(Result<T.Entity, any Error>) -> Void' in a '@Sendable' closure
52 | }
53 |
54 | call(completionHandler: completion, onQueue: completionQueue, with: result)
| |- warning: capture of 'completion' with non-sendable type '(Result<T.Entity, any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
55 | }
56 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:83:38: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
81 | let result: Result<[T.Entity], Error>
82 | do {
83 | let localQuery = try makeSearchQuery(query, singleItem: true)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
84 |
85 | let entities = try self.configuration.strategy.search(localQuery)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:83:54: warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
76 | /// - completion: A function/block to be called when the search operation is completed.
77 | /// - result: An array of items or an error will be given to the completion handler.
78 | public func search<T: KeychainQuerying>(where query: T, completionQueue: OperationQueue? = nil,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
79 | completion: @escaping (_ result: Result<[T.Entity], Error>) -> Void) {
80 | configuration.serialQueue.async {
81 | let result: Result<[T.Entity], Error>
82 | do {
83 | let localQuery = try makeSearchQuery(query, singleItem: true)
| `- warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
84 |
85 | let entities = try self.configuration.strategy.search(localQuery)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:91:37: warning: capture of 'completion' with non-sendable type '(Result<[T.Entity], any Error>) -> Void' in a '@Sendable' closure
89 | }
90 |
91 | call(completionHandler: completion, onQueue: completionQueue, with: result)
| |- warning: capture of 'completion' with non-sendable type '(Result<[T.Entity], any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
92 | }
93 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:129:35: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
127 |
128 | do {
129 | let theItem = try unsynchronizedSave(item, itemSecurity: itemSecurity, updateExisting: updateExisting)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
130 | result = .success(theItem)
131 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:129:54: warning: capture of 'item' with non-sendable type 'T' in a '@Sendable' closure
120 | /// - completion: A function/block to be called when the save operation is completed.
121 | /// - result: The original `item` that was saved or an error will be given to the completion handler.
122 | public func save<T: KeychainStorable>(_ item: T, itemSecurity: ItemSecurity, updateExisting: Bool,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
123 | completionQueue: OperationQueue? = nil,
124 | completion: @escaping (_ result: Result<T, Error>) -> Void) {
:
127 |
128 | do {
129 | let theItem = try unsynchronizedSave(item, itemSecurity: itemSecurity, updateExisting: updateExisting)
| `- warning: capture of 'item' with non-sendable type 'T' in a '@Sendable' closure
130 | result = .success(theItem)
131 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:129:74: warning: capture of 'itemSecurity' with non-sendable type 'ItemSecurity' in a '@Sendable' closure
127 |
128 | do {
129 | let theItem = try unsynchronizedSave(item, itemSecurity: itemSecurity, updateExisting: updateExisting)
| `- warning: capture of 'itemSecurity' with non-sendable type 'ItemSecurity' in a '@Sendable' closure
130 | result = .success(theItem)
131 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/ItemSecurity.swift:7:15: note: consider making struct 'ItemSecurity' conform to the 'Sendable' protocol
5 |
6 | /// Specify the security of the keychain item
7 | public struct ItemSecurity {
| `- note: consider making struct 'ItemSecurity' conform to the 'Sendable' protocol
8 |
9 | /// The Haversack standard security for keychain items.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:135:37: warning: capture of 'completion' with non-sendable type '(Result<T, any Error>) -> Void' in a '@Sendable' closure
133 | }
134 |
135 | call(completionHandler: completion, onQueue: completionQueue, with: result)
| |- warning: capture of 'completion' with non-sendable type '(Result<T, any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
136 | }
137 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:175:21: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
173 |
174 | do {
175 | try self.unsynchronizedDelete(item, treatNotFoundAsSuccess: treatNotFoundAsSuccess)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
176 | result = nil
177 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:175:47: warning: capture of 'item' with non-sendable type 'T' in a '@Sendable' closure
166 | /// - error: If an error occurs during the delete operation it will be given to the completion
167 | /// block; a `nil` represents no error.
168 | public func delete<T: KeychainStorable>(_ item: T, treatNotFoundAsSuccess: Bool = true,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
169 | completionQueue: OperationQueue? = nil,
170 | completion: @escaping (_ error: Error?) -> Void) {
:
173 |
174 | do {
175 | try self.unsynchronizedDelete(item, treatNotFoundAsSuccess: treatNotFoundAsSuccess)
| `- warning: capture of 'item' with non-sendable type 'T' in a '@Sendable' closure
176 | result = nil
177 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:183:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
181 | if let actualQueue = completionQueue {
182 | actualQueue.addOperation {
183 | completion(result)
| |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
184 | }
185 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:183:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
181 | if let actualQueue = completionQueue {
182 | actualQueue.addOperation {
183 | completion(result)
| |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
184 | }
185 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:220:38: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
218 |
219 | do {
220 | let localQuery = try makeDeleteQuery(query)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
221 | try self.configuration.strategy.delete(localQuery.query, treatNotFoundAsSuccess: treatNotFoundAsSuccess)
222 | result = nil
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:220:54: warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
211 | /// - error: If an error occurs during the delete operation it will be given to the completion
212 | /// block; a `nil` represents no error.
213 | public func delete<T: KeychainQuerying>(where query: T, treatNotFoundAsSuccess: Bool = true,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
214 | completionQueue: OperationQueue? = nil,
215 | completion: @escaping (_ error: Error?) -> Void) {
:
218 |
219 | do {
220 | let localQuery = try makeDeleteQuery(query)
| `- warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
221 | try self.configuration.strategy.delete(localQuery.query, treatNotFoundAsSuccess: treatNotFoundAsSuccess)
222 | result = nil
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:229:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
227 | if let actualQueue = completionQueue {
228 | actualQueue.addOperation {
229 | completion(result)
| |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
230 | }
231 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:229:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
227 | if let actualQueue = completionQueue {
228 | actualQueue.addOperation {
229 | completion(result)
| |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
230 | }
231 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:304:31: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
302 |
303 | do {
304 | let key = try unsynchronizedKeyGeneration(fromConfig: config, itemSecurity: itemSecurity)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
305 | result = .success(key)
306 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:304:71: warning: capture of 'config' with non-sendable type 'KeyGenerationConfig' in a '@Sendable' closure
302 |
303 | do {
304 | let key = try unsynchronizedKeyGeneration(fromConfig: config, itemSecurity: itemSecurity)
| `- warning: capture of 'config' with non-sendable type 'KeyGenerationConfig' in a '@Sendable' closure
305 | result = .success(key)
306 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/KeyGenerationConfig.swift:10:15: note: consider making struct 'KeyGenerationConfig' conform to the 'Sendable' protocol
8 | /// Create a `KeyGenerationConfig` and then pass it to ``Haversack/Haversack/generateKey(fromConfig:itemSecurity:)-1r4ki``
9 | /// or one of it's asynchronous variants.
10 | public struct KeyGenerationConfig {
| `- note: consider making struct 'KeyGenerationConfig' conform to the 'Sendable' protocol
11 | /// The keychain config query.
12 | ///
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:304:93: warning: capture of 'itemSecurity' with non-sendable type 'ItemSecurity' in a '@Sendable' closure
302 |
303 | do {
304 | let key = try unsynchronizedKeyGeneration(fromConfig: config, itemSecurity: itemSecurity)
| `- warning: capture of 'itemSecurity' with non-sendable type 'ItemSecurity' in a '@Sendable' closure
305 | result = .success(key)
306 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/ItemSecurity.swift:7:15: note: consider making struct 'ItemSecurity' conform to the 'Sendable' protocol
5 |
6 | /// Specify the security of the keychain item
7 | public struct ItemSecurity {
| `- note: consider making struct 'ItemSecurity' conform to the 'Sendable' protocol
8 |
9 | /// The Haversack standard security for keychain items.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:310:37: warning: capture of 'completion' with non-sendable type '(Result<SecKey, any Error>) -> Void' in a '@Sendable' closure
308 | }
309 |
310 | call(completionHandler: completion, onQueue: completionQueue, with: result)
| |- warning: capture of 'completion' with non-sendable type '(Result<SecKey, any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
311 | }
312 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:402:17: warning: capture of 'completionHandler' with non-sendable type '(Result<T, any Error>) -> Void' in a '@Sendable' closure
400 | if let actualQueue = queue {
401 | actualQueue.addOperation {
402 | completionHandler(result)
| |- warning: capture of 'completionHandler' with non-sendable type '(Result<T, any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
403 | }
404 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:402:35: warning: capture of 'result' with non-sendable type 'Result<T, any Error>' in a '@Sendable' closure
396 | #endif
397 |
398 | private func call<T>(completionHandler: @escaping (_ result: Result<T, Error>) -> Void,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
399 | onQueue queue: OperationQueue?, with result: Result<T, Error>) {
400 | if let actualQueue = queue {
401 | actualQueue.addOperation {
402 | completionHandler(result)
| `- warning: capture of 'result' with non-sendable type 'Result<T, any Error>' in a '@Sendable' closure
403 | }
404 | } else {
[102/127] Compiling Haversack HaversackConfiguration.swift
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:11:58: warning: converting a value of type '@Sendable (__shared sending Result<T.Entity, any Error>) -> ()' to type '(Result<T.Entity, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
9 | public func first<T: KeychainQuerying>(where query: T) async throws -> T.Entity {
10 | try await withCheckedThrowingContinuation { continuation in
11 | first(where: query, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (__shared sending Result<T.Entity, any Error>) -> ()' to type '(Result<T.Entity, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
12 | }
13 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:18:59: warning: converting a value of type '@Sendable (__shared sending Result<[T.Entity], any Error>) -> ()' to type '(Result<[T.Entity], any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
16 | public func search<T: KeychainQuerying>(where query: T) async throws -> [T.Entity] {
17 | try await withCheckedThrowingContinuation { continuation in
18 | search(where: query, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (__shared sending Result<[T.Entity], any Error>) -> ()' to type '(Result<[T.Entity], any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
19 | }
20 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:26:109: warning: converting a value of type '@Sendable (__shared sending Result<T, any Error>) -> ()' to type '(Result<T, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
24 | public func save<T: KeychainStorable>(_ item: T, itemSecurity: ItemSecurity, updateExisting: Bool) async throws -> T {
25 | try await withCheckedThrowingContinuation { continuation in
26 | save(item, itemSecurity: itemSecurity, updateExisting: updateExisting, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (__shared sending Result<T, any Error>) -> ()' to type '(Result<T, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
27 | }
28 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:33:98: warning: converting a value of type '@Sendable (__shared sending Result<SecKey, any Error>) -> ()' to type '(Result<SecKey, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
31 | public func generateKey(fromConfig config: KeyGenerationConfig, itemSecurity: ItemSecurity) async throws -> SecKey {
32 | try await withCheckedThrowingContinuation { continuation in
33 | generateKey(fromConfig: config, itemSecurity: itemSecurity, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (__shared sending Result<SecKey, any Error>) -> ()' to type '(Result<SecKey, any Error>) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
34 | }
35 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:40:107: warning: converting a value of type '@Sendable (sending (any Error)?) -> ()' to type '((any Error)?) -> Void' risks causing data races; this is an error in the Swift 6 language mode
38 | public func delete<T: KeychainQuerying>(where query: T, treatNotFoundAsSuccess: Bool = true) async throws {
39 | let error = try await withCheckedThrowingContinuation { continuation in
40 | delete(where: query, treatNotFoundAsSuccess: treatNotFoundAsSuccess, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (sending (any Error)?) -> ()' to type '((any Error)?) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
41 | }
42 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack+AsyncAwait.swift:51:99: warning: converting a value of type '@Sendable (sending (any Error)?) -> ()' to type '((any Error)?) -> Void' risks causing data races; this is an error in the Swift 6 language mode
49 | public func delete<T: KeychainStorable>(_ item: T, treatNotFoundAsSuccess: Bool = true) async throws {
50 | let error = try await withCheckedThrowingContinuation { continuation in
51 | delete(item, treatNotFoundAsSuccess: treatNotFoundAsSuccess, completion: continuation.resume)
| |- warning: converting a value of type '@Sendable (sending (any Error)?) -> ()' to type '((any Error)?) -> Void' risks causing data races; this is an error in the Swift 6 language mode
| `- note: converting a function typed value with a sending parameter to one without risks allowing actor-isolated values to escape their isolation domain as an argument to an invocation of value
52 | }
53 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:46:38: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
44 | let result: Result<T.Entity, Error>
45 | do {
46 | let localQuery = try makeSearchQuery(query, singleItem: true)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
47 |
48 | let entity = try self.configuration.strategy.searchForOne(localQuery)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:46:54: warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
39 | /// - completion: A function/block to be called when the search operation is completed.
40 | /// - result: The item or an error will be given to the completion handler.
41 | public func first<T: KeychainQuerying>(where query: T, completionQueue: OperationQueue? = nil,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
42 | completion: @escaping (_ result: Result<T.Entity, Error>) -> Void) {
43 | configuration.serialQueue.async {
44 | let result: Result<T.Entity, Error>
45 | do {
46 | let localQuery = try makeSearchQuery(query, singleItem: true)
| `- warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
47 |
48 | let entity = try self.configuration.strategy.searchForOne(localQuery)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:54:37: warning: capture of 'completion' with non-sendable type '(Result<T.Entity, any Error>) -> Void' in a '@Sendable' closure
52 | }
53 |
54 | call(completionHandler: completion, onQueue: completionQueue, with: result)
| |- warning: capture of 'completion' with non-sendable type '(Result<T.Entity, any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
55 | }
56 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:83:38: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
81 | let result: Result<[T.Entity], Error>
82 | do {
83 | let localQuery = try makeSearchQuery(query, singleItem: true)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
84 |
85 | let entities = try self.configuration.strategy.search(localQuery)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:83:54: warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
76 | /// - completion: A function/block to be called when the search operation is completed.
77 | /// - result: An array of items or an error will be given to the completion handler.
78 | public func search<T: KeychainQuerying>(where query: T, completionQueue: OperationQueue? = nil,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
79 | completion: @escaping (_ result: Result<[T.Entity], Error>) -> Void) {
80 | configuration.serialQueue.async {
81 | let result: Result<[T.Entity], Error>
82 | do {
83 | let localQuery = try makeSearchQuery(query, singleItem: true)
| `- warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
84 |
85 | let entities = try self.configuration.strategy.search(localQuery)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:91:37: warning: capture of 'completion' with non-sendable type '(Result<[T.Entity], any Error>) -> Void' in a '@Sendable' closure
89 | }
90 |
91 | call(completionHandler: completion, onQueue: completionQueue, with: result)
| |- warning: capture of 'completion' with non-sendable type '(Result<[T.Entity], any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
92 | }
93 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:129:35: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
127 |
128 | do {
129 | let theItem = try unsynchronizedSave(item, itemSecurity: itemSecurity, updateExisting: updateExisting)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
130 | result = .success(theItem)
131 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:129:54: warning: capture of 'item' with non-sendable type 'T' in a '@Sendable' closure
120 | /// - completion: A function/block to be called when the save operation is completed.
121 | /// - result: The original `item` that was saved or an error will be given to the completion handler.
122 | public func save<T: KeychainStorable>(_ item: T, itemSecurity: ItemSecurity, updateExisting: Bool,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
123 | completionQueue: OperationQueue? = nil,
124 | completion: @escaping (_ result: Result<T, Error>) -> Void) {
:
127 |
128 | do {
129 | let theItem = try unsynchronizedSave(item, itemSecurity: itemSecurity, updateExisting: updateExisting)
| `- warning: capture of 'item' with non-sendable type 'T' in a '@Sendable' closure
130 | result = .success(theItem)
131 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:129:74: warning: capture of 'itemSecurity' with non-sendable type 'ItemSecurity' in a '@Sendable' closure
127 |
128 | do {
129 | let theItem = try unsynchronizedSave(item, itemSecurity: itemSecurity, updateExisting: updateExisting)
| `- warning: capture of 'itemSecurity' with non-sendable type 'ItemSecurity' in a '@Sendable' closure
130 | result = .success(theItem)
131 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/ItemSecurity.swift:7:15: note: consider making struct 'ItemSecurity' conform to the 'Sendable' protocol
5 |
6 | /// Specify the security of the keychain item
7 | public struct ItemSecurity {
| `- note: consider making struct 'ItemSecurity' conform to the 'Sendable' protocol
8 |
9 | /// The Haversack standard security for keychain items.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:135:37: warning: capture of 'completion' with non-sendable type '(Result<T, any Error>) -> Void' in a '@Sendable' closure
133 | }
134 |
135 | call(completionHandler: completion, onQueue: completionQueue, with: result)
| |- warning: capture of 'completion' with non-sendable type '(Result<T, any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
136 | }
137 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:175:21: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
173 |
174 | do {
175 | try self.unsynchronizedDelete(item, treatNotFoundAsSuccess: treatNotFoundAsSuccess)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
176 | result = nil
177 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:175:47: warning: capture of 'item' with non-sendable type 'T' in a '@Sendable' closure
166 | /// - error: If an error occurs during the delete operation it will be given to the completion
167 | /// block; a `nil` represents no error.
168 | public func delete<T: KeychainStorable>(_ item: T, treatNotFoundAsSuccess: Bool = true,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
169 | completionQueue: OperationQueue? = nil,
170 | completion: @escaping (_ error: Error?) -> Void) {
:
173 |
174 | do {
175 | try self.unsynchronizedDelete(item, treatNotFoundAsSuccess: treatNotFoundAsSuccess)
| `- warning: capture of 'item' with non-sendable type 'T' in a '@Sendable' closure
176 | result = nil
177 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:183:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
181 | if let actualQueue = completionQueue {
182 | actualQueue.addOperation {
183 | completion(result)
| |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
184 | }
185 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:183:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
181 | if let actualQueue = completionQueue {
182 | actualQueue.addOperation {
183 | completion(result)
| |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
184 | }
185 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:220:38: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
218 |
219 | do {
220 | let localQuery = try makeDeleteQuery(query)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
221 | try self.configuration.strategy.delete(localQuery.query, treatNotFoundAsSuccess: treatNotFoundAsSuccess)
222 | result = nil
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:220:54: warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
211 | /// - error: If an error occurs during the delete operation it will be given to the completion
212 | /// block; a `nil` represents no error.
213 | public func delete<T: KeychainQuerying>(where query: T, treatNotFoundAsSuccess: Bool = true,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
214 | completionQueue: OperationQueue? = nil,
215 | completion: @escaping (_ error: Error?) -> Void) {
:
218 |
219 | do {
220 | let localQuery = try makeDeleteQuery(query)
| `- warning: capture of 'query' with non-sendable type 'T' in a '@Sendable' closure
221 | try self.configuration.strategy.delete(localQuery.query, treatNotFoundAsSuccess: treatNotFoundAsSuccess)
222 | result = nil
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:229:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
227 | if let actualQueue = completionQueue {
228 | actualQueue.addOperation {
229 | completion(result)
| |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
230 | }
231 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:229:21: warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
227 | if let actualQueue = completionQueue {
228 | actualQueue.addOperation {
229 | completion(result)
| |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
230 | }
231 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:304:31: warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
7 | ///
8 | /// Contains keychain search functionality and the ability to add/update/delete items in the keychain.
9 | public struct Haversack {
| `- note: consider making struct 'Haversack' conform to the 'Sendable' protocol
10 | /// The configuration that the Haversack was created with.
11 | public let configuration: HaversackConfiguration
:
302 |
303 | do {
304 | let key = try unsynchronizedKeyGeneration(fromConfig: config, itemSecurity: itemSecurity)
| `- warning: capture of 'self' with non-sendable type 'Haversack' in a '@Sendable' closure
305 | result = .success(key)
306 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:304:71: warning: capture of 'config' with non-sendable type 'KeyGenerationConfig' in a '@Sendable' closure
302 |
303 | do {
304 | let key = try unsynchronizedKeyGeneration(fromConfig: config, itemSecurity: itemSecurity)
| `- warning: capture of 'config' with non-sendable type 'KeyGenerationConfig' in a '@Sendable' closure
305 | result = .success(key)
306 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/KeyGenerationConfig.swift:10:15: note: consider making struct 'KeyGenerationConfig' conform to the 'Sendable' protocol
8 | /// Create a `KeyGenerationConfig` and then pass it to ``Haversack/Haversack/generateKey(fromConfig:itemSecurity:)-1r4ki``
9 | /// or one of it's asynchronous variants.
10 | public struct KeyGenerationConfig {
| `- note: consider making struct 'KeyGenerationConfig' conform to the 'Sendable' protocol
11 | /// The keychain config query.
12 | ///
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:304:93: warning: capture of 'itemSecurity' with non-sendable type 'ItemSecurity' in a '@Sendable' closure
302 |
303 | do {
304 | let key = try unsynchronizedKeyGeneration(fromConfig: config, itemSecurity: itemSecurity)
| `- warning: capture of 'itemSecurity' with non-sendable type 'ItemSecurity' in a '@Sendable' closure
305 | result = .success(key)
306 | } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/ItemSecurity.swift:7:15: note: consider making struct 'ItemSecurity' conform to the 'Sendable' protocol
5 |
6 | /// Specify the security of the keychain item
7 | public struct ItemSecurity {
| `- note: consider making struct 'ItemSecurity' conform to the 'Sendable' protocol
8 |
9 | /// The Haversack standard security for keychain items.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:310:37: warning: capture of 'completion' with non-sendable type '(Result<SecKey, any Error>) -> Void' in a '@Sendable' closure
308 | }
309 |
310 | call(completionHandler: completion, onQueue: completionQueue, with: result)
| |- warning: capture of 'completion' with non-sendable type '(Result<SecKey, any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
311 | }
312 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:402:17: warning: capture of 'completionHandler' with non-sendable type '(Result<T, any Error>) -> Void' in a '@Sendable' closure
400 | if let actualQueue = queue {
401 | actualQueue.addOperation {
402 | completionHandler(result)
| |- warning: capture of 'completionHandler' with non-sendable type '(Result<T, any Error>) -> Void' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
403 | }
404 | } else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Haversack.swift:402:35: warning: capture of 'result' with non-sendable type 'Result<T, any Error>' in a '@Sendable' closure
396 | #endif
397 |
398 | private func call<T>(completionHandler: @escaping (_ result: Result<T, Error>) -> Void,
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
399 | onQueue queue: OperationQueue?, with result: Result<T, Error>) {
400 | if let actualQueue = queue {
401 | actualQueue.addOperation {
402 | completionHandler(result)
| `- warning: capture of 'result' with non-sendable type 'Result<T, any Error>' in a '@Sendable' closure
403 | }
404 | } else {
[103/127] Compiling Haversack IdentityQuery.swift
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:49:23: warning: static property 'canEncrypt' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
47 | }
48 |
49 | public static let canEncrypt = KeyUsagePolicy(rawValue: 1 << 0)
| |- warning: static property 'canEncrypt' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canEncrypt' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
50 | public static let canDecrypt = KeyUsagePolicy(rawValue: 1 << 1)
51 | public static let canDerive = KeyUsagePolicy(rawValue: 1 << 2)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:50:23: warning: static property 'canDecrypt' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
48 |
49 | public static let canEncrypt = KeyUsagePolicy(rawValue: 1 << 0)
50 | public static let canDecrypt = KeyUsagePolicy(rawValue: 1 << 1)
| |- warning: static property 'canDecrypt' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canDecrypt' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
51 | public static let canDerive = KeyUsagePolicy(rawValue: 1 << 2)
52 | public static let canSign = KeyUsagePolicy(rawValue: 1 << 3)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:51:23: warning: static property 'canDerive' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
49 | public static let canEncrypt = KeyUsagePolicy(rawValue: 1 << 0)
50 | public static let canDecrypt = KeyUsagePolicy(rawValue: 1 << 1)
51 | public static let canDerive = KeyUsagePolicy(rawValue: 1 << 2)
| |- warning: static property 'canDerive' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canDerive' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
52 | public static let canSign = KeyUsagePolicy(rawValue: 1 << 3)
53 | public static let canVerify = KeyUsagePolicy(rawValue: 1 << 4)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:52:23: warning: static property 'canSign' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
50 | public static let canDecrypt = KeyUsagePolicy(rawValue: 1 << 1)
51 | public static let canDerive = KeyUsagePolicy(rawValue: 1 << 2)
52 | public static let canSign = KeyUsagePolicy(rawValue: 1 << 3)
| |- warning: static property 'canSign' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canSign' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
53 | public static let canVerify = KeyUsagePolicy(rawValue: 1 << 4)
54 | public static let canWrap = KeyUsagePolicy(rawValue: 1 << 5)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:53:23: warning: static property 'canVerify' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
51 | public static let canDerive = KeyUsagePolicy(rawValue: 1 << 2)
52 | public static let canSign = KeyUsagePolicy(rawValue: 1 << 3)
53 | public static let canVerify = KeyUsagePolicy(rawValue: 1 << 4)
| |- warning: static property 'canVerify' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canVerify' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
54 | public static let canWrap = KeyUsagePolicy(rawValue: 1 << 5)
55 | public static let canUnwrap = KeyUsagePolicy(rawValue: 1 << 6)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:54:23: warning: static property 'canWrap' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
52 | public static let canSign = KeyUsagePolicy(rawValue: 1 << 3)
53 | public static let canVerify = KeyUsagePolicy(rawValue: 1 << 4)
54 | public static let canWrap = KeyUsagePolicy(rawValue: 1 << 5)
| |- warning: static property 'canWrap' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canWrap' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
55 | public static let canUnwrap = KeyUsagePolicy(rawValue: 1 << 6)
56 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:55:23: warning: static property 'canUnwrap' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
53 | public static let canVerify = KeyUsagePolicy(rawValue: 1 << 4)
54 | public static let canWrap = KeyUsagePolicy(rawValue: 1 << 5)
55 | public static let canUnwrap = KeyUsagePolicy(rawValue: 1 << 6)
| |- warning: static property 'canUnwrap' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canUnwrap' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
56 |
57 | /// The default usage of a public key includes encryption, deriving other keys, and verifying digital signatures.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:58:23: warning: static property 'defaultPublicKey' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
56 |
57 | /// The default usage of a public key includes encryption, deriving other keys, and verifying digital signatures.
58 | public static let defaultPublicKey: KeyUsagePolicy = [.canEncrypt, .canDerive, .canVerify]
| |- warning: static property 'defaultPublicKey' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'defaultPublicKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
59 |
60 | /// The default usage of a private key includes decryption, digital signing, deriving other keys, and unwrapping other keys.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:61:23: warning: static property 'defaultPrivateKey' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
59 |
60 | /// The default usage of a private key includes decryption, digital signing, deriving other keys, and unwrapping other keys.
61 | public static let defaultPrivateKey: KeyUsagePolicy = [.canDecrypt, .canDerive, .canSign, .canUnwrap]
| |- warning: static property 'defaultPrivateKey' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'defaultPrivateKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
62 |
63 | var securityFrameworkKeyArray: [CFString] {
[104/127] Compiling Haversack InternetPasswordQuery.swift
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:49:23: warning: static property 'canEncrypt' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
47 | }
48 |
49 | public static let canEncrypt = KeyUsagePolicy(rawValue: 1 << 0)
| |- warning: static property 'canEncrypt' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canEncrypt' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
50 | public static let canDecrypt = KeyUsagePolicy(rawValue: 1 << 1)
51 | public static let canDerive = KeyUsagePolicy(rawValue: 1 << 2)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:50:23: warning: static property 'canDecrypt' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
48 |
49 | public static let canEncrypt = KeyUsagePolicy(rawValue: 1 << 0)
50 | public static let canDecrypt = KeyUsagePolicy(rawValue: 1 << 1)
| |- warning: static property 'canDecrypt' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canDecrypt' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
51 | public static let canDerive = KeyUsagePolicy(rawValue: 1 << 2)
52 | public static let canSign = KeyUsagePolicy(rawValue: 1 << 3)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:51:23: warning: static property 'canDerive' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
49 | public static let canEncrypt = KeyUsagePolicy(rawValue: 1 << 0)
50 | public static let canDecrypt = KeyUsagePolicy(rawValue: 1 << 1)
51 | public static let canDerive = KeyUsagePolicy(rawValue: 1 << 2)
| |- warning: static property 'canDerive' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canDerive' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
52 | public static let canSign = KeyUsagePolicy(rawValue: 1 << 3)
53 | public static let canVerify = KeyUsagePolicy(rawValue: 1 << 4)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:52:23: warning: static property 'canSign' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
50 | public static let canDecrypt = KeyUsagePolicy(rawValue: 1 << 1)
51 | public static let canDerive = KeyUsagePolicy(rawValue: 1 << 2)
52 | public static let canSign = KeyUsagePolicy(rawValue: 1 << 3)
| |- warning: static property 'canSign' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canSign' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
53 | public static let canVerify = KeyUsagePolicy(rawValue: 1 << 4)
54 | public static let canWrap = KeyUsagePolicy(rawValue: 1 << 5)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:53:23: warning: static property 'canVerify' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
51 | public static let canDerive = KeyUsagePolicy(rawValue: 1 << 2)
52 | public static let canSign = KeyUsagePolicy(rawValue: 1 << 3)
53 | public static let canVerify = KeyUsagePolicy(rawValue: 1 << 4)
| |- warning: static property 'canVerify' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canVerify' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
54 | public static let canWrap = KeyUsagePolicy(rawValue: 1 << 5)
55 | public static let canUnwrap = KeyUsagePolicy(rawValue: 1 << 6)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:54:23: warning: static property 'canWrap' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
52 | public static let canSign = KeyUsagePolicy(rawValue: 1 << 3)
53 | public static let canVerify = KeyUsagePolicy(rawValue: 1 << 4)
54 | public static let canWrap = KeyUsagePolicy(rawValue: 1 << 5)
| |- warning: static property 'canWrap' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canWrap' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
55 | public static let canUnwrap = KeyUsagePolicy(rawValue: 1 << 6)
56 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:55:23: warning: static property 'canUnwrap' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
53 | public static let canVerify = KeyUsagePolicy(rawValue: 1 << 4)
54 | public static let canWrap = KeyUsagePolicy(rawValue: 1 << 5)
55 | public static let canUnwrap = KeyUsagePolicy(rawValue: 1 << 6)
| |- warning: static property 'canUnwrap' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canUnwrap' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
56 |
57 | /// The default usage of a public key includes encryption, deriving other keys, and verifying digital signatures.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:58:23: warning: static property 'defaultPublicKey' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
56 |
57 | /// The default usage of a public key includes encryption, deriving other keys, and verifying digital signatures.
58 | public static let defaultPublicKey: KeyUsagePolicy = [.canEncrypt, .canDerive, .canVerify]
| |- warning: static property 'defaultPublicKey' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'defaultPublicKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
59 |
60 | /// The default usage of a private key includes decryption, digital signing, deriving other keys, and unwrapping other keys.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:61:23: warning: static property 'defaultPrivateKey' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
59 |
60 | /// The default usage of a private key includes decryption, digital signing, deriving other keys, and unwrapping other keys.
61 | public static let defaultPrivateKey: KeyUsagePolicy = [.canDecrypt, .canDerive, .canSign, .canUnwrap]
| |- warning: static property 'defaultPrivateKey' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'defaultPrivateKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
62 |
63 | var securityFrameworkKeyArray: [CFString] {
[105/127] Compiling Haversack KeyBaseQuerying.swift
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:49:23: warning: static property 'canEncrypt' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
47 | }
48 |
49 | public static let canEncrypt = KeyUsagePolicy(rawValue: 1 << 0)
| |- warning: static property 'canEncrypt' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canEncrypt' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
50 | public static let canDecrypt = KeyUsagePolicy(rawValue: 1 << 1)
51 | public static let canDerive = KeyUsagePolicy(rawValue: 1 << 2)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:50:23: warning: static property 'canDecrypt' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
48 |
49 | public static let canEncrypt = KeyUsagePolicy(rawValue: 1 << 0)
50 | public static let canDecrypt = KeyUsagePolicy(rawValue: 1 << 1)
| |- warning: static property 'canDecrypt' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canDecrypt' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
51 | public static let canDerive = KeyUsagePolicy(rawValue: 1 << 2)
52 | public static let canSign = KeyUsagePolicy(rawValue: 1 << 3)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:51:23: warning: static property 'canDerive' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
49 | public static let canEncrypt = KeyUsagePolicy(rawValue: 1 << 0)
50 | public static let canDecrypt = KeyUsagePolicy(rawValue: 1 << 1)
51 | public static let canDerive = KeyUsagePolicy(rawValue: 1 << 2)
| |- warning: static property 'canDerive' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canDerive' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
52 | public static let canSign = KeyUsagePolicy(rawValue: 1 << 3)
53 | public static let canVerify = KeyUsagePolicy(rawValue: 1 << 4)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:52:23: warning: static property 'canSign' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
50 | public static let canDecrypt = KeyUsagePolicy(rawValue: 1 << 1)
51 | public static let canDerive = KeyUsagePolicy(rawValue: 1 << 2)
52 | public static let canSign = KeyUsagePolicy(rawValue: 1 << 3)
| |- warning: static property 'canSign' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canSign' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
53 | public static let canVerify = KeyUsagePolicy(rawValue: 1 << 4)
54 | public static let canWrap = KeyUsagePolicy(rawValue: 1 << 5)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:53:23: warning: static property 'canVerify' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
51 | public static let canDerive = KeyUsagePolicy(rawValue: 1 << 2)
52 | public static let canSign = KeyUsagePolicy(rawValue: 1 << 3)
53 | public static let canVerify = KeyUsagePolicy(rawValue: 1 << 4)
| |- warning: static property 'canVerify' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canVerify' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
54 | public static let canWrap = KeyUsagePolicy(rawValue: 1 << 5)
55 | public static let canUnwrap = KeyUsagePolicy(rawValue: 1 << 6)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:54:23: warning: static property 'canWrap' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
52 | public static let canSign = KeyUsagePolicy(rawValue: 1 << 3)
53 | public static let canVerify = KeyUsagePolicy(rawValue: 1 << 4)
54 | public static let canWrap = KeyUsagePolicy(rawValue: 1 << 5)
| |- warning: static property 'canWrap' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canWrap' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
55 | public static let canUnwrap = KeyUsagePolicy(rawValue: 1 << 6)
56 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:55:23: warning: static property 'canUnwrap' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
53 | public static let canVerify = KeyUsagePolicy(rawValue: 1 << 4)
54 | public static let canWrap = KeyUsagePolicy(rawValue: 1 << 5)
55 | public static let canUnwrap = KeyUsagePolicy(rawValue: 1 << 6)
| |- warning: static property 'canUnwrap' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'canUnwrap' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
56 |
57 | /// The default usage of a public key includes encryption, deriving other keys, and verifying digital signatures.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:58:23: warning: static property 'defaultPublicKey' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
56 |
57 | /// The default usage of a public key includes encryption, deriving other keys, and verifying digital signatures.
58 | public static let defaultPublicKey: KeyUsagePolicy = [.canEncrypt, .canDerive, .canVerify]
| |- warning: static property 'defaultPublicKey' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'defaultPublicKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
59 |
60 | /// The default usage of a private key includes decryption, digital signing, deriving other keys, and unwrapping other keys.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyBaseQuerying.swift:61:23: warning: static property 'defaultPrivateKey' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
40 |
41 | /// Encapsulates how cryptographic keys may be used.
42 | public struct KeyUsagePolicy: OptionSet {
| `- note: consider making struct 'KeyUsagePolicy' conform to the 'Sendable' protocol
43 | public let rawValue: Int
44 |
:
59 |
60 | /// The default usage of a private key includes decryption, digital signing, deriving other keys, and unwrapping other keys.
61 | public static let defaultPrivateKey: KeyUsagePolicy = [.canDecrypt, .canDerive, .canSign, .canUnwrap]
| |- warning: static property 'defaultPrivateKey' is not concurrency-safe because non-'Sendable' type 'KeyUsagePolicy' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'defaultPrivateKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
62 |
63 | var securityFrameworkKeyArray: [CFString] {
[106/127] Compiling Haversack CertificateEntity.swift
[107/127] Compiling Haversack Data+X501Name.swift
[108/127] Compiling Haversack GenericPasswordEntity.swift
[109/127] Compiling Haversack IdentityEntity.swift
[110/127] Compiling Haversack PasswordBaseQuerying.swift
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/ItemSecurity.swift:13:23: warning: static property 'standard' is not concurrency-safe because non-'Sendable' type 'ItemSecurity' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Specify the security of the keychain item
7 | public struct ItemSecurity {
| `- note: consider making struct 'ItemSecurity' conform to the 'Sendable' protocol
8 |
9 | /// The Haversack standard security for keychain items.
:
11 | /// The item is retrievable only when the device is unlocked and does NOT synchronize to other devices.
12 | /// The item is not part of any app group or keychain group.
13 | public static let standard = ItemSecurity().retrievableNoThrow(when: .simple(.unlockedThisDeviceOnly))
| |- warning: static property 'standard' is not concurrency-safe because non-'Sendable' type 'ItemSecurity' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'standard' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 | /// The keychain query. **Do not** manipulate this directly.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:31:23: warning: static property 'systemRootCertificates' is not concurrency-safe because non-'Sendable' type 'KeychainFile' may have shared mutable state; this is an error in the Swift 6 language mode
24 | /// Locking/unlocking the keychain file is logged at the `.info` level.
25 | /// All errors are logged at the `.error` level.
26 | public class KeychainFile {
| `- note: class 'KeychainFile' does not conform to the 'Sendable' protocol
27 | /// The path to the system keychain that contains the globally trusted root CA certificates.
28 | static let rootCertificatesKeychainPath = "/System/Library/Keychains/SystemRootCertificates.keychain"
29 |
30 | /// An instance of ``KeychainFile`` that points at the system root certificates keychain
31 | public static let systemRootCertificates = KeychainFile(at: rootCertificatesKeychainPath)
| |- warning: static property 'systemRootCertificates' is not concurrency-safe because non-'Sendable' type 'KeychainFile' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'systemRootCertificates' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
32 |
33 | /// The path to the system keychain.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:37:23: warning: static property 'system' is not concurrency-safe because non-'Sendable' type 'KeychainFile' may have shared mutable state; this is an error in the Swift 6 language mode
24 | /// Locking/unlocking the keychain file is logged at the `.info` level.
25 | /// All errors are logged at the `.error` level.
26 | public class KeychainFile {
| `- note: class 'KeychainFile' does not conform to the 'Sendable' protocol
27 | /// The path to the system keychain that contains the globally trusted root CA certificates.
28 | static let rootCertificatesKeychainPath = "/System/Library/Keychains/SystemRootCertificates.keychain"
:
35 |
36 | /// An instance of ``KeychainFile`` that points at the system keychain
37 | public static let system: KeychainFile = {
| |- warning: static property 'system' is not concurrency-safe because non-'Sendable' type 'KeychainFile' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'system' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
38 | let legacySystemKeychainPath = "/Library/Keychains/System.keychain"
39 | var searchList: CFArray?
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:41:13: warning: 'SecKeychainCopyDomainSearchList' was deprecated in macOS 10.10: SecKeychain is deprecated
39 | var searchList: CFArray?
40 | let status = withUnsafeMutablePointer(to: &searchList) {
41 | SecKeychainCopyDomainSearchList(.system, UnsafeMutablePointer($0))
| `- warning: 'SecKeychainCopyDomainSearchList' was deprecated in macOS 10.10: SecKeychain is deprecated
42 | }
43 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:85:13: warning: 'SecKeychainGetPath' was deprecated in macOS 10.10: SecKeychain is deprecated
83 | let pathName = UnsafeMutablePointer<CChar>.allocate(capacity: Int(pathLength))
84 | let status = withUnsafeMutablePointer(to: &pathLength) { pathLength in
85 | SecKeychainGetPath(reference, pathLength, pathName)
| `- warning: 'SecKeychainGetPath' was deprecated in macOS 10.10: SecKeychain is deprecated
86 | }
87 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:127:22: warning: 'SecKeychainOpen' was deprecated in macOS 10.10: SecKeychain is deprecated
125 | func open() throws {
126 | os_log("Attempting to open keychain at %{public}@", log: Logs.keychainFile, type: .default, path)
127 | let status = SecKeychainOpen(path, &reference)
| `- warning: 'SecKeychainOpen' was deprecated in macOS 10.10: SecKeychain is deprecated
128 | if status != errSecSuccess {
129 | os_log("SecKeychainOpen returned error %{public}d", log: Logs.keychainFile, type: .error, status)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:159:22: warning: 'SecKeychainCreate' was deprecated in macOS 10.10: SecKeychain is deprecated
157 |
158 | os_log("Attempting to create keychain at %{public}@", log: Logs.keychainFile, type: .default, path)
159 | let status = SecKeychainCreate(path, UInt32(rawPassword.count), rawPassword, false, nil, &reference)
| `- warning: 'SecKeychainCreate' was deprecated in macOS 10.10: SecKeychain is deprecated
160 | if status != errSecSuccess {
161 | os_log("SecKeychainCreate returned error %{public}d", log: Logs.keychainFile, type: .error, status)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:170:22: warning: 'SecKeychainDelete' was deprecated in macOS 10.10: SecKeychain is deprecated
168 | public func delete() throws {
169 | os_log("Attempting to delete keychain at %{public}@", log: Logs.keychainFile, type: .default, path)
170 | let status = SecKeychainDelete(reference)
| `- warning: 'SecKeychainDelete' was deprecated in macOS 10.10: SecKeychain is deprecated
171 | if status != errSecSuccess {
172 | os_log("SecKeychainDelete returned error %{public}d", log: Logs.keychainFile, type: .error, status)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:186:22: warning: 'SecKeychainGetStatus' was deprecated in macOS 10.10: SecKeychain is deprecated
184 |
185 | var rawStatus: SecKeychainStatus = .zero
186 | let status = SecKeychainGetStatus(keychain, &rawStatus)
| `- warning: 'SecKeychainGetStatus' was deprecated in macOS 10.10: SecKeychain is deprecated
187 | if status == errSecSuccess {
188 | let keychainStatus = KeychainStatusOptions(rawValue: rawStatus)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:206:22: warning: 'SecKeychainLock' was deprecated in macOS 10.10: SecKeychain is deprecated
204 |
205 | os_log("Attempting to lock keychain at %{public}@", log: Logs.keychainFile, type: .info, path)
206 | let status = SecKeychainLock(keychain)
| `- warning: 'SecKeychainLock' was deprecated in macOS 10.10: SecKeychain is deprecated
207 | if status != errSecSuccess {
208 | os_log("SecKeychainLock returned error %{public}d", log: Logs.keychainFile, type: .error, status)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:228:22: warning: 'SecKeychainUnlock' was deprecated in macOS 10.10: SecKeychain is deprecated
226 | // We can't unlock the system keychain with our password; prompt the user if needed.
227 | os_log("Attempting to unlock keychain at %{public}@", log: Logs.keychainFile, type: .info, path)
228 | status = SecKeychainUnlock(keychain, 0, nil, false)
| `- warning: 'SecKeychainUnlock' was deprecated in macOS 10.10: SecKeychain is deprecated
229 | } else {
230 | guard let passwordFunc = passwordProvider else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:238:22: warning: 'SecKeychainUnlock' was deprecated in macOS 10.10: SecKeychain is deprecated
236 | let rawPassword = passwordFunc(path)
237 | os_log("Attempting to unlock keychain at %{public}@", log: Logs.keychainFile, type: .info, path)
238 | status = SecKeychainUnlock(keychain, UInt32(rawPassword.count), rawPassword, true)
| `- warning: 'SecKeychainUnlock' was deprecated in macOS 10.10: SecKeychain is deprecated
239 | }
240 | if status != errSecSuccess {
[111/127] Compiling Haversack ItemSecurity.swift
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/ItemSecurity.swift:13:23: warning: static property 'standard' is not concurrency-safe because non-'Sendable' type 'ItemSecurity' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Specify the security of the keychain item
7 | public struct ItemSecurity {
| `- note: consider making struct 'ItemSecurity' conform to the 'Sendable' protocol
8 |
9 | /// The Haversack standard security for keychain items.
:
11 | /// The item is retrievable only when the device is unlocked and does NOT synchronize to other devices.
12 | /// The item is not part of any app group or keychain group.
13 | public static let standard = ItemSecurity().retrievableNoThrow(when: .simple(.unlockedThisDeviceOnly))
| |- warning: static property 'standard' is not concurrency-safe because non-'Sendable' type 'ItemSecurity' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'standard' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 | /// The keychain query. **Do not** manipulate this directly.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:31:23: warning: static property 'systemRootCertificates' is not concurrency-safe because non-'Sendable' type 'KeychainFile' may have shared mutable state; this is an error in the Swift 6 language mode
24 | /// Locking/unlocking the keychain file is logged at the `.info` level.
25 | /// All errors are logged at the `.error` level.
26 | public class KeychainFile {
| `- note: class 'KeychainFile' does not conform to the 'Sendable' protocol
27 | /// The path to the system keychain that contains the globally trusted root CA certificates.
28 | static let rootCertificatesKeychainPath = "/System/Library/Keychains/SystemRootCertificates.keychain"
29 |
30 | /// An instance of ``KeychainFile`` that points at the system root certificates keychain
31 | public static let systemRootCertificates = KeychainFile(at: rootCertificatesKeychainPath)
| |- warning: static property 'systemRootCertificates' is not concurrency-safe because non-'Sendable' type 'KeychainFile' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'systemRootCertificates' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
32 |
33 | /// The path to the system keychain.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:37:23: warning: static property 'system' is not concurrency-safe because non-'Sendable' type 'KeychainFile' may have shared mutable state; this is an error in the Swift 6 language mode
24 | /// Locking/unlocking the keychain file is logged at the `.info` level.
25 | /// All errors are logged at the `.error` level.
26 | public class KeychainFile {
| `- note: class 'KeychainFile' does not conform to the 'Sendable' protocol
27 | /// The path to the system keychain that contains the globally trusted root CA certificates.
28 | static let rootCertificatesKeychainPath = "/System/Library/Keychains/SystemRootCertificates.keychain"
:
35 |
36 | /// An instance of ``KeychainFile`` that points at the system keychain
37 | public static let system: KeychainFile = {
| |- warning: static property 'system' is not concurrency-safe because non-'Sendable' type 'KeychainFile' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'system' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
38 | let legacySystemKeychainPath = "/Library/Keychains/System.keychain"
39 | var searchList: CFArray?
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:41:13: warning: 'SecKeychainCopyDomainSearchList' was deprecated in macOS 10.10: SecKeychain is deprecated
39 | var searchList: CFArray?
40 | let status = withUnsafeMutablePointer(to: &searchList) {
41 | SecKeychainCopyDomainSearchList(.system, UnsafeMutablePointer($0))
| `- warning: 'SecKeychainCopyDomainSearchList' was deprecated in macOS 10.10: SecKeychain is deprecated
42 | }
43 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:85:13: warning: 'SecKeychainGetPath' was deprecated in macOS 10.10: SecKeychain is deprecated
83 | let pathName = UnsafeMutablePointer<CChar>.allocate(capacity: Int(pathLength))
84 | let status = withUnsafeMutablePointer(to: &pathLength) { pathLength in
85 | SecKeychainGetPath(reference, pathLength, pathName)
| `- warning: 'SecKeychainGetPath' was deprecated in macOS 10.10: SecKeychain is deprecated
86 | }
87 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:127:22: warning: 'SecKeychainOpen' was deprecated in macOS 10.10: SecKeychain is deprecated
125 | func open() throws {
126 | os_log("Attempting to open keychain at %{public}@", log: Logs.keychainFile, type: .default, path)
127 | let status = SecKeychainOpen(path, &reference)
| `- warning: 'SecKeychainOpen' was deprecated in macOS 10.10: SecKeychain is deprecated
128 | if status != errSecSuccess {
129 | os_log("SecKeychainOpen returned error %{public}d", log: Logs.keychainFile, type: .error, status)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:159:22: warning: 'SecKeychainCreate' was deprecated in macOS 10.10: SecKeychain is deprecated
157 |
158 | os_log("Attempting to create keychain at %{public}@", log: Logs.keychainFile, type: .default, path)
159 | let status = SecKeychainCreate(path, UInt32(rawPassword.count), rawPassword, false, nil, &reference)
| `- warning: 'SecKeychainCreate' was deprecated in macOS 10.10: SecKeychain is deprecated
160 | if status != errSecSuccess {
161 | os_log("SecKeychainCreate returned error %{public}d", log: Logs.keychainFile, type: .error, status)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:170:22: warning: 'SecKeychainDelete' was deprecated in macOS 10.10: SecKeychain is deprecated
168 | public func delete() throws {
169 | os_log("Attempting to delete keychain at %{public}@", log: Logs.keychainFile, type: .default, path)
170 | let status = SecKeychainDelete(reference)
| `- warning: 'SecKeychainDelete' was deprecated in macOS 10.10: SecKeychain is deprecated
171 | if status != errSecSuccess {
172 | os_log("SecKeychainDelete returned error %{public}d", log: Logs.keychainFile, type: .error, status)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:186:22: warning: 'SecKeychainGetStatus' was deprecated in macOS 10.10: SecKeychain is deprecated
184 |
185 | var rawStatus: SecKeychainStatus = .zero
186 | let status = SecKeychainGetStatus(keychain, &rawStatus)
| `- warning: 'SecKeychainGetStatus' was deprecated in macOS 10.10: SecKeychain is deprecated
187 | if status == errSecSuccess {
188 | let keychainStatus = KeychainStatusOptions(rawValue: rawStatus)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:206:22: warning: 'SecKeychainLock' was deprecated in macOS 10.10: SecKeychain is deprecated
204 |
205 | os_log("Attempting to lock keychain at %{public}@", log: Logs.keychainFile, type: .info, path)
206 | let status = SecKeychainLock(keychain)
| `- warning: 'SecKeychainLock' was deprecated in macOS 10.10: SecKeychain is deprecated
207 | if status != errSecSuccess {
208 | os_log("SecKeychainLock returned error %{public}d", log: Logs.keychainFile, type: .error, status)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:228:22: warning: 'SecKeychainUnlock' was deprecated in macOS 10.10: SecKeychain is deprecated
226 | // We can't unlock the system keychain with our password; prompt the user if needed.
227 | os_log("Attempting to unlock keychain at %{public}@", log: Logs.keychainFile, type: .info, path)
228 | status = SecKeychainUnlock(keychain, 0, nil, false)
| `- warning: 'SecKeychainUnlock' was deprecated in macOS 10.10: SecKeychain is deprecated
229 | } else {
230 | guard let passwordFunc = passwordProvider else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:238:22: warning: 'SecKeychainUnlock' was deprecated in macOS 10.10: SecKeychain is deprecated
236 | let rawPassword = passwordFunc(path)
237 | os_log("Attempting to unlock keychain at %{public}@", log: Logs.keychainFile, type: .info, path)
238 | status = SecKeychainUnlock(keychain, UInt32(rawPassword.count), rawPassword, true)
| `- warning: 'SecKeychainUnlock' was deprecated in macOS 10.10: SecKeychain is deprecated
239 | }
240 | if status != errSecSuccess {
[112/127] Compiling Haversack KeychainFile.swift
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/ItemSecurity.swift:13:23: warning: static property 'standard' is not concurrency-safe because non-'Sendable' type 'ItemSecurity' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Specify the security of the keychain item
7 | public struct ItemSecurity {
| `- note: consider making struct 'ItemSecurity' conform to the 'Sendable' protocol
8 |
9 | /// The Haversack standard security for keychain items.
:
11 | /// The item is retrievable only when the device is unlocked and does NOT synchronize to other devices.
12 | /// The item is not part of any app group or keychain group.
13 | public static let standard = ItemSecurity().retrievableNoThrow(when: .simple(.unlockedThisDeviceOnly))
| |- warning: static property 'standard' is not concurrency-safe because non-'Sendable' type 'ItemSecurity' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'standard' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
14 |
15 | /// The keychain query. **Do not** manipulate this directly.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:31:23: warning: static property 'systemRootCertificates' is not concurrency-safe because non-'Sendable' type 'KeychainFile' may have shared mutable state; this is an error in the Swift 6 language mode
24 | /// Locking/unlocking the keychain file is logged at the `.info` level.
25 | /// All errors are logged at the `.error` level.
26 | public class KeychainFile {
| `- note: class 'KeychainFile' does not conform to the 'Sendable' protocol
27 | /// The path to the system keychain that contains the globally trusted root CA certificates.
28 | static let rootCertificatesKeychainPath = "/System/Library/Keychains/SystemRootCertificates.keychain"
29 |
30 | /// An instance of ``KeychainFile`` that points at the system root certificates keychain
31 | public static let systemRootCertificates = KeychainFile(at: rootCertificatesKeychainPath)
| |- warning: static property 'systemRootCertificates' is not concurrency-safe because non-'Sendable' type 'KeychainFile' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'systemRootCertificates' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
32 |
33 | /// The path to the system keychain.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:37:23: warning: static property 'system' is not concurrency-safe because non-'Sendable' type 'KeychainFile' may have shared mutable state; this is an error in the Swift 6 language mode
24 | /// Locking/unlocking the keychain file is logged at the `.info` level.
25 | /// All errors are logged at the `.error` level.
26 | public class KeychainFile {
| `- note: class 'KeychainFile' does not conform to the 'Sendable' protocol
27 | /// The path to the system keychain that contains the globally trusted root CA certificates.
28 | static let rootCertificatesKeychainPath = "/System/Library/Keychains/SystemRootCertificates.keychain"
:
35 |
36 | /// An instance of ``KeychainFile`` that points at the system keychain
37 | public static let system: KeychainFile = {
| |- warning: static property 'system' is not concurrency-safe because non-'Sendable' type 'KeychainFile' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'system' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
38 | let legacySystemKeychainPath = "/Library/Keychains/System.keychain"
39 | var searchList: CFArray?
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:41:13: warning: 'SecKeychainCopyDomainSearchList' was deprecated in macOS 10.10: SecKeychain is deprecated
39 | var searchList: CFArray?
40 | let status = withUnsafeMutablePointer(to: &searchList) {
41 | SecKeychainCopyDomainSearchList(.system, UnsafeMutablePointer($0))
| `- warning: 'SecKeychainCopyDomainSearchList' was deprecated in macOS 10.10: SecKeychain is deprecated
42 | }
43 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:85:13: warning: 'SecKeychainGetPath' was deprecated in macOS 10.10: SecKeychain is deprecated
83 | let pathName = UnsafeMutablePointer<CChar>.allocate(capacity: Int(pathLength))
84 | let status = withUnsafeMutablePointer(to: &pathLength) { pathLength in
85 | SecKeychainGetPath(reference, pathLength, pathName)
| `- warning: 'SecKeychainGetPath' was deprecated in macOS 10.10: SecKeychain is deprecated
86 | }
87 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:127:22: warning: 'SecKeychainOpen' was deprecated in macOS 10.10: SecKeychain is deprecated
125 | func open() throws {
126 | os_log("Attempting to open keychain at %{public}@", log: Logs.keychainFile, type: .default, path)
127 | let status = SecKeychainOpen(path, &reference)
| `- warning: 'SecKeychainOpen' was deprecated in macOS 10.10: SecKeychain is deprecated
128 | if status != errSecSuccess {
129 | os_log("SecKeychainOpen returned error %{public}d", log: Logs.keychainFile, type: .error, status)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:159:22: warning: 'SecKeychainCreate' was deprecated in macOS 10.10: SecKeychain is deprecated
157 |
158 | os_log("Attempting to create keychain at %{public}@", log: Logs.keychainFile, type: .default, path)
159 | let status = SecKeychainCreate(path, UInt32(rawPassword.count), rawPassword, false, nil, &reference)
| `- warning: 'SecKeychainCreate' was deprecated in macOS 10.10: SecKeychain is deprecated
160 | if status != errSecSuccess {
161 | os_log("SecKeychainCreate returned error %{public}d", log: Logs.keychainFile, type: .error, status)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:170:22: warning: 'SecKeychainDelete' was deprecated in macOS 10.10: SecKeychain is deprecated
168 | public func delete() throws {
169 | os_log("Attempting to delete keychain at %{public}@", log: Logs.keychainFile, type: .default, path)
170 | let status = SecKeychainDelete(reference)
| `- warning: 'SecKeychainDelete' was deprecated in macOS 10.10: SecKeychain is deprecated
171 | if status != errSecSuccess {
172 | os_log("SecKeychainDelete returned error %{public}d", log: Logs.keychainFile, type: .error, status)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:186:22: warning: 'SecKeychainGetStatus' was deprecated in macOS 10.10: SecKeychain is deprecated
184 |
185 | var rawStatus: SecKeychainStatus = .zero
186 | let status = SecKeychainGetStatus(keychain, &rawStatus)
| `- warning: 'SecKeychainGetStatus' was deprecated in macOS 10.10: SecKeychain is deprecated
187 | if status == errSecSuccess {
188 | let keychainStatus = KeychainStatusOptions(rawValue: rawStatus)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:206:22: warning: 'SecKeychainLock' was deprecated in macOS 10.10: SecKeychain is deprecated
204 |
205 | os_log("Attempting to lock keychain at %{public}@", log: Logs.keychainFile, type: .info, path)
206 | let status = SecKeychainLock(keychain)
| `- warning: 'SecKeychainLock' was deprecated in macOS 10.10: SecKeychain is deprecated
207 | if status != errSecSuccess {
208 | os_log("SecKeychainLock returned error %{public}d", log: Logs.keychainFile, type: .error, status)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:228:22: warning: 'SecKeychainUnlock' was deprecated in macOS 10.10: SecKeychain is deprecated
226 | // We can't unlock the system keychain with our password; prompt the user if needed.
227 | os_log("Attempting to unlock keychain at %{public}@", log: Logs.keychainFile, type: .info, path)
228 | status = SecKeychainUnlock(keychain, 0, nil, false)
| `- warning: 'SecKeychainUnlock' was deprecated in macOS 10.10: SecKeychain is deprecated
229 | } else {
230 | guard let passwordFunc = passwordProvider else {
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Security/KeychainFile.swift:238:22: warning: 'SecKeychainUnlock' was deprecated in macOS 10.10: SecKeychain is deprecated
236 | let rawPassword = passwordFunc(path)
237 | os_log("Attempting to unlock keychain at %{public}@", log: Logs.keychainFile, type: .info, path)
238 | status = SecKeychainUnlock(keychain, UInt32(rawPassword.count), rawPassword, true)
| `- warning: 'SecKeychainUnlock' was deprecated in macOS 10.10: SecKeychain is deprecated
239 | }
240 | if status != errSecSuccess {
[113/127] Compiling Haversack Logs.swift
[114/127] Compiling Haversack CertificateBaseQuerying.swift
[115/127] Compiling Haversack CertificateQuery.swift
[116/127] Compiling Haversack GenericPasswordQuery.swift
[117/127] Compiling Haversack KeychainPortable.swift
[118/127] Compiling Haversack PassphraseStrategy.swift
[119/127] Compiling Haversack PrivateKeyImporting.swift
[120/127] Compiling Haversack KeyGenerationConfig.swift
[121/127] Compiling Haversack KeyQuery.swift
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyQuery.swift:120:24: warning: static property 'translation' is not concurrency-safe because non-'Sendable' type '[CFString : KeyClass]' may have shared mutable state; this is an error in the Swift 6 language mode
118 | case symmetric
119 |
120 | private static let translation: [CFString: KeyClass] = [
| `- warning: static property 'translation' is not concurrency-safe because non-'Sendable' type '[CFString : KeyClass]' may have shared mutable state; this is an error in the Swift 6 language mode
121 | kSecAttrKeyClassPrivate: .private,
122 | kSecAttrKeyClassPublic: .public,
CoreFoundation.CFString:1:14: note: class 'CFString' does not conform to the 'Sendable' protocol
1 | public class CFString : _CFObject {
| `- note: class 'CFString' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyQuery.swift:4:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'CoreFoundation'
2 | // Copyright 2023, Jamf
3 |
4 | import Foundation
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'CoreFoundation'
5 |
6 | /// Fluent interface for searching the keychain for cryptographic keys.
:
110 |
111 | /// Encapsulates the cryptographic key's class (public, private, or symmetric).
112 | public enum KeyClass {
| `- note: consider making enum 'KeyClass' conform to the 'Sendable' protocol
113 | /// Represents a private key
114 | case `private`
:
118 | case symmetric
119 |
120 | private static let translation: [CFString: KeyClass] = [
| |- note: add '@MainActor' to make static property 'translation' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
121 | kSecAttrKeyClassPrivate: .private,
122 | kSecAttrKeyClassPublic: .public,
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:15:23: warning: static property 'attributes' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
13 |
14 | /// Get the metadata attributes for the item.
15 | public static let attributes = KeychainDataOptions(rawValue: 1 << 0)
| |- warning: static property 'attributes' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'attributes' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
16 | /// Get the raw unencrypted data for the item.
17 | ///
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:19:23: warning: static property 'data' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
17 | ///
18 | /// Using this will generate a user prompt on macOS if the data exists but your app does not have access to it.
19 | public static let data = KeychainDataOptions(rawValue: 1 << 1)
| |- warning: static property 'data' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'data' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 | /// Get a persistent reference that can be stored outside of the keychain.
21 | public static let persistantReference = KeychainDataOptions(rawValue: 1 << 2)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:21:23: warning: static property 'persistantReference' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
19 | public static let data = KeychainDataOptions(rawValue: 1 << 1)
20 | /// Get a persistent reference that can be stored outside of the keychain.
21 | public static let persistantReference = KeychainDataOptions(rawValue: 1 << 2)
| |- warning: static property 'persistantReference' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'persistantReference' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
22 | /// Get a reference to the keychain item.
23 | public static let reference = KeychainDataOptions(rawValue: 1 << 3)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:23:23: warning: static property 'reference' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
21 | public static let persistantReference = KeychainDataOptions(rawValue: 1 << 2)
22 | /// Get a reference to the keychain item.
23 | public static let reference = KeychainDataOptions(rawValue: 1 << 3)
| |- warning: static property 'reference' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'reference' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
24 |
25 | /// Typically most apps will just want to read the secure data.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:26:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
24 |
25 | /// Typically most apps will just want to read the secure data.
26 | public static let `default`: KeychainDataOptions = [.data]
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
27 |
28 | /// Get all of the possible data about the keychain item.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:29:23: warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
27 |
28 | /// Get all of the possible data about the keychain item.
29 | public static let all: KeychainDataOptions = [.attributes, .data, .persistantReference, .reference]
| |- warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'all' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
30 | }
31 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:41:23: warning: static property 'caseInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
31 |
32 | /// Options for how to compare strings in keychain queries.
33 | public struct KeychainStringComparisonOptions: OptionSet {
| `- note: consider making struct 'KeychainStringComparisonOptions' conform to the 'Sendable' protocol
34 | public let rawValue: Int
35 |
:
39 |
40 | /// Compare strings without caring about the case of letters.
41 | public static let caseInsensitive = KeychainStringComparisonOptions(rawValue: 1 << 0)
| |- warning: static property 'caseInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'caseInsensitive' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 |
43 | #if os(macOS)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:46:23: warning: static property 'diacriticInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
31 |
32 | /// Options for how to compare strings in keychain queries.
33 | public struct KeychainStringComparisonOptions: OptionSet {
| `- note: consider making struct 'KeychainStringComparisonOptions' conform to the 'Sendable' protocol
34 | public let rawValue: Int
35 |
:
44 | /// Compare strings without caring about diacritical marks on letters; macOS only.
45 | /// - Important: Available on macOS only.
46 | public static let diacriticInsensitive = KeychainStringComparisonOptions(rawValue: 1 << 1)
| |- warning: static property 'diacriticInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'diacriticInsensitive' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
47 |
48 | /// Compare strings without caring about ASCII/UTF8/UTF16 encoding differences; macOS only.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:50:23: warning: static property 'widthInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
31 |
32 | /// Options for how to compare strings in keychain queries.
33 | public struct KeychainStringComparisonOptions: OptionSet {
| `- note: consider making struct 'KeychainStringComparisonOptions' conform to the 'Sendable' protocol
34 | public let rawValue: Int
35 |
:
48 | /// Compare strings without caring about ASCII/UTF8/UTF16 encoding differences; macOS only.
49 | /// - Important: Available on macOS only.
50 | public static let widthInsensitive = KeychainStringComparisonOptions(rawValue: 1 << 2)
| |- warning: static property 'widthInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'widthInsensitive' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
51 | #endif
52 | }
[122/127] Compiling Haversack KeychainQueryOptions.swift
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyQuery.swift:120:24: warning: static property 'translation' is not concurrency-safe because non-'Sendable' type '[CFString : KeyClass]' may have shared mutable state; this is an error in the Swift 6 language mode
118 | case symmetric
119 |
120 | private static let translation: [CFString: KeyClass] = [
| `- warning: static property 'translation' is not concurrency-safe because non-'Sendable' type '[CFString : KeyClass]' may have shared mutable state; this is an error in the Swift 6 language mode
121 | kSecAttrKeyClassPrivate: .private,
122 | kSecAttrKeyClassPublic: .public,
CoreFoundation.CFString:1:14: note: class 'CFString' does not conform to the 'Sendable' protocol
1 | public class CFString : _CFObject {
| `- note: class 'CFString' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyQuery.swift:4:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'CoreFoundation'
2 | // Copyright 2023, Jamf
3 |
4 | import Foundation
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'CoreFoundation'
5 |
6 | /// Fluent interface for searching the keychain for cryptographic keys.
:
110 |
111 | /// Encapsulates the cryptographic key's class (public, private, or symmetric).
112 | public enum KeyClass {
| `- note: consider making enum 'KeyClass' conform to the 'Sendable' protocol
113 | /// Represents a private key
114 | case `private`
:
118 | case symmetric
119 |
120 | private static let translation: [CFString: KeyClass] = [
| |- note: add '@MainActor' to make static property 'translation' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
121 | kSecAttrKeyClassPrivate: .private,
122 | kSecAttrKeyClassPublic: .public,
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:15:23: warning: static property 'attributes' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
13 |
14 | /// Get the metadata attributes for the item.
15 | public static let attributes = KeychainDataOptions(rawValue: 1 << 0)
| |- warning: static property 'attributes' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'attributes' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
16 | /// Get the raw unencrypted data for the item.
17 | ///
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:19:23: warning: static property 'data' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
17 | ///
18 | /// Using this will generate a user prompt on macOS if the data exists but your app does not have access to it.
19 | public static let data = KeychainDataOptions(rawValue: 1 << 1)
| |- warning: static property 'data' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'data' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 | /// Get a persistent reference that can be stored outside of the keychain.
21 | public static let persistantReference = KeychainDataOptions(rawValue: 1 << 2)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:21:23: warning: static property 'persistantReference' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
19 | public static let data = KeychainDataOptions(rawValue: 1 << 1)
20 | /// Get a persistent reference that can be stored outside of the keychain.
21 | public static let persistantReference = KeychainDataOptions(rawValue: 1 << 2)
| |- warning: static property 'persistantReference' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'persistantReference' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
22 | /// Get a reference to the keychain item.
23 | public static let reference = KeychainDataOptions(rawValue: 1 << 3)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:23:23: warning: static property 'reference' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
21 | public static let persistantReference = KeychainDataOptions(rawValue: 1 << 2)
22 | /// Get a reference to the keychain item.
23 | public static let reference = KeychainDataOptions(rawValue: 1 << 3)
| |- warning: static property 'reference' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'reference' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
24 |
25 | /// Typically most apps will just want to read the secure data.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:26:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
24 |
25 | /// Typically most apps will just want to read the secure data.
26 | public static let `default`: KeychainDataOptions = [.data]
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
27 |
28 | /// Get all of the possible data about the keychain item.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:29:23: warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
27 |
28 | /// Get all of the possible data about the keychain item.
29 | public static let all: KeychainDataOptions = [.attributes, .data, .persistantReference, .reference]
| |- warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'all' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
30 | }
31 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:41:23: warning: static property 'caseInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
31 |
32 | /// Options for how to compare strings in keychain queries.
33 | public struct KeychainStringComparisonOptions: OptionSet {
| `- note: consider making struct 'KeychainStringComparisonOptions' conform to the 'Sendable' protocol
34 | public let rawValue: Int
35 |
:
39 |
40 | /// Compare strings without caring about the case of letters.
41 | public static let caseInsensitive = KeychainStringComparisonOptions(rawValue: 1 << 0)
| |- warning: static property 'caseInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'caseInsensitive' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 |
43 | #if os(macOS)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:46:23: warning: static property 'diacriticInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
31 |
32 | /// Options for how to compare strings in keychain queries.
33 | public struct KeychainStringComparisonOptions: OptionSet {
| `- note: consider making struct 'KeychainStringComparisonOptions' conform to the 'Sendable' protocol
34 | public let rawValue: Int
35 |
:
44 | /// Compare strings without caring about diacritical marks on letters; macOS only.
45 | /// - Important: Available on macOS only.
46 | public static let diacriticInsensitive = KeychainStringComparisonOptions(rawValue: 1 << 1)
| |- warning: static property 'diacriticInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'diacriticInsensitive' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
47 |
48 | /// Compare strings without caring about ASCII/UTF8/UTF16 encoding differences; macOS only.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:50:23: warning: static property 'widthInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
31 |
32 | /// Options for how to compare strings in keychain queries.
33 | public struct KeychainStringComparisonOptions: OptionSet {
| `- note: consider making struct 'KeychainStringComparisonOptions' conform to the 'Sendable' protocol
34 | public let rawValue: Int
35 |
:
48 | /// Compare strings without caring about ASCII/UTF8/UTF16 encoding differences; macOS only.
49 | /// - Important: Available on macOS only.
50 | public static let widthInsensitive = KeychainStringComparisonOptions(rawValue: 1 << 2)
| |- warning: static property 'widthInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'widthInsensitive' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
51 | #endif
52 | }
[123/127] Compiling Haversack KeychainQuerying.swift
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyQuery.swift:120:24: warning: static property 'translation' is not concurrency-safe because non-'Sendable' type '[CFString : KeyClass]' may have shared mutable state; this is an error in the Swift 6 language mode
118 | case symmetric
119 |
120 | private static let translation: [CFString: KeyClass] = [
| `- warning: static property 'translation' is not concurrency-safe because non-'Sendable' type '[CFString : KeyClass]' may have shared mutable state; this is an error in the Swift 6 language mode
121 | kSecAttrKeyClassPrivate: .private,
122 | kSecAttrKeyClassPublic: .public,
CoreFoundation.CFString:1:14: note: class 'CFString' does not conform to the 'Sendable' protocol
1 | public class CFString : _CFObject {
| `- note: class 'CFString' does not conform to the 'Sendable' protocol
2 | }
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeyQuery.swift:4:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'CoreFoundation'
2 | // Copyright 2023, Jamf
3 |
4 | import Foundation
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'CoreFoundation'
5 |
6 | /// Fluent interface for searching the keychain for cryptographic keys.
:
110 |
111 | /// Encapsulates the cryptographic key's class (public, private, or symmetric).
112 | public enum KeyClass {
| `- note: consider making enum 'KeyClass' conform to the 'Sendable' protocol
113 | /// Represents a private key
114 | case `private`
:
118 | case symmetric
119 |
120 | private static let translation: [CFString: KeyClass] = [
| |- note: add '@MainActor' to make static property 'translation' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
121 | kSecAttrKeyClassPrivate: .private,
122 | kSecAttrKeyClassPublic: .public,
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:15:23: warning: static property 'attributes' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
13 |
14 | /// Get the metadata attributes for the item.
15 | public static let attributes = KeychainDataOptions(rawValue: 1 << 0)
| |- warning: static property 'attributes' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'attributes' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
16 | /// Get the raw unencrypted data for the item.
17 | ///
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:19:23: warning: static property 'data' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
17 | ///
18 | /// Using this will generate a user prompt on macOS if the data exists but your app does not have access to it.
19 | public static let data = KeychainDataOptions(rawValue: 1 << 1)
| |- warning: static property 'data' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'data' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 | /// Get a persistent reference that can be stored outside of the keychain.
21 | public static let persistantReference = KeychainDataOptions(rawValue: 1 << 2)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:21:23: warning: static property 'persistantReference' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
19 | public static let data = KeychainDataOptions(rawValue: 1 << 1)
20 | /// Get a persistent reference that can be stored outside of the keychain.
21 | public static let persistantReference = KeychainDataOptions(rawValue: 1 << 2)
| |- warning: static property 'persistantReference' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'persistantReference' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
22 | /// Get a reference to the keychain item.
23 | public static let reference = KeychainDataOptions(rawValue: 1 << 3)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:23:23: warning: static property 'reference' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
21 | public static let persistantReference = KeychainDataOptions(rawValue: 1 << 2)
22 | /// Get a reference to the keychain item.
23 | public static let reference = KeychainDataOptions(rawValue: 1 << 3)
| |- warning: static property 'reference' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'reference' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
24 |
25 | /// Typically most apps will just want to read the secure data.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:26:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
24 |
25 | /// Typically most apps will just want to read the secure data.
26 | public static let `default`: KeychainDataOptions = [.data]
| |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'default' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
27 |
28 | /// Get all of the possible data about the keychain item.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:29:23: warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
5 |
6 | /// Options for what type of data to return from a keychain query.
7 | public struct KeychainDataOptions: OptionSet {
| `- note: consider making struct 'KeychainDataOptions' conform to the 'Sendable' protocol
8 | public let rawValue: Int
9 |
:
27 |
28 | /// Get all of the possible data about the keychain item.
29 | public static let all: KeychainDataOptions = [.attributes, .data, .persistantReference, .reference]
| |- warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'KeychainDataOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'all' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
30 | }
31 |
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:41:23: warning: static property 'caseInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
31 |
32 | /// Options for how to compare strings in keychain queries.
33 | public struct KeychainStringComparisonOptions: OptionSet {
| `- note: consider making struct 'KeychainStringComparisonOptions' conform to the 'Sendable' protocol
34 | public let rawValue: Int
35 |
:
39 |
40 | /// Compare strings without caring about the case of letters.
41 | public static let caseInsensitive = KeychainStringComparisonOptions(rawValue: 1 << 0)
| |- warning: static property 'caseInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'caseInsensitive' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 |
43 | #if os(macOS)
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:46:23: warning: static property 'diacriticInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
31 |
32 | /// Options for how to compare strings in keychain queries.
33 | public struct KeychainStringComparisonOptions: OptionSet {
| `- note: consider making struct 'KeychainStringComparisonOptions' conform to the 'Sendable' protocol
34 | public let rawValue: Int
35 |
:
44 | /// Compare strings without caring about diacritical marks on letters; macOS only.
45 | /// - Important: Available on macOS only.
46 | public static let diacriticInsensitive = KeychainStringComparisonOptions(rawValue: 1 << 1)
| |- warning: static property 'diacriticInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'diacriticInsensitive' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
47 |
48 | /// Compare strings without caring about ASCII/UTF8/UTF16 encoding differences; macOS only.
/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Queries/KeychainQueryOptions.swift:50:23: warning: static property 'widthInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
31 |
32 | /// Options for how to compare strings in keychain queries.
33 | public struct KeychainStringComparisonOptions: OptionSet {
| `- note: consider making struct 'KeychainStringComparisonOptions' conform to the 'Sendable' protocol
34 | public let rawValue: Int
35 |
:
48 | /// Compare strings without caring about ASCII/UTF8/UTF16 encoding differences; macOS only.
49 | /// - Important: Available on macOS only.
50 | public static let widthInsensitive = KeychainStringComparisonOptions(rawValue: 1 << 2)
| |- warning: static property 'widthInsensitive' is not concurrency-safe because non-'Sendable' type 'KeychainStringComparisonOptions' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'widthInsensitive' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
51 | #endif
52 | }
[124/127] Compiling Haversack HaversackError.swift
[125/127] Compiling Haversack HaversackStrategy.swift
[126/127] Compiling Haversack KeychainExportConfig.swift
[127/127] Compiling Haversack KeychainImportConfig.swift
[128/133] Compiling HaversackCryptoKit GenericPasswordConvertible+CryptoKit.swift
[129/133] Compiling HaversackCryptoKit SecKeyConvertible.swift
[130/133] Emitting module HaversackCryptoKit
[131/133] Compiling HaversackMock HaversackEphemeralStrategy.swift
[132/133] Emitting module HaversackMock
[133/133] Compiling HaversackMock HaversackEphemeralStrategy+mocking.swift
Build complete! (22.17s)
Build complete.
{
"dependencies" : [
{
"identity" : "swift-collections",
"requirement" : {
"range" : [
{
"lower_bound" : "1.1.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-collections"
},
{
"identity" : "swift-docc-plugin",
"requirement" : {
"range" : [
{
"lower_bound" : "1.3.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-docc-plugin"
}
],
"manifest_display_name" : "Haversack",
"name" : "Haversack",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.13"
},
{
"name" : "ios",
"version" : "12.0"
},
{
"name" : "tvos",
"version" : "12.0"
},
{
"name" : "visionos",
"version" : "1.0"
},
{
"name" : "watchos",
"version" : "5.0"
}
],
"products" : [
{
"name" : "Haversack",
"targets" : [
"Haversack"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "HaversackCryptoKit",
"targets" : [
"HaversackCryptoKit"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "HaversackMock",
"targets" : [
"HaversackMock"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "HaversackTests",
"module_type" : "SwiftTarget",
"name" : "HaversackTests",
"path" : "Tests/HaversackTests",
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/HaversackTests/TestResources",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"CertificateIntegrationTests.swift",
"Data+X501NameTests.swift",
"EphemeralStrategyTests.swift",
"GenericPasswordConvertibleTests.swift",
"GenericPasswordIntegrationTests.swift",
"HaversackAsyncAwaitTests.swift",
"HaversackTests.swift",
"IdentityIntegrationTests.swift",
"InternetPasswordIntegrationTests.swift",
"KeyGenerationConfigTests.swift",
"KeyGenerationIntegrationTests.swift",
"KeychainExportConfigTests.swift",
"KeychainExportIntegrationTests.swift",
"KeychainFileIntegrationTests.swift",
"KeychainImportConfigTests.swift",
"KeychainImportIntegrationTests.swift",
"QueryCertificateTests.swift",
"QueryIdentityTests.swift",
"QueryKeyTests.swift",
"QueryPasswordTests.swift",
"SystemKeychainIntegrationTests.swift",
"XCTestCase+TestResources.swift"
],
"target_dependencies" : [
"HaversackMock"
],
"type" : "test"
},
{
"c99name" : "HaversackMock",
"module_type" : "SwiftTarget",
"name" : "HaversackMock",
"path" : "Sources/HaversackMock",
"product_memberships" : [
"HaversackMock"
],
"sources" : [
"HaversackEphemeralStrategy+mocking.swift",
"HaversackEphemeralStrategy.swift"
],
"target_dependencies" : [
"Haversack"
],
"type" : "library"
},
{
"c99name" : "HaversackCryptoKit",
"module_type" : "SwiftTarget",
"name" : "HaversackCryptoKit",
"path" : "Sources/HaversackCryptoKit",
"product_memberships" : [
"HaversackCryptoKit"
],
"sources" : [
"GenericPasswordConvertible+CryptoKit.swift",
"SecKeyConvertible.swift"
],
"target_dependencies" : [
"Haversack"
],
"type" : "library"
},
{
"c99name" : "Haversack",
"module_type" : "SwiftTarget",
"name" : "Haversack",
"path" : "Sources/Haversack",
"product_dependencies" : [
"OrderedCollections"
],
"product_memberships" : [
"Haversack",
"HaversackCryptoKit",
"HaversackMock"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/Haversack/Resources/PrivacyInfo.xcprivacy",
"rule" : {
"process" : {
}
}
}
],
"sources" : [
"Entities/CertificateEntity.swift",
"Entities/Data+X501Name.swift",
"Entities/GenericPasswordEntity.swift",
"Entities/IdentityEntity.swift",
"Entities/InternetPasswordEntity.swift",
"Entities/KeyEntity.swift",
"Entities/KeychainStorable.swift",
"Entities/PasswordBaseEntity.swift",
"GenericPasswordConvertible.swift",
"Haversack+AsyncAwait.swift",
"Haversack.swift",
"HaversackConfiguration.swift",
"HaversackError.swift",
"HaversackStrategy.swift",
"ImportExport/KeychainExportConfig.swift",
"ImportExport/KeychainImportConfig.swift",
"ImportExport/KeychainPortable.swift",
"ImportExport/PassphraseStrategy.swift",
"ImportExport/PrivateKeyImporting.swift",
"KeyGenerationConfig.swift",
"Logs.swift",
"Queries/CertificateBaseQuerying.swift",
"Queries/CertificateQuery.swift",
"Queries/GenericPasswordQuery.swift",
"Queries/IdentityQuery.swift",
"Queries/InternetPasswordQuery.swift",
"Queries/KeyBaseQuerying.swift",
"Queries/KeyQuery.swift",
"Queries/KeychainQueryOptions.swift",
"Queries/KeychainQuerying.swift",
"Queries/PasswordBaseQuerying.swift",
"Security/ItemSecurity.swift",
"Security/KeychainFile.swift",
"Security/KeychainItemRetrievability.swift",
"Security/RetrievabilityLevel.swift"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Done.