diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4483f1e..6faf754 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -12,10 +12,10 @@ jobs: uses: apple/swift-nio/.github/workflows/unit_tests.yml@main with: linux_5_9_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" - linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" - linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" - linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error" - linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error" + linux_5_10_arguments_override: "--explicit-target-dependency-import-check error" + linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error -Xswiftc -require-explicit-sendable" + linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -require-explicit-sendable" + linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -require-explicit-sendable" benchmarks: name: Benchmarks diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 502a14b..71297ea 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -23,10 +23,10 @@ jobs: uses: apple/swift-nio/.github/workflows/unit_tests.yml@main with: linux_5_9_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" - linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" - linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" - linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error" - linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error" + linux_5_10_arguments_override: "--explicit-target-dependency-import-check error" + linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error -Xswiftc -require-explicit-sendable" + linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -require-explicit-sendable" + linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -require-explicit-sendable" benchmarks: name: Benchmarks diff --git a/Package.swift b/Package.swift index 9f859a6..e042c0c 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 5.8 +// swift-tools-version: 5.9 //===----------------------------------------------------------------------===// // // This source file is part of the SwiftCertificates open source project @@ -91,6 +91,12 @@ if ProcessInfo.processInfo.environment["SWIFTCI_USE_LOCAL_DEPS"] == nil { ] } +for target in package.targets { + var settings = target.swiftSettings ?? [] + settings.append(.enableExperimentalFeature("StrictConcurrency=complete")) + target.swiftSettings = settings +} + // --- STANDARD CROSS-REPO SETTINGS DO NOT EDIT --- // for target in package.targets { if target.type != .plugin { diff --git a/README.md b/README.md index 9933073..2e11158 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,7 @@ a default verifier and a number of built-in verifier policies. ## Supported Swift Versions -This library was introduced with support for Swift 5.7 or later. This library will -support the latest stable Swift version and the two versions prior. +This library will support the latest stable Swift version and the two versions prior. ## Getting Started diff --git a/Sources/X509/SecKeyWrapper.swift b/Sources/X509/SecKeyWrapper.swift index 979cbf1..4e99eb2 100644 --- a/Sources/X509/SecKeyWrapper.swift +++ b/Sources/X509/SecKeyWrapper.swift @@ -66,7 +66,7 @@ extension Certificate.PrivateKey { @usableFromInline static func keyAttributes(key: SecKey) throws -> [String: any Sendable] { - guard let attributes = SecKeyCopyAttributes(key) as? [CFString: Any] else { + guard let attributes = SecKeyCopyAttributes(key) as? [CFString: any Sendable] else { throw CertificateError.unsupportedPrivateKey( reason: "cannot copy SecKey attributes" ) diff --git a/Tests/X509Tests/SecKeyWrapperTests.swift b/Tests/X509Tests/SecKeyWrapperTests.swift index dce5664..8fee824 100644 --- a/Tests/X509Tests/SecKeyWrapperTests.swift +++ b/Tests/X509Tests/SecKeyWrapperTests.swift @@ -14,6 +14,9 @@ import XCTest @_spi(Testing) @testable import X509 +#if canImport(Darwin) +@preconcurrency import Security +#endif #if canImport(Darwin) final class SecKeyWrapperTests: XCTestCase { @@ -62,9 +65,9 @@ final class SecKeyWrapperTests: XCTestCase { } @available(macOS 11.0, iOS 14, tvOS 14, watchOS 7, *) - func testPEMExport() throws { + func testPEMExport() async throws { for candidate in try generateCandidateKeys() { - try XCTContext.runActivity(named: "Testing \(candidate.type) key (size: \(candidate.keySize))") { _ in + try await XCTContext.runActivity(named: "Testing \(candidate.type) key (size: \(candidate.keySize))") { _ in let secKeyWrapper = try Certificate.PrivateKey.SecKeyWrapper(key: candidate.key) if !candidate.sep { diff --git a/Tests/X509Tests/SignatureTests.swift b/Tests/X509Tests/SignatureTests.swift index ff7a8c4..efc9d0f 100644 --- a/Tests/X509Tests/SignatureTests.swift +++ b/Tests/X509Tests/SignatureTests.swift @@ -17,6 +17,9 @@ import XCTest import _CryptoExtras import SwiftASN1 @testable import X509 +#if canImport(Darwin) +@preconcurrency import Security +#endif final class SignatureTests: XCTestCase { static let now = Date()