From 513a93fd1845b55ddbbf0c0c13ded60007866861 Mon Sep 17 00:00:00 2001 From: Max Goedjen Date: Sun, 20 Mar 2022 15:59:36 -0700 Subject: [PATCH] . --- .../ProxyAgentSecretKit/ProxyAgentSecret.swift | 2 +- .../ProxyAgentSecretKit/ProxyAgentStore.swift | 10 ++++++---- .../SecretKit/OpenSSH/OpenSSHKeyWriter.swift | 9 +++++++++ .../Packages/Sources/SecretKit/Types/Secret.swift | 2 ++ Sources/Secretive.xcodeproj/project.pbxproj | 14 ++++++++++++++ 5 files changed, 32 insertions(+), 5 deletions(-) diff --git a/Sources/Packages/Sources/ProxyAgentSecretKit/ProxyAgentSecret.swift b/Sources/Packages/Sources/ProxyAgentSecretKit/ProxyAgentSecret.swift index 655214f..f13296b 100644 --- a/Sources/Packages/Sources/ProxyAgentSecretKit/ProxyAgentSecret.swift +++ b/Sources/Packages/Sources/ProxyAgentSecretKit/ProxyAgentSecret.swift @@ -2,7 +2,7 @@ import Foundation import Combine import SecretKit -extension SmartCard { +extension ProxyAgent { /// An implementation of Secret backed by a Smart Card. public struct Secret: SecretKit.Secret { diff --git a/Sources/Packages/Sources/ProxyAgentSecretKit/ProxyAgentStore.swift b/Sources/Packages/Sources/ProxyAgentSecretKit/ProxyAgentStore.swift index bb9f82e..e8cb3f9 100644 --- a/Sources/Packages/Sources/ProxyAgentSecretKit/ProxyAgentStore.swift +++ b/Sources/Packages/Sources/ProxyAgentSecretKit/ProxyAgentStore.swift @@ -9,13 +9,16 @@ extension ProxyAgent { /// An implementation of Store backed by a Proxy Agent. public class Store: SecretStore { - @Published public var isAvailable: Bool = false + @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() { + 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 @@ -29,6 +32,7 @@ extension ProxyAgent { } public func sign(data: Data, with secret: SecretType, for provenance: SigningRequestProvenance) throws -> Data { + fatalError() } public func existingPersistedAuthenticationContext(secret: ProxyAgent.Secret) -> PersistedAuthenticationContext? { @@ -50,8 +54,6 @@ extension ProxyAgent { /// A signing-related error. public struct SigningError: Error { - /// The underlying error reported by the API, if one was returned. - public let error: SecurityError? } } diff --git a/Sources/Packages/Sources/SecretKit/OpenSSH/OpenSSHKeyWriter.swift b/Sources/Packages/Sources/SecretKit/OpenSSH/OpenSSHKeyWriter.swift index 223b935..7620347 100644 --- a/Sources/Packages/Sources/SecretKit/OpenSSH/OpenSSHKeyWriter.swift +++ b/Sources/Packages/Sources/SecretKit/OpenSSH/OpenSSHKeyWriter.swift @@ -64,6 +64,10 @@ extension OpenSSHKeyWriter { switch algorithm { case .ellipticCurve: return "ecdsa-sha2-nistp" + String(describing: length) + case .rsa: + return "ssh-rsa" + case .ed25519: + return "ssh-ed25519" } } @@ -76,6 +80,11 @@ extension OpenSSHKeyWriter { switch algorithm { case .ellipticCurve: return "nistp" + String(describing: length) + // TODO: VERIFY + case .rsa: + return "rsa" + case .ed25519: + return "ed25519" } } diff --git a/Sources/Packages/Sources/SecretKit/Types/Secret.swift b/Sources/Packages/Sources/SecretKit/Types/Secret.swift index 6fc57a1..bfd26e5 100644 --- a/Sources/Packages/Sources/SecretKit/Types/Secret.swift +++ b/Sources/Packages/Sources/SecretKit/Types/Secret.swift @@ -19,6 +19,8 @@ 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. diff --git a/Sources/Secretive.xcodeproj/project.pbxproj b/Sources/Secretive.xcodeproj/project.pbxproj index d66060b..b4384e9 100644 --- a/Sources/Secretive.xcodeproj/project.pbxproj +++ b/Sources/Secretive.xcodeproj/project.pbxproj @@ -47,6 +47,8 @@ 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 */; }; @@ -154,6 +156,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 50A63F6D27E7E04800085D7B /* ProxyAgentSecretKit in Frameworks */, 5003EF3B278005E800DF2006 /* SecretKit in Frameworks */, 501421622781262300BBAA70 /* Brief in Frameworks */, 5003EF5F2780081600DF2006 /* SecureEnclaveSecretKit in Frameworks */, @@ -174,6 +177,7 @@ 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 */, @@ -345,6 +349,7 @@ 5003EF5E2780081600DF2006 /* SecureEnclaveSecretKit */, 5003EF602780081600DF2006 /* SmartCardSecretKit */, 501421612781262300BBAA70 /* Brief */, + 50A63F6C27E7E04800085D7B /* ProxyAgentSecretKit */, ); productName = Secretive; productReference = 50617D7F23FCE48E0099B055 /* Secretive.app */; @@ -388,6 +393,7 @@ 5003EF40278005FA00DF2006 /* SecretKit */, 5003EF622780081B00DF2006 /* SecureEnclaveSecretKit */, 5003EF642780081B00DF2006 /* SmartCardSecretKit */, + 50A63F6A27E7DC5700085D7B /* ProxyAgentSecretKit */, ); productName = SecretAgent; productReference = 50A3B78A24026B7500D209EA /* SecretAgent.app */; @@ -1021,6 +1027,14 @@ isa = XCSwiftPackageProductDependency; productName = Brief; }; + 50A63F6A27E7DC5700085D7B /* ProxyAgentSecretKit */ = { + isa = XCSwiftPackageProductDependency; + productName = ProxyAgentSecretKit; + }; + 50A63F6C27E7E04800085D7B /* ProxyAgentSecretKit */ = { + isa = XCSwiftPackageProductDependency; + productName = ProxyAgentSecretKit; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 50617D7723FCE48D0099B055 /* Project object */;