From d4d8d7267ac2d18e53bceeeddef7dc45f613c15f Mon Sep 17 00:00:00 2001 From: Danny Moesch Date: Sat, 1 Dec 2018 13:27:30 +0100 Subject: [PATCH] Tweak Password class --- passExtension/ExtensionViewController.swift | 2 +- passKit/Models/Password.swift | 18 ++++++++---------- passKitTests/Models/PasswordTest.swift | 6 +++--- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/passExtension/ExtensionViewController.swift b/passExtension/ExtensionViewController.swift index f0dd016..0d74b0e 100644 --- a/passExtension/ExtensionViewController.swift +++ b/passExtension/ExtensionViewController.swift @@ -172,7 +172,7 @@ class ExtensionViewController: UIViewController, UITableViewDataSource, UITableV let extensionItem = NSExtensionItem() var returnDictionary = [OnePasswordExtensionKey.usernameKey: username, OnePasswordExtensionKey.passwordKey: password] - if let totpPassword = decryptedPassword?.getOtp() { + if let totpPassword = decryptedPassword?.currentOtp { returnDictionary[OnePasswordExtensionKey.totpKey] = totpPassword } extensionItem.attachments = [NSItemProvider(item: returnDictionary as NSSecureCoding, typeIdentifier: String(kUTTypePropertyList))] diff --git a/passKit/Models/Password.swift b/passKit/Models/Password.swift index 214250e..65f1f9d 100644 --- a/passKit/Models/Password.swift +++ b/passKit/Models/Password.swift @@ -6,7 +6,6 @@ // Copyright © 2017 Bob Sun. All rights reserved. // -import SwiftyUserDefaults import OneTimePassword import Base32 @@ -56,6 +55,10 @@ public class Password { return getAdditionValue(withKey: Constants.URL_KEYWORD) } + public var currentOtp: String? { + return otpToken?.currentPassword + } + public init(name: String, url: URL, plainText: String) { self.name = name self.url = url @@ -83,7 +86,7 @@ public class Password { } private func initEverything() { - parser = Parser(plainText: self.plainText) + parser = Parser(plainText: plainText) additions = parser.additionFields // Check whether the first line looks like an otp entry. @@ -95,9 +98,9 @@ public class Password { private func checkPasswordForOtpToken() { let (key, value) = Parser.getKeyValuePair(from: password) - if Constants.OTP_KEYWORDS.contains(key ?? "") { + if let key = key, Constants.OTP_KEYWORDS.contains(key) { firstLineIsOTPField = true - additions.append(key! => value) + additions.append(key => value) } else { firstLineIsOTPField = false } @@ -114,7 +117,7 @@ public class Password { } private func getAdditionValue(withKey key: String, caseSensitive: Bool = false) -> String? { - let toLowercase = { (string: String) -> String in return caseSensitive ? string : string.lowercased() } + let toLowercase = { (string: String) -> String in caseSensitive ? string : string.lowercased() } return additions.first(where: { toLowercase($0.title) == toLowercase(key) })?.content } @@ -240,11 +243,6 @@ public class Password { return (description, otp) } - // return the password strings - public func getOtp() -> String? { - return self.otpToken?.currentPassword - } - // return the password strings // it is guaranteed that it is a HOTP password when we call this public func getNextHotp() -> String? { diff --git a/passKitTests/Models/PasswordTest.swift b/passKitTests/Models/PasswordTest.swift index b84a42c..bd34b0a 100644 --- a/passKitTests/Models/PasswordTest.swift +++ b/passKitTests/Models/PasswordTest.swift @@ -167,7 +167,7 @@ class PasswordTest: XCTestCase { XCTAssertEqual(password.additionsPlainText, additions) XCTAssertEqual(password.otpType, OtpType.totp) - XCTAssertNotNil(password.getOtp()) + XCTAssertNotNil(password.currentOtp) } func testFirstLineIsOtpToken() { @@ -182,7 +182,7 @@ class PasswordTest: XCTestCase { XCTAssertNil(password.login) XCTAssertEqual(password.otpType, OtpType.totp) - XCTAssertNotNil(password.getOtp()) + XCTAssertNotNil(password.currentOtp) } func testWrongOtpToken() { @@ -194,7 +194,7 @@ class PasswordTest: XCTestCase { XCTAssertTrue(password.additionsPlainText.isEmpty) XCTAssertEqual(password.otpType, OtpType.none) - XCTAssertNil(password.getOtp()) + XCTAssertNil(password.currentOtp) } func testEmptyMultilineValues() {