The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

Build Information

Failed to build IBM Security Verify, reference main (c00d9e), with Swift 6.0 for macOS (SPM) on 24 Aug 2025 13:40:00 UTC.

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 4.67.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/ibm-security-verify/verify-sdk-ios.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/ibm-security-verify/verify-sdk-ios
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at c00d9eb Merge pull request #15 from ibm-security-verify/VDEV-57972_Import-DPoP-example
Cloned https://github.com/ibm-security-verify/verify-sdk-ios.git
Revision (git rev-parse @):
c00d9eb872d6c509e77a80a9edded25b7e4bc811
SUCCESS checkout https://github.com/ibm-security-verify/verify-sdk-ios.git at main
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $PWD
https://github.com/ibm-security-verify/verify-sdk-ios.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64
Building for debugging...
[0/20] Write sources
[0/20] Copying README.md
[1/20] Copying Info.plist
[1/20] Copying Localizable.strings
[1/20] Copying Info.plist
[4/20] Write sources
[5/20] Copying Info.plist
[8/20] Copying README.md
[10/20] Write sources
[11/20] Copying Info.plist
[11/20] Copying README.md
[13/20] Write sources
[19/20] Write swift-version-5BDAB9E9C0126B9D.txt
[21/54] Compiling Core Data+Extension.swift
[22/54] Compiling Core DateFormatter+Extension.swift
[23/55] Compiling Adaptive Evaluation.swift
/Users/admin/builder/spi-builder-workspace/Sources/adaptive/AdaptiveContext.swift:5:8: error: no such module 'UIKit'
  3 | //
  4 |
  5 | import UIKit
    |        `- error: no such module 'UIKit'
  6 | import os.log
  7 |
[24/55] Compiling Adaptive resource_bundle_accessor.swift
/Users/admin/builder/spi-builder-workspace/Sources/adaptive/AdaptiveContext.swift:5:8: error: no such module 'UIKit'
  3 | //
  4 |
  5 | import UIKit
    |        `- error: no such module 'UIKit'
  6 | import os.log
  7 |
