diff --git a/passKit/Models/PasswordStore.swift b/passKit/Models/PasswordStore.swift index 9a0e0f3..fdf321a 100644 --- a/passKit/Models/PasswordStore.swift +++ b/passKit/Models/PasswordStore.swift @@ -395,13 +395,7 @@ public class PasswordStore { public func decrypt(passwordEntity: PasswordEntity, keyID: String? = nil, requestPGPKeyPassphrase: @escaping (String) -> String) throws -> Password { let url = passwordEntity.fileURL(in: storeURL) let encryptedData = try Data(contentsOf: url) - let data: Data? = try { - if Defaults.isEnableGPGIDOn { - let keyID = keyID ?? findGPGID(from: url) - return try PGPAgent.shared.decrypt(encryptedData: encryptedData, keyID: keyID, requestPGPKeyPassphrase: requestPGPKeyPassphrase) - } - return try PGPAgent.shared.decrypt(encryptedData: encryptedData, requestPGPKeyPassphrase: requestPGPKeyPassphrase) - }() + let data: Data? = try PGPAgent.shared.decrypt(encryptedData: encryptedData, keyID: keyID, requestPGPKeyPassphrase: requestPGPKeyPassphrase) guard let decryptedData = data else { throw AppError.decryption } @@ -413,20 +407,22 @@ public class PasswordStore { guard let passwordEntity = fetchPasswordEntity(with: path) else { throw AppError.decryption } - if Defaults.isEnableGPGIDOn { - return try decrypt(passwordEntity: passwordEntity, keyID: keyID, requestPGPKeyPassphrase: requestPGPKeyPassphrase) - } - return try decrypt(passwordEntity: passwordEntity, requestPGPKeyPassphrase: requestPGPKeyPassphrase) + return try decrypt(passwordEntity: passwordEntity, keyID: keyID, requestPGPKeyPassphrase: requestPGPKeyPassphrase) } public func encrypt(password: Password, keyID: String? = nil) throws -> Data { - var keyID = keyID - if Defaults.isEnableGPGIDOn { - let encryptedDataPath = password.fileURL(in: storeURL) - keyID = keyID ?? findGPGID(from: encryptedDataPath) - } - if let keyID { - return try PGPAgent.shared.encrypt(plainData: password.plainData, keyIDs: [keyID]) + let keyIDs: [String] = { + if let keyID { + return [keyID] + } + if Defaults.isEnableGPGIDOn { + let encryptedDataPath = password.fileURL(in: storeURL) + return [findGPGID(from: encryptedDataPath)] + } + return [] + }() + if !keyIDs.isEmpty { + return try PGPAgent.shared.encrypt(plainData: password.plainData, keyIDs: keyIDs) } return try PGPAgent.shared.encryptWithAllKeys(plainData: password.plainData) }