Skip to content
Snippets Groups Projects
Commit eff4d57e authored by Oliver Wiese's avatar Oliver Wiese
Browse files

add import public keys

parent 89e20fe2
No related branches found
No related tags found
No related merge requests found
......@@ -2124,7 +2124,7 @@ Um deine sicheren E-Mails auch auf einem anderen Gerät lesen zu können, muss d
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" keyboardDismissMode="interactive" translatesAutoresizingMaskIntoConstraints="NO" id="OLH-mw-Ir8">
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" layoutMarginsFollowReadableWidth="YES" keyboardDismissMode="interactive" translatesAutoresizingMaskIntoConstraints="NO" id="OLH-mw-Ir8">
<rect key="frame" x="20" y="100.66666666666669" width="374" height="692.33333333333326"/>
<color key="backgroundColor" cocoaTouchSystemColor="tableCellGroupedBackgroundColor"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
......
......@@ -13,8 +13,15 @@ class ImportKeyOverviewController: UITableViewController, ButtonCellHandler {
case iTunes, Paste
}
enum KeyState {
case Public, Secret
}
var currentState: KeyState = .Secret
override func viewDidLoad() {
super.viewDidLoad()
print("Load view with state: \(currentState)")
}
// MARK: - Table view data source
......@@ -47,7 +54,11 @@ class ImportKeyOverviewController: UITableViewController, ButtonCellHandler {
func touchDown(id: Int) {
if id == KeyActions.iTunes.hashValue {
// Call iTunes field
_ = KeyTableViewController.pushKeyTableView(navigationController: self.navigationController, type: .ImportKeyItunes)
var type = KeyTableViewController.KeyType.ImportPublicKeyItunes
if currentState == .Secret {
type = .ImportSecretKeyItunes
}
_ = KeyTableViewController.pushKeyTableView(navigationController: self.navigationController, type: type)
} else if id == KeyActions.Paste.hashValue {
// open Textfield to paste key
_ = PasteKeyViewController.pushPasteKeyView(navigationController: self.navigationController)
......
......@@ -42,6 +42,16 @@ class ItunesKeyHandling {
return newSecretKeys
}
func extractPublicKeys(withKnownKeys: Bool) -> [TempKey] {
var newPublicKeys = storedKeys.filter{!$0.isSecret}
if !withKnownKeys {
var knownIDs = DataHandler.handler.findPublicKeys().map{$0.keyID}
knownIDs = knownIDs.filter{return !($0 == "")}
newPublicKeys = newPublicKeys.filter{!knownIDs.contains($0.keyID)}
}
return newPublicKeys
}
var hasStoredKeys: Bool {
get {
return !keyURL.isEmpty
......
......@@ -11,7 +11,7 @@ import UIKit
class KeyTableViewController: UITableViewController {
enum KeyType {
case PublicKey, SecretKey, ImportKeyItunes, ImportFromList
case PublicKey, SecretKey, ImportSecretKeyItunes, ImportPublicKeyItunes, ImportFromList
}
static func pushKeyTableView(navigationController: UINavigationController?, type:KeyType) -> KeyTableViewController? {
......@@ -44,12 +44,18 @@ class KeyTableViewController: UITableViewController {
title = "Your IDs"
secretKeys = DataHandler.handler.findSecretKeys()
showAddButton = true
case .ImportKeyItunes:
case .ImportSecretKeyItunes:
title = "New Secret Keys"
importableKeys = ItunesKeyHandling.iTunesKeyHandler.extractSecretKeys(withKnownKeys: true)
if importableKeys.count == 0 {
onlyOneRow = true
}
case .ImportPublicKeyItunes:
title = "New Public Keys"
importableKeys = ItunesKeyHandling.iTunesKeyHandler.extractPublicKeys(withKnownKeys: true)
if importableKeys.count == 0 {
onlyOneRow = true
}
case .ImportFromList:
title = "Extracted Keys"
if importableKeys.count == 0 {
......@@ -58,6 +64,7 @@ class KeyTableViewController: UITableViewController {
}
self.title = title
print("Load view with title: \(title)")
if showAddButton {
self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addButton(btn:)))
}
......@@ -69,9 +76,14 @@ class KeyTableViewController: UITableViewController {
@objc private func addButton(btn: UIBarButtonItem) {
if type == .SecretKey {
if type == .SecretKey || type == .PublicKey {
let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
var nextState = ImportKeyOverviewController.KeyState.Public
if type == .SecretKey {
nextState = .Secret
}
if let viewController = mainStoryboard.instantiateViewController(withIdentifier: "ImportKeyOverview") as? ImportKeyOverviewController {
viewController.currentState = nextState
self.navigationController?.pushViewController(viewController, animated: true)
}
}
......@@ -89,7 +101,7 @@ class KeyTableViewController: UITableViewController {
return publicKeys.count
case .SecretKey:
return secretKeys.count
case .ImportKeyItunes, .ImportFromList:
case .ImportSecretKeyItunes, .ImportFromList, .ImportPublicKeyItunes:
if importableKeys.count == 0 {
// Add warning to copy key in iTunes folder
return 1
......@@ -112,7 +124,7 @@ class KeyTableViewController: UITableViewController {
cell.setLabels(key: publicKeys[indexPath.row])
case .SecretKey:
cell.setLabels(key: secretKeys[indexPath.row])
case .ImportKeyItunes, .ImportFromList:
case .ImportSecretKeyItunes, .ImportFromList, .ImportPublicKeyItunes:
if importableKeys.count == 0 {
let cell = UITableViewCell(style: .default, reuseIdentifier: "InfoCell")
cell.accessoryType = .none
......@@ -164,7 +176,7 @@ class KeyTableViewController: UITableViewController {
}
}
addr = mail ?? keyID
case .ImportKeyItunes, .ImportFromList:
case .ImportSecretKeyItunes, .ImportFromList, .ImportPublicKeyItunes:
// Try to import key
importKey(key: importableKeys[indexPath.row], indexPath: indexPath)
pushView = false
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment