diff --git a/DGCAVerifier/Services/Enclave.swift b/DGCAVerifier/Services/Enclave.swift index bb5ad34..acfaa48 100644 --- a/DGCAVerifier/Services/Enclave.swift +++ b/DGCAVerifier/Services/Enclave.swift @@ -72,7 +72,6 @@ struct Enclave { else { return (nil, error?.takeRetainedValue().localizedDescription) } - error?.release() return (privateKey, nil) } @@ -117,7 +116,6 @@ struct Enclave { &error ) as Data? let err = error?.takeRetainedValue().localizedDescription - error?.release() return (cipherData, err) } @@ -140,7 +138,6 @@ struct Enclave { &error ) as Data? let err = error?.takeRetainedValue().localizedDescription - error?.release() return (clearData, err) } @@ -160,7 +157,6 @@ struct Enclave { &error ) let err = error?.takeRetainedValue().localizedDescription - error?.release() return (isValid, err) } @@ -183,7 +179,6 @@ struct Enclave { &error ) as Data? let err = error?.takeRetainedValue().localizedDescription - error?.release() return (signature, err) } } diff --git a/DGCAVerifier/Services/SecureStorage.swift b/DGCAVerifier/Services/SecureStorage.swift index b0f196f..46d814c 100644 --- a/DGCAVerifier/Services/SecureStorage.swift +++ b/DGCAVerifier/Services/SecureStorage.swift @@ -37,6 +37,21 @@ struct SecureStorage { static let documents: URL! = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true) static let path: URL! = URL(string: documents.absoluteString + "secure.db") + /** + Loads encrypted db and overrides it with an empty one if that fails. + */ + public static func loadOverride(completion: ((Bool) -> Void)? = nil) { + load { success in + if success { + completion?(true) + return + } + save { _ in + load(completion: completion) + } + } + } + public static func load(completion: ((Bool) -> Void)? = nil) { if !FileManager.default.fileExists(atPath: path.path) { save() @@ -79,7 +94,7 @@ struct SecureStorage { completion?(false) return } - Enclave.sign(data: data, with: key) { signature, err in + Enclave.sign(data: encrypted, with: key) { signature, err in guard let signature = signature, err == nil diff --git a/DGCAVerifier/ViewControllers/Home.swift b/DGCAVerifier/ViewControllers/Home.swift index f0ff2d4..43eb29e 100644 --- a/DGCAVerifier/ViewControllers/Home.swift +++ b/DGCAVerifier/ViewControllers/Home.swift @@ -33,7 +33,7 @@ class HomeVC: UIViewController { override func viewDidLoad() { super.viewDidLoad() - SecureStorage.load { [weak self] success in + SecureStorage.loadOverride { [weak self] success in guard success else { return }