76 lines
2.5 KiB
Swift
76 lines
2.5 KiB
Swift
//
|
|
// PGPKeyURLImportTableViewController.swift
|
|
// pass
|
|
//
|
|
// Created by Mingshen Sun on 21/1/2017.
|
|
// Copyright © 2017 Bob Sun. All rights reserved.
|
|
//
|
|
|
|
import passKit
|
|
import UIKit
|
|
|
|
class PGPKeyURLImportTableViewController: AutoCellHeightUITableViewController, AlertPresenting {
|
|
@IBOutlet var pgpPublicKeyURLTextField: UITextField!
|
|
@IBOutlet var pgpPrivateKeyURLTextField: UITextField!
|
|
|
|
var pgpPrivateKeyURL: URL?
|
|
var pgpPublicKeyURL: URL?
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
pgpPublicKeyURLTextField.text = Defaults.pgpPublicKeyURL?.absoluteString
|
|
pgpPrivateKeyURLTextField.text = Defaults.pgpPrivateKeyURL?.absoluteString
|
|
}
|
|
|
|
@IBAction
|
|
private func save(_: Any) {
|
|
pgpPublicKeyURL = validate(pgpKeyURLText: pgpPublicKeyURLTextField.text)
|
|
|
|
if !Defaults.isYubiKeyEnabled {
|
|
pgpPrivateKeyURL = validate(pgpKeyURLText: pgpPrivateKeyURLTextField.text)
|
|
}
|
|
saveImportedKeys()
|
|
}
|
|
}
|
|
|
|
extension PGPKeyURLImportTableViewController: PGPKeyImporter {
|
|
static let keySource = KeySource.url
|
|
static let label = "DownloadFromUrl".localize()
|
|
|
|
func isReadyToUse() -> Bool {
|
|
validate(pgpKeyURLText: pgpPublicKeyURLTextField.text) != nil
|
|
&& (Defaults.isYubiKeyEnabled || validate(pgpKeyURLText: pgpPrivateKeyURLTextField.text ?? "") != nil)
|
|
}
|
|
|
|
func importKeys() throws {
|
|
if let pgpPrivateKeyURL = pgpPrivateKeyURL {
|
|
Defaults.pgpPrivateKeyURL = pgpPrivateKeyURL
|
|
try KeyFileManager.PrivatePGP.importKey(from: pgpPrivateKeyURL)
|
|
}
|
|
|
|
if let pgpPublicKeyURL = pgpPublicKeyURL {
|
|
Defaults.pgpPublicKeyURL = pgpPublicKeyURL
|
|
try KeyFileManager.PublicPGP.importKey(from: pgpPublicKeyURL)
|
|
}
|
|
}
|
|
|
|
func doAfterImport() {
|
|
presentAlert(title: "RememberToRemoveKey".localize(), message: "RememberToRemoveKeyFromServer.".localize())
|
|
}
|
|
|
|
func saveImportedKeys() {
|
|
performSegue(withIdentifier: "savePGPKeySegue", sender: self)
|
|
}
|
|
|
|
private func validate(pgpKeyURLText: String?) -> URL? {
|
|
guard let pgpKeyURL = pgpKeyURLText, let url = URL(string: pgpKeyURL) else {
|
|
presentFailureAlert(title: "CannotSavePgpKey".localize(), message: "SetPgpKeyUrlsFirst.".localize())
|
|
return nil
|
|
}
|
|
guard url.scheme == "https" || url.scheme == "http" else {
|
|
presentFailureAlert(title: "CannotSavePgpKey".localize(), message: "UseEitherHttpsOrHttp.".localize())
|
|
return nil
|
|
}
|
|
return url
|
|
}
|
|
}
|