From ce4af2deca8a193282041cfc4e2b22aa77f2b276 Mon Sep 17 00:00:00 2001 From: Max Goedjen Date: Sun, 7 Sep 2025 23:43:11 -0700 Subject: [PATCH] WIP --- Sources/Packages/Package.swift | 10 ++------ .../SecretAgentKit/SigningRequestTracer.swift | 10 +++++++- .../Sources/SecretAgentKitHeaders/Stub.swift | 1 - .../include/SecretAgentKit.h | 19 -------------- .../SecretAgentKitHeaders/module.modulemap | 4 --- .../Sources/XPCWrappers/XPCWrappers.swift | 25 ++++++++++++++++--- 6 files changed, 32 insertions(+), 37 deletions(-) delete mode 100644 Sources/Packages/Sources/SecretAgentKitHeaders/Stub.swift delete mode 100644 Sources/Packages/Sources/SecretAgentKitHeaders/include/SecretAgentKit.h delete mode 100644 Sources/Packages/Sources/SecretAgentKitHeaders/module.modulemap diff --git a/Sources/Packages/Package.swift b/Sources/Packages/Package.swift index dec30d6..ba4af8b 100644 --- a/Sources/Packages/Package.swift +++ b/Sources/Packages/Package.swift @@ -22,9 +22,6 @@ let package = Package( .library( name: "SecretAgentKit", targets: ["SecretAgentKit", "XPCWrappers"]), - .library( - name: "SecretAgentKitHeaders", - targets: ["SecretAgentKitHeaders"]), .library( name: "Brief", targets: ["Brief"]), @@ -60,13 +57,10 @@ let package = Package( ), .target( name: "SecretAgentKit", - dependencies: ["SecretKit", "SecretAgentKitHeaders"], + dependencies: ["SecretKit"], resources: [localization], swiftSettings: swiftSettings, ), - .systemLibrary( - name: "SecretAgentKitHeaders", - ), .testTarget( name: "SecretAgentKitTests", dependencies: ["SecretAgentKit"], @@ -83,7 +77,7 @@ let package = Package( ), .target( name: "XPCWrappers", - swiftSettings: swiftSettings, + swiftSettings: swiftSettings + [.treatWarning("DeprecatedDeclaration", as: .warning)], ), ] ) diff --git a/Sources/Packages/Sources/SecretAgentKit/SigningRequestTracer.swift b/Sources/Packages/Sources/SecretAgentKit/SigningRequestTracer.swift index 2872825..96ced63 100644 --- a/Sources/Packages/Sources/SecretAgentKit/SigningRequestTracer.swift +++ b/Sources/Packages/Sources/SecretAgentKit/SigningRequestTracer.swift @@ -2,7 +2,15 @@ import Foundation import AppKit import Security import SecretKit -import SecretAgentKitHeaders +//import SecretAgentKitHeaders + +// from libproc.h +@_silgen_name("proc_pidpath") +@discardableResult func proc_pidpath(_ pid: Int32, _ buffer: UnsafeMutableRawPointer!, _ buffersize: UInt32) -> Int32 + +//// from SecTask.h +@_silgen_name("SecCodeCreateWithPID") +@discardableResult func SecCodeCreateWithPID(_: Int32, _: SecCSFlags, _: UnsafeMutablePointer?>!) -> OSStatus /// An object responsible for generating ``SecretKit.SigningRequestProvenance`` objects. struct SigningRequestTracer { diff --git a/Sources/Packages/Sources/SecretAgentKitHeaders/Stub.swift b/Sources/Packages/Sources/SecretAgentKitHeaders/Stub.swift deleted file mode 100644 index 8b13789..0000000 --- a/Sources/Packages/Sources/SecretAgentKitHeaders/Stub.swift +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Sources/Packages/Sources/SecretAgentKitHeaders/include/SecretAgentKit.h b/Sources/Packages/Sources/SecretAgentKitHeaders/include/SecretAgentKit.h deleted file mode 100644 index e9c7150..0000000 --- a/Sources/Packages/Sources/SecretAgentKitHeaders/include/SecretAgentKit.h +++ /dev/null @@ -1,19 +0,0 @@ -#import -#import - - -// Forward declarations - -// from libproc.h -int proc_pidpath(int pid, void * buffer, uint32_t buffersize); - -// from SecTask.h -OSStatus SecCodeCreateWithPID(int32_t, SecCSFlags, SecCodeRef *); - -//! Project version number for SecretAgentKit. -FOUNDATION_EXPORT double SecretAgentKitVersionNumber; - -//! Project version string for SecretAgentKit. -FOUNDATION_EXPORT const unsigned char SecretAgentKitVersionString[]; - - diff --git a/Sources/Packages/Sources/SecretAgentKitHeaders/module.modulemap b/Sources/Packages/Sources/SecretAgentKitHeaders/module.modulemap deleted file mode 100644 index 7fceeab..0000000 --- a/Sources/Packages/Sources/SecretAgentKitHeaders/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -module SecretAgentKitHeaders [system] { - header "include/SecretAgentKit.h" - export * -} diff --git a/Sources/Packages/Sources/XPCWrappers/XPCWrappers.swift b/Sources/Packages/Sources/XPCWrappers/XPCWrappers.swift index 21515eb..53cc680 100644 --- a/Sources/Packages/Sources/XPCWrappers/XPCWrappers.swift +++ b/Sources/Packages/Sources/XPCWrappers/XPCWrappers.swift @@ -1,15 +1,32 @@ import Foundation +import XPC + +@_silgen_name("xpc_session_set_peer_code_signing_requirement") +func xpc_session_set_peer_code_signing_requirement(_ session: Any, _ requirement: UnsafePointer) -> Int32 public struct XPCTypedSession: Sendable { private let session: XPCSession public init(serviceName: String, warmup: Bool = false) throws { - if #available(macOS 26.0, *) { - session = try XPCSession(xpcService: serviceName, requirement: .isFromSameTeam()) - } else { - session = try XPCSession(xpcService: serviceName) +// if #available(macOS 26.0, *) { +// session = try XPCSession(xpcService: serviceName, requirement: .isFromSameTeam()) +// } else { + session = try XPCSession(xpcService: serviceName, options: .inactive) + let test = Mirror(reflecting: session) + for case let (label?, value) in test.children { + if label == "_session" { + print("HIT") + "anchor apple".utf8CString.withUnsafeBufferPointer { x in + _ = xpc_session_set_peer_code_signing_requirement( + value, + x.baseAddress! + ) + } + } } +// try session.activate() + // } if warmup { Task { [self] in _ = try? await send()