Store ssh key passphrase in Keychain
This commit is contained in:
parent
04ceeb87dc
commit
de6183764b
4 changed files with 8 additions and 7 deletions
|
|
@ -18,7 +18,7 @@ class SSHKeySettingTableViewController: UITableViewController {
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
passphraseTextField.text = Defaults[.gitRepositorySSHPrivateKeyPassphrase]
|
passphraseTextField.text = Utils.getPasswordFromKeychain(name: "gitRepositorySSHPrivateKeyPassphrase")!
|
||||||
privateKeyURLTextField.text = Defaults[.gitRepositorySSHPrivateKeyURL]?.absoluteString
|
privateKeyURLTextField.text = Defaults[.gitRepositorySSHPrivateKeyURL]?.absoluteString
|
||||||
publicKeyURLTextField.text = Defaults[.gitRepositorySSHPublicKeyURL]?.absoluteString
|
publicKeyURLTextField.text = Defaults[.gitRepositorySSHPublicKeyURL]?.absoluteString
|
||||||
var doneBarButtonItem: UIBarButtonItem?
|
var doneBarButtonItem: UIBarButtonItem?
|
||||||
|
|
@ -43,7 +43,7 @@ class SSHKeySettingTableViewController: UITableViewController {
|
||||||
|
|
||||||
Defaults[.gitRepositorySSHPublicKeyURL] = URL(string: publicKeyURLTextField.text!)
|
Defaults[.gitRepositorySSHPublicKeyURL] = URL(string: publicKeyURLTextField.text!)
|
||||||
Defaults[.gitRepositorySSHPrivateKeyURL] = URL(string: privateKeyURLTextField.text!)
|
Defaults[.gitRepositorySSHPrivateKeyURL] = URL(string: privateKeyURLTextField.text!)
|
||||||
Defaults[.gitRepositorySSHPrivateKeyPassphrase] = passphraseTextField.text!
|
Utils.addPasswrodToKeychain(name: "gitRepositorySSHPrivateKeyPassphrase", password: passphraseTextField.text!)
|
||||||
|
|
||||||
do {
|
do {
|
||||||
try Data(contentsOf: Defaults[.gitRepositorySSHPublicKeyURL]!).write(to: Globals.sshPublicKeyURL, options: .atomic)
|
try Data(contentsOf: Defaults[.gitRepositorySSHPublicKeyURL]!).write(to: Globals.sshPublicKeyURL, options: .atomic)
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,7 @@ class SettingsTableViewController: UITableViewController {
|
||||||
gitCredential = GitCredential(
|
gitCredential = GitCredential(
|
||||||
credential: GitCredential.Credential.ssh(
|
credential: GitCredential.Credential.ssh(
|
||||||
userName: username,
|
userName: username,
|
||||||
password: Defaults[.gitRepositorySSHPrivateKeyPassphrase]!,
|
password: Utils.getPasswordFromKeychain(name: "gitRepositorySSHPrivateKeyPassphrase")!,
|
||||||
publicKeyFile: Globals.sshPublicKeyURL,
|
publicKeyFile: Globals.sshPublicKeyURL,
|
||||||
privateKeyFile: Globals.sshPrivateKeyURL,
|
privateKeyFile: Globals.sshPrivateKeyURL,
|
||||||
passwordNotSetCallback: self.requestSshKeyPassword
|
passwordNotSetCallback: self.requestSshKeyPassword
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ extension DefaultsKeys {
|
||||||
static let gitRepositoryPasswordAttempts = DefaultsKey<Int>("gitRepositoryPasswordAttempts")
|
static let gitRepositoryPasswordAttempts = DefaultsKey<Int>("gitRepositoryPasswordAttempts")
|
||||||
static let gitRepositorySSHPublicKeyURL = DefaultsKey<URL?>("gitRepositorySSHPublicKeyURL")
|
static let gitRepositorySSHPublicKeyURL = DefaultsKey<URL?>("gitRepositorySSHPublicKeyURL")
|
||||||
static let gitRepositorySSHPrivateKeyURL = DefaultsKey<URL?>("gitRepositorySSHPrivateKeyURL")
|
static let gitRepositorySSHPrivateKeyURL = DefaultsKey<URL?>("gitRepositorySSHPrivateKeyURL")
|
||||||
static let gitRepositorySSHPrivateKeyPassphrase = DefaultsKey<String?>("gitRepositorySSHPrivateKeyPassphrase")
|
|
||||||
static let lastUpdatedTime = DefaultsKey<Date?>("lasteUpdatedTime")
|
static let lastUpdatedTime = DefaultsKey<Date?>("lasteUpdatedTime")
|
||||||
|
|
||||||
static let isTouchIDOn = DefaultsKey<Bool>("isTouchIDOn")
|
static let isTouchIDOn = DefaultsKey<Bool>("isTouchIDOn")
|
||||||
|
|
|
||||||
|
|
@ -77,13 +77,14 @@ struct GitCredential {
|
||||||
newPassword = passwordNotSetCallback!()
|
newPassword = passwordNotSetCallback!()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Save password for the future
|
||||||
|
Utils.addPasswrodToKeychain(name: "gitRepositorySSHPrivateKeyPassphrase", password: newPassword!)
|
||||||
|
|
||||||
// nil is expected in case of empty password
|
// nil is expected in case of empty password
|
||||||
if newPassword == "" {
|
if newPassword == "" {
|
||||||
newPassword = nil
|
newPassword = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save password for the future
|
|
||||||
Defaults[.gitRepositorySSHPrivateKeyPassphrase] = newPassword
|
|
||||||
|
|
||||||
credential = try? GTCredential(userName: userName, publicKeyURL: publicKeyFile, privateKeyURL: privateKeyFile, passphrase: newPassword)
|
credential = try? GTCredential(userName: userName, publicKeyURL: publicKeyFile, privateKeyURL: privateKeyFile, passphrase: newPassword)
|
||||||
}
|
}
|
||||||
|
|
@ -141,7 +142,7 @@ class PasswordStore {
|
||||||
gitCredential = GitCredential(
|
gitCredential = GitCredential(
|
||||||
credential: GitCredential.Credential.ssh(
|
credential: GitCredential.Credential.ssh(
|
||||||
userName: Defaults[.gitRepositoryUsername]!,
|
userName: Defaults[.gitRepositoryUsername]!,
|
||||||
password: Defaults[.gitRepositorySSHPrivateKeyPassphrase]!,
|
password: Utils.getPasswordFromKeychain(name: "gitRepositorySSHPrivateKeyPassphrase")!,
|
||||||
publicKeyFile: Globals.sshPublicKeyURL,
|
publicKeyFile: Globals.sshPublicKeyURL,
|
||||||
privateKeyFile: Globals.sshPrivateKeyURL,
|
privateKeyFile: Globals.sshPrivateKeyURL,
|
||||||
passwordNotSetCallback: nil
|
passwordNotSetCallback: nil
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue