Compare commits

..

1 Commits

Author SHA1 Message Date
64b2cc6f29 Fix 2022-06-18 20:19:11 -07:00
8 changed files with 5 additions and 123 deletions

View File

@ -18,9 +18,6 @@ let package = Package(
.library(
name: "SmartCardSecretKit",
targets: ["SmartCardSecretKit"]),
.library(
name: "ProxyAgentSecretKit",
targets: ["ProxyAgentSecretKit"]),
.library(
name: "SecretAgentKit",
targets: ["SecretAgentKit"]),
@ -50,10 +47,6 @@ let package = Package(
name: "SmartCardSecretKit",
dependencies: ["SecretKit"]
),
.target(
name: "ProxyAgentSecretKit",
dependencies: ["SecretKit", "SecretAgentKit"]
),
.target(
name: "SecretAgentKit",
dependencies: ["SecretKit", "SecretAgentKitHeaders"]

View File

@ -1,2 +0,0 @@
/// Namespace for the Proxy Agent implementations.
public enum ProxyAgent {}

View File

@ -1,19 +0,0 @@
import Foundation
import Combine
import SecretKit
extension ProxyAgent {
/// An implementation of Secret backed by a Smart Card.
public struct Secret: SecretKit.Secret {
public let id: Data
public let name: String
public let algorithm: Algorithm
public let keySize: Int
public let requiresAuthentication: Bool = false
public let publicKey: Data
}
}

View File

@ -1,59 +0,0 @@
import Foundation
import Security
import CryptoTokenKit
import LocalAuthentication
import SecretKit
extension ProxyAgent {
/// An implementation of Store backed by a Proxy Agent.
public class Store: SecretStore {
@Published public var isAvailable: Bool = true
public let id = UUID()
public private(set) var name = NSLocalizedString("Proxy SSH Agent", comment: "Proxy SSH Agent")
@Published public private(set) var secrets: [Secret] = []
private let agentPath: String
/// Initializes a Store.
public init(path: String) {
agentPath = path
secrets.append(Secret(id: "hello".data(using: .utf8)!, name: "Test", algorithm: .ellipticCurve, keySize: 256, publicKey: Data(base64Encoded: "AAAAC3NzaC1lZDI1NTE5AAAAIINQz8WohBS46ICEUtkJ/vdxJPM63T5Dy4bQC35JVgGR")!))
}
// MARK: Public API
public func create(name: String) throws {
fatalError("Keys must be created on the smart card.")
}
public func delete(secret: Secret) throws {
fatalError("Keys must be deleted on the smart card.")
}
public func sign(data: Data, with secret: SecretType, for provenance: SigningRequestProvenance) throws -> Data {
fatalError()
}
public func existingPersistedAuthenticationContext(secret: ProxyAgent.Secret) -> PersistedAuthenticationContext? {
nil
}
public func persistAuthentication(secret: ProxyAgent.Secret, forDuration: TimeInterval) throws {
}
}
}
extension ProxyAgent.Store {
}
extension ProxyAgent {
/// A signing-related error.
public struct SigningError: Error {
}
}

View File

@ -45,20 +45,14 @@ public class SocketController {
var addr = sockaddr_un()
addr.sun_family = sa_family_t(AF_UNIX)
var len: Int = 0
let len = MemoryLayout.size(ofValue: addr.sun_path) - 1
withUnsafeMutablePointer(to: &addr.sun_path.0) { pointer in
path.withCString { cstring in
len = strlen(cstring)
strncpy(pointer, cstring, len)
}
}
addr.sun_len = UInt8(len+2)
var data: Data!
withUnsafePointer(to: &addr) { pointer in
data = Data(bytes: pointer, count: MemoryLayout<sockaddr_un>.size)
// The buffer is pre-zeroed, so manual termination is unnecessary.
precondition(memccpy(pointer, path, 0, len) != nil)
}
addr.sun_len = UInt8(len)
let data = withUnsafeBytes(of: &addr, Data.init(_:))
return SocketPort(protocolFamily: AF_UNIX, socketType: SOCK_STREAM, protocol: 0, address: data)!
}

View File

@ -64,10 +64,6 @@ extension OpenSSHKeyWriter {
switch algorithm {
case .ellipticCurve:
return "ecdsa-sha2-nistp" + String(describing: length)
case .rsa:
return "ssh-rsa"
case .ed25519:
return "ssh-ed25519"
}
}
@ -80,11 +76,6 @@ extension OpenSSHKeyWriter {
switch algorithm {
case .ellipticCurve:
return "nistp" + String(describing: length)
// TODO: VERIFY
case .rsa:
return "rsa"
case .ed25519:
return "ed25519"
}
}

View File

@ -19,8 +19,6 @@ public protocol Secret: Identifiable, Hashable {
/// The type of algorithm the Secret uses. Currently, only elliptic curve algorithms are supported.
public enum Algorithm: Hashable {
case rsa
case ed25519
case ellipticCurve
/// Initializes the Algorithm with a secAttr representation of an algorithm.

View File

@ -47,8 +47,6 @@
50A3B79124026B7600D209EA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 50A3B79024026B7600D209EA /* Assets.xcassets */; };
50A3B79424026B7600D209EA /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 50A3B79324026B7600D209EA /* Preview Assets.xcassets */; };
50A3B79724026B7600D209EA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 50A3B79524026B7600D209EA /* Main.storyboard */; };
50A63F6B27E7DC5700085D7B /* ProxyAgentSecretKit in Frameworks */ = {isa = PBXBuildFile; productRef = 50A63F6A27E7DC5700085D7B /* ProxyAgentSecretKit */; };
50A63F6D27E7E04800085D7B /* ProxyAgentSecretKit in Frameworks */ = {isa = PBXBuildFile; productRef = 50A63F6C27E7E04800085D7B /* ProxyAgentSecretKit */; };
50B8550D24138C4F009958AC /* DeleteSecretView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50B8550C24138C4F009958AC /* DeleteSecretView.swift */; };
50BB046B2418AAAE00D6E079 /* EmptyStoreView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50BB046A2418AAAE00D6E079 /* EmptyStoreView.swift */; };
50C385A52407A76D00AF2719 /* SecretDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50C385A42407A76D00AF2719 /* SecretDetailView.swift */; };
@ -156,7 +154,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
50A63F6D27E7E04800085D7B /* ProxyAgentSecretKit in Frameworks */,
5003EF3B278005E800DF2006 /* SecretKit in Frameworks */,
501421622781262300BBAA70 /* Brief in Frameworks */,
5003EF5F2780081600DF2006 /* SecureEnclaveSecretKit in Frameworks */,
@ -177,7 +174,6 @@
files = (
5003EF3D278005F300DF2006 /* Brief in Frameworks */,
5003EF632780081B00DF2006 /* SecureEnclaveSecretKit in Frameworks */,
50A63F6B27E7DC5700085D7B /* ProxyAgentSecretKit in Frameworks */,
5003EF652780081B00DF2006 /* SmartCardSecretKit in Frameworks */,
5003EF3F278005F300DF2006 /* SecretAgentKit in Frameworks */,
5003EF41278005FA00DF2006 /* SecretKit in Frameworks */,
@ -349,7 +345,6 @@
5003EF5E2780081600DF2006 /* SecureEnclaveSecretKit */,
5003EF602780081600DF2006 /* SmartCardSecretKit */,
501421612781262300BBAA70 /* Brief */,
50A63F6C27E7E04800085D7B /* ProxyAgentSecretKit */,
);
productName = Secretive;
productReference = 50617D7F23FCE48E0099B055 /* Secretive.app */;
@ -393,7 +388,6 @@
5003EF40278005FA00DF2006 /* SecretKit */,
5003EF622780081B00DF2006 /* SecureEnclaveSecretKit */,
5003EF642780081B00DF2006 /* SmartCardSecretKit */,
50A63F6A27E7DC5700085D7B /* ProxyAgentSecretKit */,
);
productName = SecretAgent;
productReference = 50A3B78A24026B7500D209EA /* SecretAgent.app */;
@ -1027,14 +1021,6 @@
isa = XCSwiftPackageProductDependency;
productName = Brief;
};
50A63F6A27E7DC5700085D7B /* ProxyAgentSecretKit */ = {
isa = XCSwiftPackageProductDependency;
productName = ProxyAgentSecretKit;
};
50A63F6C27E7E04800085D7B /* ProxyAgentSecretKit */ = {
isa = XCSwiftPackageProductDependency;
productName = ProxyAgentSecretKit;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = 50617D7723FCE48D0099B055 /* Project object */;