diff --git a/ShhShell/Host/Host.swift b/ShhShell/Host/Host.swift index ee8583a..6e55075 100644 --- a/ShhShell/Host/Host.swift +++ b/ShhShell/Host/Host.swift @@ -19,6 +19,7 @@ protocol HostPr: Codable, Identifiable, Equatable, Hashable { var password: String { get set } var publicKey: Data? { get set } var privateKey: Data? { get set } + var privateKeyID: UUID? { get set } var passphrase: String { get set } var key: String? { get set } } @@ -34,6 +35,7 @@ struct Host: HostPr { var password: String var publicKey: Data? var privateKey: Data? + var privateKeyID: UUID? var passphrase: String var key: String? diff --git a/ShhShell/Keys/Keypair.swift b/ShhShell/Keys/Keypair.swift index 424f93a..4da3ae4 100644 --- a/ShhShell/Keys/Keypair.swift +++ b/ShhShell/Keys/Keypair.swift @@ -30,6 +30,14 @@ struct Keypair: KeypairProtocol { var privateKey: Data var passphrase: String = "" + var label: String { + if name.isEmpty { + return openSshPubkey + } else { + return name + } + } + var openSshPubkey: String { String(data: KeyManager.makeSSHPubkey(self), encoding: .utf8) ?? "OpenSSH key format error" } diff --git a/ShhShell/Views/Keys/KeyManagerView.swift b/ShhShell/Views/Keys/KeyManagerView.swift index 5cfca5b..a86ee3b 100644 --- a/ShhShell/Views/Keys/KeyManagerView.swift +++ b/ShhShell/Views/Keys/KeyManagerView.swift @@ -29,7 +29,21 @@ struct KeyManagerView: View { Section() { ForEach(keyManager.keypairs) { kp in - Text(kp.openSshPubkey) + NavigationLink { + KeyDetailView(hostsManager: hostsManager, keypair: kp) + } label: { + Image(systemName: "key") + Text(kp.label) + Spacer() + Text(kp.type.description) + } + .swipeActions(edge: .trailing) { + Button(role: .destructive) { + + } label: { + Label("Delete", systemImage: "trash") + } + } } }