add checks to avoid invalid inputs

This commit is contained in:
Bob Sun 2017-02-13 15:01:04 +08:00
parent 0b714ffec2
commit 3145ddacbe
No known key found for this signature in database
GPG key ID: 1F86BA2052FED3B4
4 changed files with 18 additions and 3 deletions

View file

@ -18,7 +18,7 @@ class GitRepositoryAuthenticationSettingTableViewController: UITableViewControll
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "Auth Method"
switch selectedMethod! {
switch selectedMethod ?? "" {
case "Password":
passwordCell.accessoryType = UITableViewCellAccessoryType.checkmark
case "SSH Key":

View file

@ -24,6 +24,12 @@ class PGPKeySettingTableViewController: UITableViewController {
override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
if identifier == "savePGPKeySegue" {
guard pgpPublicKeyURLTextField.text != nil else {
return false
}
guard pgpPrivateKeyURLTextField.text != nil else {
return false
}
if URL(string: pgpPublicKeyURLTextField.text!)!.scheme! == "http" &&
URL(string: pgpPrivateKeyURLTextField.text!)!.scheme! == "http" {
let alertMessage = "HTTP connection is not supported."

View file

@ -26,7 +26,11 @@ class SettingsTableViewController: UITableViewController {
@IBAction func save(segue: UIStoryboardSegue) {
if let controller = segue.source as? PGPKeySettingTableViewController {
if Defaults[.pgpKeyID] == nil {
if Defaults[.pgpKeyID] == nil ||
Defaults[.pgpPrivateKeyURL] != URL(string: controller.pgpPrivateKeyURLTextField.text!) ||
Defaults[.pgpPublicKeyURL] != URL(string: controller.pgpPublicKeyURLTextField.text!) ||
Defaults[.pgpKeyPassphrase] != controller.pgpKeyPassphraseTextField.text!
{
Defaults[.pgpPrivateKeyURL] = URL(string: controller.pgpPrivateKeyURLTextField.text!)
Defaults[.pgpPublicKeyURL] = URL(string: controller.pgpPublicKeyURLTextField.text!)
Defaults[.pgpKeyPassphrase] = controller.pgpKeyPassphraseTextField.text!

View file

@ -80,8 +80,13 @@ class PasswordStore {
try pgpPrivateData.write(to: URL(fileURLWithPath: pgpPrivateKeyLocalPath), options: .atomic)
pgp.importKeys(fromFile: pgpPublicKeyLocalPath, allowDuplicates: false)
if pgp.getKeysOf(.public).count == 0 {
throw NSError(domain: "me.mssun.pass.error", code: 2, userInfo: [NSLocalizedDescriptionKey: "Cannot import public key."])
}
pgp.importKeys(fromFile: pgpPrivateKeyLocalPath, allowDuplicates: false)
if pgp.getKeysOf(.secret).count == 0 {
throw NSError(domain: "me.mssun.pass.error", code: 2, userInfo: [NSLocalizedDescriptionKey: "Cannot import seceret key."])
}
let key = pgp.getKeysOf(.public)[0]
Defaults[.pgpKeyID] = key.keyID!.shortKeyString
if let gpgUser = key.users[0] as? PGPUser {