mirror of
				https://github.com/maxgoedjen/secretive.git
				synced 2025-10-31 15:30:57 +00:00 
			
		
		
		
	
							parent
							
								
									9b02afb20c
								
							
						
					
					
						commit
						bab76da2ab
					
				| @ -27,26 +27,18 @@ let package = Package( | ||||
|         .library( | ||||
|             name: "Brief", | ||||
|             targets: ["Brief"]), | ||||
|         .library( | ||||
|             name: "Backports", | ||||
|             targets: ["Backports"]), | ||||
|     ], | ||||
|     dependencies: [ | ||||
|     ], | ||||
|     targets: [ | ||||
|         .target( | ||||
|             name: "Backports", | ||||
|             dependencies: [], | ||||
|             swiftSettings: swiftSettings | ||||
|         ), | ||||
|         .target( | ||||
|             name: "SecretKit", | ||||
|             dependencies: ["Backports"], | ||||
|             dependencies: [], | ||||
|             swiftSettings: swiftSettings | ||||
|         ), | ||||
|         .testTarget( | ||||
|             name: "SecretKitTests", | ||||
|             dependencies: ["Backports", "SecretKit", "SecureEnclaveSecretKit", "SmartCardSecretKit"], | ||||
|             dependencies: ["SecretKit", "SecureEnclaveSecretKit", "SmartCardSecretKit"], | ||||
|             swiftSettings: swiftSettings | ||||
|         ), | ||||
|         .target( | ||||
| @ -56,12 +48,12 @@ let package = Package( | ||||
|         ), | ||||
|         .target( | ||||
|             name: "SmartCardSecretKit", | ||||
|             dependencies: ["Backports", "SecretKit"], | ||||
|             dependencies: ["SecretKit"], | ||||
|             swiftSettings: swiftSettings | ||||
|         ), | ||||
|         .target( | ||||
|             name: "SecretAgentKit", | ||||
|             dependencies: ["Backports", "SecretKit", "SecretAgentKitHeaders"], | ||||
|             dependencies: ["SecretKit", "SecretAgentKitHeaders"], | ||||
|             swiftSettings: swiftSettings | ||||
|         ), | ||||
|         .systemLibrary( | ||||
| @ -73,7 +65,7 @@ let package = Package( | ||||
|         , | ||||
|         .target( | ||||
|             name: "Brief", | ||||
|             dependencies: ["Backports"] | ||||
|             dependencies: [] | ||||
|         ), | ||||
|         .testTarget( | ||||
|             name: "BriefTests", | ||||
|  | ||||
| @ -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 | ||||
| @ -1,7 +1,6 @@ | ||||
| import Foundation | ||||
| import Observation | ||||
| import Synchronization | ||||
| import Backports | ||||
| 
 | ||||
| /// A concrete implementation of ``UpdaterProtocol`` which considers the current release and OS version. | ||||
| @Observable public final class Updater: UpdaterProtocol, ObservableObject, Sendable { | ||||
| @ -9,7 +8,7 @@ import Backports | ||||
|     public var update: Release? { | ||||
|         _update.withLock { $0 } | ||||
|     } | ||||
|     private let _update: _Mutex<Release?> = .init(nil) | ||||
|     private let _update: Mutex<Release?> = .init(nil) | ||||
|     public let testBuild: Bool | ||||
| 
 | ||||
|     /// The current OS version. | ||||
|  | ||||
| @ -1,7 +1,6 @@ | ||||
| import Foundation | ||||
| import OSLog | ||||
| import Synchronization | ||||
| import Backports | ||||
| 
 | ||||
| /// Manages storage and lookup for OpenSSH certificates. | ||||
| public final class OpenSSHCertificateHandler: Sendable { | ||||
| @ -9,7 +8,7 @@ public final class OpenSSHCertificateHandler: Sendable { | ||||
|     private let publicKeyFileStoreController = PublicKeyFileStoreController(homeDirectory: NSHomeDirectory()) | ||||
|     private let logger = Logger(subsystem: "com.maxgoedjen.secretive.secretagent", category: "OpenSSHCertificateHandler") | ||||
|     private let writer = OpenSSHKeyWriter() | ||||
|     private let keyBlobsAndNames: _Mutex<[AnySecret: (Data, Data)]> = .init([:]) | ||||
|     private let keyBlobsAndNames: Mutex<[AnySecret: (Data, Data)]> = .init([:]) | ||||
| 
 | ||||
|     /// Initializes an OpenSSHCertificateHandler. | ||||
|     public init() { | ||||
|  | ||||
| @ -1,7 +1,6 @@ | ||||
| import Foundation | ||||
| import Observation | ||||
| import Synchronization | ||||
| import Backports | ||||
| 
 | ||||
| /// A "Store Store," which holds a list of type-erased stores. | ||||
| @Observable public final class SecretStoreList: Sendable { | ||||
| @ -10,13 +9,13 @@ import Backports | ||||
|     public var stores: [AnySecretStore] { | ||||
|         __stores.withLock { $0 } | ||||
|     } | ||||
|     private let __stores: _Mutex<[AnySecretStore]> = .init([]) | ||||
|     private let __stores: Mutex<[AnySecretStore]> = .init([]) | ||||
|      | ||||
|     /// A modifiable store, if one is available. | ||||
|     public var modifiableStore: AnySecretStoreModifiable? { | ||||
|         __modifiableStore.withLock { $0 } | ||||
|     } | ||||
|     private let __modifiableStore: _Mutex<AnySecretStoreModifiable?> = .init(nil) | ||||
|     private let __modifiableStore: Mutex<AnySecretStoreModifiable?> = .init(nil) | ||||
| 
 | ||||
|     /// Initializes a SecretStoreList. | ||||
|     public init() { | ||||
|  | ||||
| @ -5,7 +5,6 @@ import CryptoKit | ||||
| import LocalAuthentication | ||||
| import SecretKit | ||||
| import Synchronization | ||||
| import Backports | ||||
| 
 | ||||
| extension SecureEnclave { | ||||
| 
 | ||||
| @ -20,9 +19,9 @@ extension SecureEnclave { | ||||
|         public var secrets: [Secret] { | ||||
|             _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. | ||||
|         public init() { | ||||
| @ -106,7 +105,7 @@ extension SecureEnclave { | ||||
|         } | ||||
|          | ||||
|         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 { | ||||
| //                context = existing.context | ||||
| //            } else { | ||||
|  | ||||
| @ -5,7 +5,6 @@ import Security | ||||
| import CryptoTokenKit | ||||
| import LocalAuthentication | ||||
| import SecretKit | ||||
| import Backports | ||||
| 
 | ||||
| extension SmartCard { | ||||
|      | ||||
| @ -20,7 +19,7 @@ extension SmartCard { | ||||
|     /// An implementation of Store backed by a Smart Card. | ||||
|     @Observable public final class Store: SecretStore { | ||||
| 
 | ||||
|         private let state: _Mutex<State> = .init(.init()) | ||||
|         private let state: Mutex<State> = .init(.init()) | ||||
|         public var isAvailable: Bool { | ||||
|             state.withLock { $0.isAvailable } | ||||
|         } | ||||
|  | ||||
| @ -5,7 +5,6 @@ import SecretKit | ||||
| import SecretAgentKit | ||||
| import Brief | ||||
| import Synchronization | ||||
| import Backports | ||||
| 
 | ||||
| final class Notifier: Sendable { | ||||
| 
 | ||||
| @ -152,7 +151,7 @@ final class NotificationDelegate: NSObject, UNUserNotificationCenterDelegate, Se | ||||
|         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?) { | ||||
| 
 | ||||
|  | ||||
| @ -2,14 +2,13 @@ import Foundation | ||||
| import Synchronization | ||||
| import Observation | ||||
| import Brief | ||||
| import Backports | ||||
| 
 | ||||
| @Observable class PreviewUpdater: UpdaterProtocol { | ||||
| 
 | ||||
|     var update: Release? { | ||||
|         _update.withLock { $0 } | ||||
|     } | ||||
|     let _update: _Mutex<Release?> = .init(nil) | ||||
|     let _update: Mutex<Release?> = .init(nil) | ||||
| 
 | ||||
|     let testBuild = false | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user