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