mirror of
https://github.com/maxgoedjen/secretive.git
synced 2026-05-07 16:08:58 +02:00
* Sketching out. * WIP * WIP * Dump * Apply stash * Merge + WIP * UI * More WIP * Agent config * UI cleanup * Restore dirty files * XPC * Edit/delete * UI fixes * Cleanup * Change id for OpenSSHCertificate to hex of md5 * Fix runtime warning for confirmation dialog * Mark strings as reviewed * Cleanup * Fix agent tests
32 lines
1010 B
Swift
32 lines
1010 B
Swift
import Foundation
|
|
import OSLog
|
|
import SSHProtocolKit
|
|
import Brief
|
|
import XPCWrappers
|
|
import OSLog
|
|
import SSHProtocolKit
|
|
|
|
/// Delegates all agent input parsing to an XPC service which wraps OpenSSH
|
|
public final class XPCAgentInputParser: SSHAgentInputParserProtocol {
|
|
|
|
private let logger = Logger(subsystem: "com.maxgoedjen.secretive.secretagent", category: "XPCAgentInputParser")
|
|
private let session: XPCTypedSession<SSHAgent.Request, SSHAgentInputParser.AgentParsingError>
|
|
|
|
public init() async throws {
|
|
logger.debug("Creating XPCAgentInputParser")
|
|
session = try await XPCTypedSession(serviceName: "com.maxgoedjen.Secretive.SecretAgentInputParser", warmup: true)
|
|
logger.debug("XPCAgentInputParser is warmed up.")
|
|
}
|
|
|
|
public func parse(data: Data) async throws -> SSHAgent.Request {
|
|
logger.debug("Parsing input")
|
|
defer { logger.debug("Parsed input") }
|
|
return try await session.send(data)
|
|
}
|
|
|
|
deinit {
|
|
session.complete()
|
|
}
|
|
|
|
}
|