Revert "Backport mutex"

This reverts commit 9b02afb20c.
This commit is contained in:
Max Goedjen 2025-01-05 16:27:41 -08:00
parent 9b02afb20c
commit bab76da2ab
No known key found for this signature in database
9 changed files with 15 additions and 60 deletions

View File

@ -27,26 +27,18 @@ let package = Package(
.library( .library(
name: "Brief", name: "Brief",
targets: ["Brief"]), targets: ["Brief"]),
.library(
name: "Backports",
targets: ["Backports"]),
], ],
dependencies: [ dependencies: [
], ],
targets: [ targets: [
.target(
name: "Backports",
dependencies: [],
swiftSettings: swiftSettings
),
.target( .target(
name: "SecretKit", name: "SecretKit",
dependencies: ["Backports"], dependencies: [],
swiftSettings: swiftSettings swiftSettings: swiftSettings
), ),
.testTarget( .testTarget(
name: "SecretKitTests", name: "SecretKitTests",
dependencies: ["Backports", "SecretKit", "SecureEnclaveSecretKit", "SmartCardSecretKit"], dependencies: ["SecretKit", "SecureEnclaveSecretKit", "SmartCardSecretKit"],
swiftSettings: swiftSettings swiftSettings: swiftSettings
), ),
.target( .target(
@ -56,12 +48,12 @@ let package = Package(
), ),
.target( .target(
name: "SmartCardSecretKit", name: "SmartCardSecretKit",
dependencies: ["Backports", "SecretKit"], dependencies: ["SecretKit"],
swiftSettings: swiftSettings swiftSettings: swiftSettings
), ),
.target( .target(
name: "SecretAgentKit", name: "SecretAgentKit",
dependencies: ["Backports", "SecretKit", "SecretAgentKitHeaders"], dependencies: ["SecretKit", "SecretAgentKitHeaders"],
swiftSettings: swiftSettings swiftSettings: swiftSettings
), ),
.systemLibrary( .systemLibrary(
@ -73,7 +65,7 @@ let package = Package(
, ,
.target( .target(
name: "Brief", name: "Brief",
dependencies: ["Backports"] dependencies: []
), ),
.testTarget( .testTarget(
name: "BriefTests", name: "BriefTests",

View File

@ -1,30 +0,0 @@
import Foundation
#if canImport(Synchronization)
import Synchronization
public typealias _Mutex = Mutex
#else
import os
public final class _Mutex<Value: ~Copyable>: @unchecked Sendable {
private var value: Value
private var lock = OSAllocatedUnfairLock()
public init(_ value: consuming sending Value) {
self.value = value
}
public borrowing func withLock<Result, E>(_ body: (inout sending Value) throws(E) -> sending Result) throws(E) -> sending Result where E : Error, Result : ~Copyable {
lock.lock()
defer {
lock.unlock()
}
return try body(&value)
}
}
#endif

View File

@ -1,7 +1,6 @@
import Foundation import Foundation
import Observation import Observation
import Synchronization import Synchronization
import Backports
/// A concrete implementation of ``UpdaterProtocol`` which considers the current release and OS version. /// A concrete implementation of ``UpdaterProtocol`` which considers the current release and OS version.
@Observable public final class Updater: UpdaterProtocol, ObservableObject, Sendable { @Observable public final class Updater: UpdaterProtocol, ObservableObject, Sendable {
@ -9,7 +8,7 @@ import Backports
public var update: Release? { public var update: Release? {
_update.withLock { $0 } _update.withLock { $0 }
} }
private let _update: _Mutex<Release?> = .init(nil) private let _update: Mutex<Release?> = .init(nil)
public let testBuild: Bool public let testBuild: Bool
/// The current OS version. /// The current OS version.

View File

@ -1,7 +1,6 @@
import Foundation import Foundation
import OSLog import OSLog
import Synchronization import Synchronization
import Backports
/// Manages storage and lookup for OpenSSH certificates. /// Manages storage and lookup for OpenSSH certificates.
public final class OpenSSHCertificateHandler: Sendable { public final class OpenSSHCertificateHandler: Sendable {
@ -9,7 +8,7 @@ public final class OpenSSHCertificateHandler: Sendable {
private let publicKeyFileStoreController = PublicKeyFileStoreController(homeDirectory: NSHomeDirectory()) private let publicKeyFileStoreController = PublicKeyFileStoreController(homeDirectory: NSHomeDirectory())
private let logger = Logger(subsystem: "com.maxgoedjen.secretive.secretagent", category: "OpenSSHCertificateHandler") private let logger = Logger(subsystem: "com.maxgoedjen.secretive.secretagent", category: "OpenSSHCertificateHandler")
private let writer = OpenSSHKeyWriter() private let writer = OpenSSHKeyWriter()
private let keyBlobsAndNames: _Mutex<[AnySecret: (Data, Data)]> = .init([:]) private let keyBlobsAndNames: Mutex<[AnySecret: (Data, Data)]> = .init([:])
/// Initializes an OpenSSHCertificateHandler. /// Initializes an OpenSSHCertificateHandler.
public init() { public init() {

View File

@ -1,7 +1,6 @@
import Foundation import Foundation
import Observation import Observation
import Synchronization import Synchronization
import Backports
/// A "Store Store," which holds a list of type-erased stores. /// A "Store Store," which holds a list of type-erased stores.
@Observable public final class SecretStoreList: Sendable { @Observable public final class SecretStoreList: Sendable {
@ -10,13 +9,13 @@ import Backports
public var stores: [AnySecretStore] { public var stores: [AnySecretStore] {
__stores.withLock { $0 } __stores.withLock { $0 }
} }
private let __stores: _Mutex<[AnySecretStore]> = .init([]) private let __stores: Mutex<[AnySecretStore]> = .init([])
/// A modifiable store, if one is available. /// A modifiable store, if one is available.
public var modifiableStore: AnySecretStoreModifiable? { public var modifiableStore: AnySecretStoreModifiable? {
__modifiableStore.withLock { $0 } __modifiableStore.withLock { $0 }
} }
private let __modifiableStore: _Mutex<AnySecretStoreModifiable?> = .init(nil) private let __modifiableStore: Mutex<AnySecretStoreModifiable?> = .init(nil)
/// Initializes a SecretStoreList. /// Initializes a SecretStoreList.
public init() { public init() {

View File

@ -5,7 +5,6 @@ import CryptoKit
import LocalAuthentication import LocalAuthentication
import SecretKit import SecretKit
import Synchronization import Synchronization
import Backports
extension SecureEnclave { extension SecureEnclave {
@ -20,9 +19,9 @@ extension SecureEnclave {
public var secrets: [Secret] { public var secrets: [Secret] {
_secrets.withLock { $0 } _secrets.withLock { $0 }
} }
private let _secrets: _Mutex<[Secret]> = .init([]) private let _secrets: Mutex<[Secret]> = .init([])
private let persistedAuthenticationContexts: _Mutex<[Secret: PersistentAuthenticationContext]> = .init([:]) private let persistedAuthenticationContexts: Mutex<[Secret: PersistentAuthenticationContext]> = .init([:])
/// Initializes a Store. /// Initializes a Store.
public init() { public init() {
@ -106,7 +105,7 @@ extension SecureEnclave {
} }
public func sign(data: Data, with secret: Secret, for provenance: SigningRequestProvenance) throws -> Data { public func sign(data: Data, with secret: Secret, for provenance: SigningRequestProvenance) throws -> Data {
let context: _Mutex<LAContext> let context: Mutex<LAContext>
// if let existing = persistedAuthenticationContexts.withLock({ $0 })[secret], existing.valid { // if let existing = persistedAuthenticationContexts.withLock({ $0 })[secret], existing.valid {
// context = existing.context // context = existing.context
// } else { // } else {

View File

@ -5,7 +5,6 @@ import Security
import CryptoTokenKit import CryptoTokenKit
import LocalAuthentication import LocalAuthentication
import SecretKit import SecretKit
import Backports
extension SmartCard { extension SmartCard {
@ -20,7 +19,7 @@ extension SmartCard {
/// An implementation of Store backed by a Smart Card. /// An implementation of Store backed by a Smart Card.
@Observable public final class Store: SecretStore { @Observable public final class Store: SecretStore {
private let state: _Mutex<State> = .init(.init()) private let state: Mutex<State> = .init(.init())
public var isAvailable: Bool { public var isAvailable: Bool {
state.withLock { $0.isAvailable } state.withLock { $0.isAvailable }
} }

View File

@ -5,7 +5,6 @@ import SecretKit
import SecretAgentKit import SecretAgentKit
import Brief import Brief
import Synchronization import Synchronization
import Backports
final class Notifier: Sendable { final class Notifier: Sendable {
@ -152,7 +151,7 @@ final class NotificationDelegate: NSObject, UNUserNotificationCenterDelegate, Se
fileprivate var pendingPersistableSecrets: [String: AnySecret] = [:] fileprivate var pendingPersistableSecrets: [String: AnySecret] = [:]
} }
fileprivate let state: _Mutex<State> = .init(.init()) fileprivate let state: Mutex<State> = .init(.init())
func userNotificationCenter(_ center: UNUserNotificationCenter, openSettingsFor notification: UNNotification?) { func userNotificationCenter(_ center: UNUserNotificationCenter, openSettingsFor notification: UNNotification?) {

View File

@ -2,14 +2,13 @@ import Foundation
import Synchronization import Synchronization
import Observation import Observation
import Brief import Brief
import Backports
@Observable class PreviewUpdater: UpdaterProtocol { @Observable class PreviewUpdater: UpdaterProtocol {
var update: Release? { var update: Release? {
_update.withLock { $0 } _update.withLock { $0 }
} }
let _update: _Mutex<Release?> = .init(nil) let _update: Mutex<Release?> = .init(nil)
let testBuild = false let testBuild = false