[25/55] Compiling Adaptive Helpers.swift
/Users/admin/builder/spi-builder-workspace/Sources/adaptive/AdaptiveContext.swift:5:8: error: no such module 'UIKit'
  3 | //
  4 |
  5 | import UIKit
    |        `- error: no such module 'UIKit'
  6 | import os.log
  7 |
[26/55] Compiling Core DefaultValue+Extension.swift
[27/55] Compiling Core DefaultValuePropertyWrapper.swift
[28/55] Compiling Core JSONDecoder+Extension.swift
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:139:25: error: 'Logger' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    |                         `- error: 'Logger' is only available in macOS 11.0 or newer
140 |     private let serviceName = Bundle.main.bundleIdentifier!
141 |
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:59:42: error: 'biometryAny' is only available in macOS 10.13.4 or newer
 26 |
 27 | /// Access control constants that dictate how a keychain item may be used.
 28 | public enum SecAccessControl: RawRepresentable {
    |             `- note: add @available attribute to enclosing enum
 29 |     public typealias RawValue = SecAccessControlCreateFlags
 30 |
    :
 53 |     ///
 54 |     /// - Parameter rawValue: The raw value to use for the new instance.
 55 |     public init?(rawValue: SecAccessControlCreateFlags) {
    |            `- note: add @available attribute to enclosing initializer
 56 |         switch rawValue {
 57 |         case SecAccessControlCreateFlags.devicePasscode:
 58 |             self = .devicePasscode
 59 |         case SecAccessControlCreateFlags.biometryAny:
    |                                          |- error: 'biometryAny' is only available in macOS 10.13.4 or newer
    |                                          `- note: add 'if #available' version check
 60 |             self = .biometryAny
 61 |         case SecAccessControlCreateFlags.biometryCurrentSet:
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:61:42: error: 'biometryCurrentSet' is only available in macOS 10.13.4 or newer
 26 |
 27 | /// Access control constants that dictate how a keychain item may be used.
 28 | public enum SecAccessControl: RawRepresentable {
    |             `- note: add @available attribute to enclosing enum
 29 |     public typealias RawValue = SecAccessControlCreateFlags
 30 |
    :
 53 |     ///
 54 |     /// - Parameter rawValue: The raw value to use for the new instance.
 55 |     public init?(rawValue: SecAccessControlCreateFlags) {
    |            `- note: add @available attribute to enclosing initializer
 56 |         switch rawValue {
 57 |         case SecAccessControlCreateFlags.devicePasscode:
    :
 59 |         case SecAccessControlCreateFlags.biometryAny:
 60 |             self = .biometryAny
 61 |         case SecAccessControlCreateFlags.biometryCurrentSet:
    |                                          |- error: 'biometryCurrentSet' is only available in macOS 10.13.4 or newer
    |                                          `- note: add 'if #available' version check
 62 |             self = .biometryCurrentSet
 63 |         case SecAccessControlCreateFlags.userPresence:
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:75:48: error: 'biometryAny' is only available in macOS 10.13.4 or newer
 26 |
 27 | /// Access control constants that dictate how a keychain item may be used.
 28 | public enum SecAccessControl: RawRepresentable {
    |             `- note: add @available attribute to enclosing enum
 29 |     public typealias RawValue = SecAccessControlCreateFlags
 30 |
    :
 68 |     }
 69 |
 70 |     public var rawValue: RawValue {
    |                `- note: add @available attribute to enclosing property
 71 |         switch self {
 72 |         case .devicePasscode:
 73 |             return SecAccessControlCreateFlags.devicePasscode
 74 |         case .biometryAny:
 75 |             return SecAccessControlCreateFlags.biometryAny
    |                                                |- error: 'biometryAny' is only available in macOS 10.13.4 or newer
    |                                                `- note: add 'if #available' version check
 76 |         case .biometryCurrentSet:
 77 |             return SecAccessControlCreateFlags.biometryCurrentSet
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:77:48: error: 'biometryCurrentSet' is only available in macOS 10.13.4 or newer
 26 |
 27 | /// Access control constants that dictate how a keychain item may be used.
 28 | public enum SecAccessControl: RawRepresentable {
    |             `- note: add @available attribute to enclosing enum
 29 |     public typealias RawValue = SecAccessControlCreateFlags
 30 |
    :
 68 |     }
 69 |
 70 |     public var rawValue: RawValue {
    |                `- note: add @available attribute to enclosing property
 71 |         switch self {
 72 |         case .devicePasscode:
    :
 75 |             return SecAccessControlCreateFlags.biometryAny
 76 |         case .biometryCurrentSet:
 77 |             return SecAccessControlCreateFlags.biometryCurrentSet
    |                                                |- error: 'biometryCurrentSet' is only available in macOS 10.13.4 or newer
    |                                                `- note: add 'if #available' version check
 78 |         case .userPresence:
 79 |             return SecAccessControlCreateFlags.userPresence
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:153:18: error: 'Logger' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
150 |
151 |     /// Initializes the `KeychainService`.
152 |     public override init() {
    |                     `- note: add @available attribute to enclosing initializer
153 |         logger = Logger(subsystem: serviceName, category: "keychain")
    |                  |- error: 'Logger' is only available in macOS 11.0 or newer
    |                  `- note: add 'if #available' version check
154 |     }
155 |
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:200:26: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    |                          |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                          `- note: add 'if #available' version check
201 |             throw KeychainError.invalidKey
202 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:219:30: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
217 |             guard let accessControlFlags = SecAccessControlCreateWithFlags(kCFAllocatorDefault, accessibility.rawValue, accessControl.rawValue, &error) else {
218 |                 let message = error!.takeRetainedValue().localizedDescription
219 |                 logger.error("Error occurred applying access control. \(message, privacy: .public)")
    |                              |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                              `- note: add 'if #available' version check
220 |
221 |                 throw KeychainError.unhandledError(message: message)
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:219:72: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
217 |             guard let accessControlFlags = SecAccessControlCreateWithFlags(kCFAllocatorDefault, accessibility.rawValue, accessControl.rawValue, &error) else {
218 |                 let message = error!.takeRetainedValue().localizedDescription
219 |                 logger.error("Error occurred applying access control. \(message, privacy: .public)")
    |                                                                        |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                        `- note: add 'if #available' version check
220 |
221 |                 throw KeychainError.unhandledError(message: message)
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:235:25: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
233 |         switch status {
234 |         case errSecSuccess:
235 |             logger.info("Item '\(forKey, privacy: .public)' added to keychain: \(status == errSecSuccess, privacy: .public)")
    |                         |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                         `- note: add 'if #available' version check
236 |         case errSecDuplicateItem:
237 |             status = SecItemUpdate(query as CFDictionary, values as CFDictionary)
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:235:33: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
233 |         switch status {
234 |         case errSecSuccess:
235 |             logger.info("Item '\(forKey, privacy: .public)' added to keychain: \(status == errSecSuccess, privacy: .public)")
    |                                 |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                 `- note: add 'if #available' version check
236 |         case errSecDuplicateItem:
237 |             status = SecItemUpdate(query as CFDictionary, values as CFDictionary)
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:235:81: error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
233 |         switch status {
234 |         case errSecSuccess:
235 |             logger.info("Item '\(forKey, privacy: .public)' added to keychain: \(status == errSecSuccess, privacy: .public)")
    |                                                                                 |- error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                 `- note: add 'if #available' version check
236 |         case errSecDuplicateItem:
237 |             status = SecItemUpdate(query as CFDictionary, values as CFDictionary)
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:238:25: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
236 |         case errSecDuplicateItem:
237 |             status = SecItemUpdate(query as CFDictionary, values as CFDictionary)
238 |             logger.info("Item '\(forKey, privacy: .public)' updated in keychain: \(status == errSecSuccess, privacy: .public)")
    |                         |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                         `- note: add 'if #available' version check
239 |         default:
240 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:238:33: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
236 |         case errSecDuplicateItem:
237 |             status = SecItemUpdate(query as CFDictionary, values as CFDictionary)
238 |             logger.info("Item '\(forKey, privacy: .public)' updated in keychain: \(status == errSecSuccess, privacy: .public)")
    |                                 |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                 `- note: add 'if #available' version check
239 |         default:
240 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:238:83: error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
236 |         case errSecDuplicateItem:
237 |             status = SecItemUpdate(query as CFDictionary, values as CFDictionary)
238 |             logger.info("Item '\(forKey, privacy: .public)' updated in keychain: \(status == errSecSuccess, privacy: .public)")
    |                                                                                   |- error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                   `- note: add 'if #available' version check
239 |         default:
240 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:241:26: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
239 |         default:
240 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
241 |             logger.error("Error occured performing the operation. \(message, privacy: .public)")
    |                          |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                          `- note: add 'if #available' version check
242 |             throw KeychainError.unhandledError(message: message)
243 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:241:68: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
239 |         default:
240 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
241 |             logger.error("Error occured performing the operation. \(message, privacy: .public)")
    |                                                                    |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                    `- note: add 'if #available' version check
242 |             throw KeychainError.unhandledError(message: message)
243 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:255:26: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
251 |     /// ```
252 |     /// - Remark: No error is thrown when the key is not found.
253 |     public func deleteItem(_ forKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
254 |         guard !forKey.isEmpty else {
255 |             logger.error("The forKey argument is invalid.")
    |                          |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                          `- note: add 'if #available' version check
256 |             throw KeychainError.invalidKey
257 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:265:21: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
251 |     /// ```
252 |     /// - Remark: No error is thrown when the key is not found.
253 |     public func deleteItem(_ forKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
254 |         guard !forKey.isEmpty else {
255 |             logger.error("The forKey argument is invalid.")
    :
263 |
264 |         let status = SecItemDelete(query as CFDictionary)
265 |         logger.info("Item '\(forKey, privacy: .public)' deleted from keychain: \(status == errSecSuccess, privacy: .public)")
    |                     |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                     `- note: add 'if #available' version check
266 |
267 |         guard status == errSecSuccess || status == errSecItemNotFound else {
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:265:29: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
251 |     /// ```
252 |     /// - Remark: No error is thrown when the key is not found.
253 |     public func deleteItem(_ forKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
254 |         guard !forKey.isEmpty else {
255 |             logger.error("The forKey argument is invalid.")
    :
263 |
264 |         let status = SecItemDelete(query as CFDictionary)
265 |         logger.info("Item '\(forKey, privacy: .public)' deleted from keychain: \(status == errSecSuccess, privacy: .public)")
    |                             |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                             `- note: add 'if #available' version check
266 |
267 |         guard status == errSecSuccess || status == errSecItemNotFound else {
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:265:81: error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
251 |     /// ```
252 |     /// - Remark: No error is thrown when the key is not found.
253 |     public func deleteItem(_ forKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
254 |         guard !forKey.isEmpty else {
255 |             logger.error("The forKey argument is invalid.")
    :
263 |
264 |         let status = SecItemDelete(query as CFDictionary)
265 |         logger.info("Item '\(forKey, privacy: .public)' deleted from keychain: \(status == errSecSuccess, privacy: .public)")
    |                                                                                 |- error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                 `- note: add 'if #available' version check
266 |
267 |         guard status == errSecSuccess || status == errSecItemNotFound else {
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:269:26: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
251 |     /// ```
252 |     /// - Remark: No error is thrown when the key is not found.
253 |     public func deleteItem(_ forKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
254 |         guard !forKey.isEmpty else {
255 |             logger.error("The forKey argument is invalid.")
    :
267 |         guard status == errSecSuccess || status == errSecItemNotFound else {
268 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
269 |             logger.error("Error occured performing the operation. \(message, privacy: .public)")
    |                          |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                          `- note: add 'if #available' version check
270 |             throw KeychainError.unhandledError(message: message)
271 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:269:68: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
251 |     /// ```
252 |     /// - Remark: No error is thrown when the key is not found.
253 |     public func deleteItem(_ forKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
254 |         guard !forKey.isEmpty else {
255 |             logger.error("The forKey argument is invalid.")
    :
267 |         guard status == errSecSuccess || status == errSecItemNotFound else {
268 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
269 |             logger.error("Error occured performing the operation. \(message, privacy: .public)")
    |                                                                    |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                    `- note: add 'if #available' version check
270 |             throw KeychainError.unhandledError(message: message)
271 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:315:26: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    |                          |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                          `- note: add 'if #available' version check
316 |             throw KeychainError.invalidKey
317 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:335:32: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
333 |             switch status {
334 |             case errSecUserCanceled:
335 |                 logger.warning("The user cancelled the operation. Status: \(status, privacy: .public)")
    |                                |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                                `- note: add 'if #available' version check
336 |                 throw KeychainError.unhandledError(message: message)
337 |             case errSecItemNotFound, errSecInvalidItemRef:
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:335:76: error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
333 |             switch status {
334 |             case errSecUserCanceled:
335 |                 logger.warning("The user cancelled the operation. Status: \(status, privacy: .public)")
    |                                                                            |- error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                            `- note: add 'if #available' version check
336 |                 throw KeychainError.unhandledError(message: message)
337 |             case errSecItemNotFound, errSecInvalidItemRef:
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:338:32: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
336 |                 throw KeychainError.unhandledError(message: message)
337 |             case errSecItemNotFound, errSecInvalidItemRef:
338 |                 logger.warning("The specified item not found in Keychain. Status: \(status, privacy: .public)")
    |                                |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                                `- note: add 'if #available' version check
339 |                 throw KeychainError.invalidKey
340 |             default:
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:338:84: error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
336 |                 throw KeychainError.unhandledError(message: message)
337 |             case errSecItemNotFound, errSecInvalidItemRef:
338 |                 logger.warning("The specified item not found in Keychain. Status: \(status, privacy: .public)")
    |                                                                                    |- error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                    `- note: add 'if #available' version check
339 |                 throw KeychainError.invalidKey
340 |             default:
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:341:32: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
339 |                 throw KeychainError.invalidKey
340 |             default:
341 |                 logger.warning("An error occured accessing the Keychain. Status: \(status, privacy: .public)")
    |                                |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                                `- note: add 'if #available' version check
342 |                 throw KeychainError.unhandledError(message: message)
343 |             }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:341:83: error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
339 |                 throw KeychainError.invalidKey
340 |             default:
341 |                 logger.warning("An error occured accessing the Keychain. Status: \(status, privacy: .public)")
    |                                                                                   |- error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                   `- note: add 'if #available' version check
342 |                 throw KeychainError.unhandledError(message: message)
343 |             }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:348:28: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
346 |         // Attempt to decode the value back to it's type.
347 |         guard let result = item as? Data else {
348 |             logger.warning("Invalid data associated with key '\(forKey, privacy: .public)'")
    |                            |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                            `- note: add 'if #available' version check
349 |             throw KeychainError.unexpectedData
350 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:348:64: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
346 |         // Attempt to decode the value back to it's type.
347 |         guard let result = item as? Data else {
348 |             logger.warning("Invalid data associated with key '\(forKey, privacy: .public)'")
    |                                                                |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                `- note: add 'if #available' version check
349 |             throw KeychainError.unexpectedData
350 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:382:21: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
366 |     /// print(result)
367 |     /// ```
368 |     public func itemExists(_ forKey: String) -> Bool {
    |                 `- note: add @available attribute to enclosing instance method
369 |         // Construct a LAContext to surpress any biometry to access the key.
370 |         let context = LAContext()
    :
380 |         let status = SecItemCopyMatching(query as CFDictionary, nil)
381 |
382 |         logger.info("Item '\(forKey, privacy: .public)' exists in keychain: \(status == errSecSuccess || status == errSecInteractionNotAllowed || status == errSecAuthFailed, privacy: .public)")
    |                     |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                     `- note: add 'if #available' version check
383 |
384 |         return status == errSecSuccess || status == errSecInteractionNotAllowed || status == errSecAuthFailed
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:382:29: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
366 |     /// print(result)
367 |     /// ```
368 |     public func itemExists(_ forKey: String) -> Bool {
    |                 `- note: add @available attribute to enclosing instance method
369 |         // Construct a LAContext to surpress any biometry to access the key.
370 |         let context = LAContext()
    :
380 |         let status = SecItemCopyMatching(query as CFDictionary, nil)
381 |
382 |         logger.info("Item '\(forKey, privacy: .public)' exists in keychain: \(status == errSecSuccess || status == errSecInteractionNotAllowed || status == errSecAuthFailed, privacy: .public)")
    |                             |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                             `- note: add 'if #available' version check
383 |
384 |         return status == errSecSuccess || status == errSecInteractionNotAllowed || status == errSecAuthFailed
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:382:78: error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
366 |     /// print(result)
367 |     /// ```
368 |     public func itemExists(_ forKey: String) -> Bool {
    |                 `- note: add @available attribute to enclosing instance method
369 |         // Construct a LAContext to surpress any biometry to access the key.
370 |         let context = LAContext()
    :
380 |         let status = SecItemCopyMatching(query as CFDictionary, nil)
381 |
382 |         logger.info("Item '\(forKey, privacy: .public)' exists in keychain: \(status == errSecSuccess || status == errSecInteractionNotAllowed || status == errSecAuthFailed, privacy: .public)")
    |                                                                              |- error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
    |                                                                              `- note: add 'if #available' version check
383 |
384 |         return status == errSecSuccess || status == errSecInteractionNotAllowed || status == errSecAuthFailed
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:447:21: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
428 |     /// }
429 |     /// ```
430 |     public func renameItem(_ forKey: String, newKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
431 |         // Construct a LAContext to surpress any biometry to access the key.
432 |         let context = LAContext()
    :
445 |
446 |         let status = SecItemUpdate(findQuery as CFDictionary, updateQuery as CFDictionary)
447 |         logger.info("Rename key from '\(forKey, privacy: .public)' to '\(newKey, privacy: .public)': \(status == errSecSuccess, privacy: .public)")
    |                     |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                     `- note: add 'if #available' version check
448 |
449 |
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:447:40: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
428 |     /// }
429 |     /// ```
430 |     public func renameItem(_ forKey: String, newKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
431 |         // Construct a LAContext to surpress any biometry to access the key.
432 |         let context = LAContext()
    :
445 |
446 |         let status = SecItemUpdate(findQuery as CFDictionary, updateQuery as CFDictionary)
447 |         logger.info("Rename key from '\(forKey, privacy: .public)' to '\(newKey, privacy: .public)': \(status == errSecSuccess, privacy: .public)")
    |                                        |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                        `- note: add 'if #available' version check
448 |
449 |
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:447:73: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
428 |     /// }
429 |     /// ```
430 |     public func renameItem(_ forKey: String, newKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
431 |         // Construct a LAContext to surpress any biometry to access the key.
432 |         let context = LAContext()
    :
445 |
446 |         let status = SecItemUpdate(findQuery as CFDictionary, updateQuery as CFDictionary)
447 |         logger.info("Rename key from '\(forKey, privacy: .public)' to '\(newKey, privacy: .public)': \(status == errSecSuccess, privacy: .public)")
    |                                                                         |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                         `- note: add 'if #available' version check
448 |
449 |
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:447:103: error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
428 |     /// }
429 |     /// ```
430 |     public func renameItem(_ forKey: String, newKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
431 |         // Construct a LAContext to surpress any biometry to access the key.
432 |         let context = LAContext()
    :
445 |
446 |         let status = SecItemUpdate(findQuery as CFDictionary, updateQuery as CFDictionary)
447 |         logger.info("Rename key from '\(forKey, privacy: .public)' to '\(newKey, privacy: .public)': \(status == errSecSuccess, privacy: .public)")
    |                                                                                                       |- error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                                       `- note: add 'if #available' version check
448 |
449 |
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:452:26: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
428 |     /// }
429 |     /// ```
430 |     public func renameItem(_ forKey: String, newKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
431 |         // Construct a LAContext to surpress any biometry to access the key.
432 |         let context = LAContext()
    :
450 |         guard status == errSecSuccess else {
451 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
452 |             logger.error("Error occured performing the operation. \(message, privacy: .public)")
    |                          |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                          `- note: add 'if #available' version check
453 |             throw KeychainError.unhandledError(message: message)
454 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:452:68: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
428 |     /// }
429 |     /// ```
430 |     public func renameItem(_ forKey: String, newKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
431 |         // Construct a LAContext to surpress any biometry to access the key.
432 |         let context = LAContext()
    :
450 |         guard status == errSecSuccess else {
451 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
452 |             logger.error("Error occured performing the operation. \(message, privacy: .public)")
    |                                                                    |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                    `- note: add 'if #available' version check
453 |             throw KeychainError.unhandledError(message: message)
454 |         }
[29/55] Compiling Core KeychainService.swift
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:139:25: error: 'Logger' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    |                         `- error: 'Logger' is only available in macOS 11.0 or newer
140 |     private let serviceName = Bundle.main.bundleIdentifier!
141 |
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:59:42: error: 'biometryAny' is only available in macOS 10.13.4 or newer
 26 |
 27 | /// Access control constants that dictate how a keychain item may be used.
 28 | public enum SecAccessControl: RawRepresentable {
    |             `- note: add @available attribute to enclosing enum
 29 |     public typealias RawValue = SecAccessControlCreateFlags
 30 |
    :
 53 |     ///
 54 |     /// - Parameter rawValue: The raw value to use for the new instance.
 55 |     public init?(rawValue: SecAccessControlCreateFlags) {
    |            `- note: add @available attribute to enclosing initializer
 56 |         switch rawValue {
 57 |         case SecAccessControlCreateFlags.devicePasscode:
 58 |             self = .devicePasscode
 59 |         case SecAccessControlCreateFlags.biometryAny:
    |                                          |- error: 'biometryAny' is only available in macOS 10.13.4 or newer
    |                                          `- note: add 'if #available' version check
 60 |             self = .biometryAny
 61 |         case SecAccessControlCreateFlags.biometryCurrentSet:
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:61:42: error: 'biometryCurrentSet' is only available in macOS 10.13.4 or newer
 26 |
 27 | /// Access control constants that dictate how a keychain item may be used.
 28 | public enum SecAccessControl: RawRepresentable {
    |             `- note: add @available attribute to enclosing enum
 29 |     public typealias RawValue = SecAccessControlCreateFlags
 30 |
    :
 53 |     ///
 54 |     /// - Parameter rawValue: The raw value to use for the new instance.
 55 |     public init?(rawValue: SecAccessControlCreateFlags) {
    |            `- note: add @available attribute to enclosing initializer
 56 |         switch rawValue {
 57 |         case SecAccessControlCreateFlags.devicePasscode:
    :
 59 |         case SecAccessControlCreateFlags.biometryAny:
 60 |             self = .biometryAny
 61 |         case SecAccessControlCreateFlags.biometryCurrentSet:
    |                                          |- error: 'biometryCurrentSet' is only available in macOS 10.13.4 or newer
    |                                          `- note: add 'if #available' version check
 62 |             self = .biometryCurrentSet
 63 |         case SecAccessControlCreateFlags.userPresence:
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:75:48: error: 'biometryAny' is only available in macOS 10.13.4 or newer
 26 |
 27 | /// Access control constants that dictate how a keychain item may be used.
 28 | public enum SecAccessControl: RawRepresentable {
    |             `- note: add @available attribute to enclosing enum
 29 |     public typealias RawValue = SecAccessControlCreateFlags
 30 |
    :
 68 |     }
 69 |
 70 |     public var rawValue: RawValue {
    |                `- note: add @available attribute to enclosing property
 71 |         switch self {
 72 |         case .devicePasscode:
 73 |             return SecAccessControlCreateFlags.devicePasscode
 74 |         case .biometryAny:
 75 |             return SecAccessControlCreateFlags.biometryAny
    |                                                |- error: 'biometryAny' is only available in macOS 10.13.4 or newer
    |                                                `- note: add 'if #available' version check
 76 |         case .biometryCurrentSet:
 77 |             return SecAccessControlCreateFlags.biometryCurrentSet
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:77:48: error: 'biometryCurrentSet' is only available in macOS 10.13.4 or newer
 26 |
 27 | /// Access control constants that dictate how a keychain item may be used.
 28 | public enum SecAccessControl: RawRepresentable {
    |             `- note: add @available attribute to enclosing enum
 29 |     public typealias RawValue = SecAccessControlCreateFlags
 30 |
    :
 68 |     }
 69 |
 70 |     public var rawValue: RawValue {
    |                `- note: add @available attribute to enclosing property
 71 |         switch self {
 72 |         case .devicePasscode:
    :
 75 |             return SecAccessControlCreateFlags.biometryAny
 76 |         case .biometryCurrentSet:
 77 |             return SecAccessControlCreateFlags.biometryCurrentSet
    |                                                |- error: 'biometryCurrentSet' is only available in macOS 10.13.4 or newer
    |                                                `- note: add 'if #available' version check
 78 |         case .userPresence:
 79 |             return SecAccessControlCreateFlags.userPresence
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:153:18: error: 'Logger' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
150 |
151 |     /// Initializes the `KeychainService`.
152 |     public override init() {
    |                     `- note: add @available attribute to enclosing initializer
153 |         logger = Logger(subsystem: serviceName, category: "keychain")
    |                  |- error: 'Logger' is only available in macOS 11.0 or newer
    |                  `- note: add 'if #available' version check
154 |     }
155 |
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:200:26: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    |                          |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                          `- note: add 'if #available' version check
201 |             throw KeychainError.invalidKey
202 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:219:30: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
217 |             guard let accessControlFlags = SecAccessControlCreateWithFlags(kCFAllocatorDefault, accessibility.rawValue, accessControl.rawValue, &error) else {
218 |                 let message = error!.takeRetainedValue().localizedDescription
219 |                 logger.error("Error occurred applying access control. \(message, privacy: .public)")
    |                              |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                              `- note: add 'if #available' version check
220 |
221 |                 throw KeychainError.unhandledError(message: message)
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:219:72: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
217 |             guard let accessControlFlags = SecAccessControlCreateWithFlags(kCFAllocatorDefault, accessibility.rawValue, accessControl.rawValue, &error) else {
218 |                 let message = error!.takeRetainedValue().localizedDescription
219 |                 logger.error("Error occurred applying access control. \(message, privacy: .public)")
    |                                                                        |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                        `- note: add 'if #available' version check
220 |
221 |                 throw KeychainError.unhandledError(message: message)
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:235:25: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
233 |         switch status {
234 |         case errSecSuccess:
235 |             logger.info("Item '\(forKey, privacy: .public)' added to keychain: \(status == errSecSuccess, privacy: .public)")
    |                         |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                         `- note: add 'if #available' version check
236 |         case errSecDuplicateItem:
237 |             status = SecItemUpdate(query as CFDictionary, values as CFDictionary)
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:235:33: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
233 |         switch status {
234 |         case errSecSuccess:
235 |             logger.info("Item '\(forKey, privacy: .public)' added to keychain: \(status == errSecSuccess, privacy: .public)")
    |                                 |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                 `- note: add 'if #available' version check
236 |         case errSecDuplicateItem:
237 |             status = SecItemUpdate(query as CFDictionary, values as CFDictionary)
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:235:81: error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
233 |         switch status {
234 |         case errSecSuccess:
235 |             logger.info("Item '\(forKey, privacy: .public)' added to keychain: \(status == errSecSuccess, privacy: .public)")
    |                                                                                 |- error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                 `- note: add 'if #available' version check
236 |         case errSecDuplicateItem:
237 |             status = SecItemUpdate(query as CFDictionary, values as CFDictionary)
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:238:25: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
236 |         case errSecDuplicateItem:
237 |             status = SecItemUpdate(query as CFDictionary, values as CFDictionary)
238 |             logger.info("Item '\(forKey, privacy: .public)' updated in keychain: \(status == errSecSuccess, privacy: .public)")
    |                         |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                         `- note: add 'if #available' version check
239 |         default:
240 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:238:33: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
236 |         case errSecDuplicateItem:
237 |             status = SecItemUpdate(query as CFDictionary, values as CFDictionary)
238 |             logger.info("Item '\(forKey, privacy: .public)' updated in keychain: \(status == errSecSuccess, privacy: .public)")
    |                                 |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                 `- note: add 'if #available' version check
239 |         default:
240 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:238:83: error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
236 |         case errSecDuplicateItem:
237 |             status = SecItemUpdate(query as CFDictionary, values as CFDictionary)
238 |             logger.info("Item '\(forKey, privacy: .public)' updated in keychain: \(status == errSecSuccess, privacy: .public)")
    |                                                                                   |- error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                   `- note: add 'if #available' version check
239 |         default:
240 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:241:26: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
239 |         default:
240 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
241 |             logger.error("Error occured performing the operation. \(message, privacy: .public)")
    |                          |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                          `- note: add 'if #available' version check
242 |             throw KeychainError.unhandledError(message: message)
243 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:241:68: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
196 |     /// try? KeychainService.default.addItem("account", value: person)
197 |     /// ```
198 |     public func addItem(_ forKey: String, value: Data, accessControl: SecAccessControl? = nil, accessibility: SecAccessible = .afterFirstUnlock) throws {
    |                 `- note: add @available attribute to enclosing instance method
199 |         guard !forKey.isEmpty else {
200 |             logger.error("The forKey argument is invalid.")
    :
239 |         default:
240 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
241 |             logger.error("Error occured performing the operation. \(message, privacy: .public)")
    |                                                                    |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                    `- note: add 'if #available' version check
242 |             throw KeychainError.unhandledError(message: message)
243 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:255:26: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
251 |     /// ```
252 |     /// - Remark: No error is thrown when the key is not found.
253 |     public func deleteItem(_ forKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
254 |         guard !forKey.isEmpty else {
255 |             logger.error("The forKey argument is invalid.")
    |                          |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                          `- note: add 'if #available' version check
256 |             throw KeychainError.invalidKey
257 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:265:21: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
251 |     /// ```
252 |     /// - Remark: No error is thrown when the key is not found.
253 |     public func deleteItem(_ forKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
254 |         guard !forKey.isEmpty else {
255 |             logger.error("The forKey argument is invalid.")
    :
263 |
264 |         let status = SecItemDelete(query as CFDictionary)
265 |         logger.info("Item '\(forKey, privacy: .public)' deleted from keychain: \(status == errSecSuccess, privacy: .public)")
    |                     |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                     `- note: add 'if #available' version check
266 |
267 |         guard status == errSecSuccess || status == errSecItemNotFound else {
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:265:29: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
251 |     /// ```
252 |     /// - Remark: No error is thrown when the key is not found.
253 |     public func deleteItem(_ forKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
254 |         guard !forKey.isEmpty else {
255 |             logger.error("The forKey argument is invalid.")
    :
263 |
264 |         let status = SecItemDelete(query as CFDictionary)
265 |         logger.info("Item '\(forKey, privacy: .public)' deleted from keychain: \(status == errSecSuccess, privacy: .public)")
    |                             |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                             `- note: add 'if #available' version check
266 |
267 |         guard status == errSecSuccess || status == errSecItemNotFound else {
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:265:81: error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
251 |     /// ```
252 |     /// - Remark: No error is thrown when the key is not found.
253 |     public func deleteItem(_ forKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
254 |         guard !forKey.isEmpty else {
255 |             logger.error("The forKey argument is invalid.")
    :
263 |
264 |         let status = SecItemDelete(query as CFDictionary)
265 |         logger.info("Item '\(forKey, privacy: .public)' deleted from keychain: \(status == errSecSuccess, privacy: .public)")
    |                                                                                 |- error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                 `- note: add 'if #available' version check
266 |
267 |         guard status == errSecSuccess || status == errSecItemNotFound else {
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:269:26: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
251 |     /// ```
252 |     /// - Remark: No error is thrown when the key is not found.
253 |     public func deleteItem(_ forKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
254 |         guard !forKey.isEmpty else {
255 |             logger.error("The forKey argument is invalid.")
    :
267 |         guard status == errSecSuccess || status == errSecItemNotFound else {
268 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
269 |             logger.error("Error occured performing the operation. \(message, privacy: .public)")
    |                          |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                          `- note: add 'if #available' version check
270 |             throw KeychainError.unhandledError(message: message)
271 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:269:68: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
251 |     /// ```
252 |     /// - Remark: No error is thrown when the key is not found.
253 |     public func deleteItem(_ forKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
254 |         guard !forKey.isEmpty else {
255 |             logger.error("The forKey argument is invalid.")
    :
267 |         guard status == errSecSuccess || status == errSecItemNotFound else {
268 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
269 |             logger.error("Error occured performing the operation. \(message, privacy: .public)")
    |                                                                    |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                    `- note: add 'if #available' version check
270 |             throw KeychainError.unhandledError(message: message)
271 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:315:26: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    |                          |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                          `- note: add 'if #available' version check
316 |             throw KeychainError.invalidKey
317 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:335:32: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
333 |             switch status {
334 |             case errSecUserCanceled:
335 |                 logger.warning("The user cancelled the operation. Status: \(status, privacy: .public)")
    |                                |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                                `- note: add 'if #available' version check
336 |                 throw KeychainError.unhandledError(message: message)
337 |             case errSecItemNotFound, errSecInvalidItemRef:
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:335:76: error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
333 |             switch status {
334 |             case errSecUserCanceled:
335 |                 logger.warning("The user cancelled the operation. Status: \(status, privacy: .public)")
    |                                                                            |- error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                            `- note: add 'if #available' version check
336 |                 throw KeychainError.unhandledError(message: message)
337 |             case errSecItemNotFound, errSecInvalidItemRef:
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:338:32: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
336 |                 throw KeychainError.unhandledError(message: message)
337 |             case errSecItemNotFound, errSecInvalidItemRef:
338 |                 logger.warning("The specified item not found in Keychain. Status: \(status, privacy: .public)")
    |                                |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                                `- note: add 'if #available' version check
339 |                 throw KeychainError.invalidKey
340 |             default:
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:338:84: error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
336 |                 throw KeychainError.unhandledError(message: message)
337 |             case errSecItemNotFound, errSecInvalidItemRef:
338 |                 logger.warning("The specified item not found in Keychain. Status: \(status, privacy: .public)")
    |                                                                                    |- error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                    `- note: add 'if #available' version check
339 |                 throw KeychainError.invalidKey
340 |             default:
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:341:32: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
339 |                 throw KeychainError.invalidKey
340 |             default:
341 |                 logger.warning("An error occured accessing the Keychain. Status: \(status, privacy: .public)")
    |                                |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                                `- note: add 'if #available' version check
342 |                 throw KeychainError.unhandledError(message: message)
343 |             }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:341:83: error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
339 |                 throw KeychainError.invalidKey
340 |             default:
341 |                 logger.warning("An error occured accessing the Keychain. Status: \(status, privacy: .public)")
    |                                                                                   |- error: 'appendInterpolation(_:format:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                   `- note: add 'if #available' version check
342 |                 throw KeychainError.unhandledError(message: message)
343 |             }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:348:28: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
346 |         // Attempt to decode the value back to it's type.
347 |         guard let result = item as? Data else {
348 |             logger.warning("Invalid data associated with key '\(forKey, privacy: .public)'")
    |                            |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                            `- note: add 'if #available' version check
349 |             throw KeychainError.unexpectedData
350 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:348:64: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
311 |     /// print(String(data: result, encoding: .utf8))
312 |     /// ```
313 |     public func readItem(_ forKey: String) throws -> Data {
    |                 `- note: add @available attribute to enclosing instance method
314 |         guard !forKey.isEmpty else {
315 |             logger.error("The forKey argument is invalid.")
    :
346 |         // Attempt to decode the value back to it's type.
347 |         guard let result = item as? Data else {
348 |             logger.warning("Invalid data associated with key '\(forKey, privacy: .public)'")
    |                                                                |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                `- note: add 'if #available' version check
349 |             throw KeychainError.unexpectedData
350 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:382:21: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
366 |     /// print(result)
367 |     /// ```
368 |     public func itemExists(_ forKey: String) -> Bool {
    |                 `- note: add @available attribute to enclosing instance method
369 |         // Construct a LAContext to surpress any biometry to access the key.
370 |         let context = LAContext()
    :
380 |         let status = SecItemCopyMatching(query as CFDictionary, nil)
381 |
382 |         logger.info("Item '\(forKey, privacy: .public)' exists in keychain: \(status == errSecSuccess || status == errSecInteractionNotAllowed || status == errSecAuthFailed, privacy: .public)")
    |                     |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                     `- note: add 'if #available' version check
383 |
384 |         return status == errSecSuccess || status == errSecInteractionNotAllowed || status == errSecAuthFailed
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:382:29: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
366 |     /// print(result)
367 |     /// ```
368 |     public func itemExists(_ forKey: String) -> Bool {
    |                 `- note: add @available attribute to enclosing instance method
369 |         // Construct a LAContext to surpress any biometry to access the key.
370 |         let context = LAContext()
    :
380 |         let status = SecItemCopyMatching(query as CFDictionary, nil)
381 |
382 |         logger.info("Item '\(forKey, privacy: .public)' exists in keychain: \(status == errSecSuccess || status == errSecInteractionNotAllowed || status == errSecAuthFailed, privacy: .public)")
    |                             |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                             `- note: add 'if #available' version check
383 |
384 |         return status == errSecSuccess || status == errSecInteractionNotAllowed || status == errSecAuthFailed
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:382:78: error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
366 |     /// print(result)
367 |     /// ```
368 |     public func itemExists(_ forKey: String) -> Bool {
    |                 `- note: add @available attribute to enclosing instance method
369 |         // Construct a LAContext to surpress any biometry to access the key.
370 |         let context = LAContext()
    :
380 |         let status = SecItemCopyMatching(query as CFDictionary, nil)
381 |
382 |         logger.info("Item '\(forKey, privacy: .public)' exists in keychain: \(status == errSecSuccess || status == errSecInteractionNotAllowed || status == errSecAuthFailed, privacy: .public)")
    |                                                                              |- error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
    |                                                                              `- note: add 'if #available' version check
383 |
384 |         return status == errSecSuccess || status == errSecInteractionNotAllowed || status == errSecAuthFailed
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:447:21: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
428 |     /// }
429 |     /// ```
430 |     public func renameItem(_ forKey: String, newKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
431 |         // Construct a LAContext to surpress any biometry to access the key.
432 |         let context = LAContext()
    :
445 |
446 |         let status = SecItemUpdate(findQuery as CFDictionary, updateQuery as CFDictionary)
447 |         logger.info("Rename key from '\(forKey, privacy: .public)' to '\(newKey, privacy: .public)': \(status == errSecSuccess, privacy: .public)")
    |                     |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                     `- note: add 'if #available' version check
448 |
449 |
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:447:40: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
428 |     /// }
429 |     /// ```
430 |     public func renameItem(_ forKey: String, newKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
431 |         // Construct a LAContext to surpress any biometry to access the key.
432 |         let context = LAContext()
    :
445 |
446 |         let status = SecItemUpdate(findQuery as CFDictionary, updateQuery as CFDictionary)
447 |         logger.info("Rename key from '\(forKey, privacy: .public)' to '\(newKey, privacy: .public)': \(status == errSecSuccess, privacy: .public)")
    |                                        |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                        `- note: add 'if #available' version check
448 |
449 |
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:447:73: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
428 |     /// }
429 |     /// ```
430 |     public func renameItem(_ forKey: String, newKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
431 |         // Construct a LAContext to surpress any biometry to access the key.
432 |         let context = LAContext()
    :
445 |
446 |         let status = SecItemUpdate(findQuery as CFDictionary, updateQuery as CFDictionary)
447 |         logger.info("Rename key from '\(forKey, privacy: .public)' to '\(newKey, privacy: .public)': \(status == errSecSuccess, privacy: .public)")
    |                                                                         |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                         `- note: add 'if #available' version check
448 |
449 |
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:447:103: error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
428 |     /// }
429 |     /// ```
430 |     public func renameItem(_ forKey: String, newKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
431 |         // Construct a LAContext to surpress any biometry to access the key.
432 |         let context = LAContext()
    :
445 |
446 |         let status = SecItemUpdate(findQuery as CFDictionary, updateQuery as CFDictionary)
447 |         logger.info("Rename key from '\(forKey, privacy: .public)' to '\(newKey, privacy: .public)': \(status == errSecSuccess, privacy: .public)")
    |                                                                                                       |- error: 'appendInterpolation(_:format:privacy:)' is only available in macOS 11.0 or newer
    |                                                                                                       `- note: add 'if #available' version check
448 |
449 |
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:452:26: error: 'OSLogMessage' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
428 |     /// }
429 |     /// ```
430 |     public func renameItem(_ forKey: String, newKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
431 |         // Construct a LAContext to surpress any biometry to access the key.
432 |         let context = LAContext()
    :
450 |         guard status == errSecSuccess else {
451 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
452 |             logger.error("Error occured performing the operation. \(message, privacy: .public)")
    |                          |- error: 'OSLogMessage' is only available in macOS 11.0 or newer
    |                          `- note: add 'if #available' version check
453 |             throw KeychainError.unhandledError(message: message)
454 |         }
/Users/admin/builder/spi-builder-workspace/Sources/core/KeychainService.swift:452:68: error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
135 | /// The keychain is the best place to store small secrets, like passwords and cryptographic keys. Use the functions of the keychain services API to add, retrieve, delete, or modify keychain items.
136 | /// - Note: The keychain service is specific to the IBM Security Verify in that, the keychain is not synchronized with Apple iCloud and access to the items in the keychain occurs after the first device unlock operation.
137 | public final class KeychainService: NSObject {
    |                    `- note: add @available attribute to enclosing class
138 |     // MARK: Variables
139 |     private let logger: Logger
    :
428 |     /// }
429 |     /// ```
430 |     public func renameItem(_ forKey: String, newKey: String) throws {
    |                 `- note: add @available attribute to enclosing instance method
431 |         // Construct a LAContext to surpress any biometry to access the key.
432 |         let context = LAContext()
    :
450 |         guard status == errSecSuccess else {
451 |             let message = SecCopyErrorMessageString(status, nil) as String? ?? "Unknown error"
452 |             logger.error("Error occured performing the operation. \(message, privacy: .public)")
    |                                                                    |- error: 'appendInterpolation(_:align:privacy:)' is only available in macOS 11.0 or newer
    |                                                                    `- note: add 'if #available' version check
453 |             throw KeychainError.unhandledError(message: message)
454 |         }
[30/55] Compiling Core KeyedDecodingContainer+Extension.swift
[31/55] Compiling Core NSNumber+Extension.swift
error: emit-module command failed with exit code 1 (use -v to see invocation)
[32/55] Emitting module Adaptive
/Users/admin/builder/spi-builder-workspace/Sources/adaptive/AdaptiveContext.swift:5:8: error: no such module 'UIKit'
  3 | //
  4 |
  5 | import UIKit
    |        `- error: no such module 'UIKit'
  6 | import os.log
  7 |
[33/55] Compiling Adaptive AdaptiveContext.swift
/Users/admin/builder/spi-builder-workspace/Sources/adaptive/AdaptiveContext.swift:5:8: error: no such module 'UIKit'
  3 | //
  4 |
  5 | import UIKit
    |        `- error: no such module 'UIKit'
  6 | import os.log
  7 |
[34/55] Compiling Adaptive AssessmentsFactors.swift
/Users/admin/builder/spi-builder-workspace/Sources/adaptive/AdaptiveContext.swift:5:8: error: no such module 'UIKit'
  3 | //
  4 |
  5 | import UIKit
    |        `- error: no such module 'UIKit'
  6 | import os.log
  7 |
[35/55] Compiling Adaptive AdaptiveResult.swift
/Users/admin/builder/spi-builder-workspace/Sources/adaptive/AdaptiveContext.swift:5:8: error: no such module 'UIKit'
  3 | //
  4 |
  5 | import UIKit
    |        `- error: no such module 'UIKit'
  6 | import os.log
  7 |
[36/55] Compiling Adaptive Enums.swift
/Users/admin/builder/spi-builder-workspace/Sources/adaptive/AdaptiveContext.swift:5:8: error: no such module 'UIKit'
  3 | //
  4 |
  5 | import UIKit
    |        `- error: no such module 'UIKit'
  6 | import os.log
  7 |
[37/55] Compiling FIDO2 PublicKeyCredential.swift
/Users/admin/builder/spi-builder-workspace/Sources/fido2/PublicKeyCredentialProvider.swift:9:8: error: no such module 'UIKit'
  7 | import LocalAuthentication
  8 | import os.log
  9 | import UIKit
    |        `- error: no such module 'UIKit'
 10 |
 11 | /// A type that indicates when Fido2ApiClient encounters an error.
/Users/admin/builder/spi-builder-workspace/Sources/fido2/PublicKeyCredentialProvider.swift:9:8: error: no such module 'UIKit'
  7 | import LocalAuthentication
  8 | import os.log
  9 | import UIKit
    |        `- error: no such module 'UIKit'
 10 |
 11 | /// A type that indicates when Fido2ApiClient encounters an error.
BUILD FAILURE 6.0 macosSpm