Skip to content

Commit 94f9815

Browse files
committed
tmp: debug
1 parent 239fb83 commit 94f9815

File tree

1 file changed

+90
-7
lines changed

1 file changed

+90
-7
lines changed

firefox-ios/Storage/Rust/RustLogins.swift

Lines changed: 90 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import Foundation
66
import Glean
77
import Shared
88
import Common
9+
import Security
910

1011
import class MozillaAppServices.LoginsStorage
1112
import class MozillaAppServices.MZKeychainWrapper
@@ -224,13 +225,33 @@ public class RustLoginEncryptionKeys {
224225
let canary = try createCanary(text: canaryPhrase, encryptionKey: secret)
225226

226227
DispatchQueue.global(qos: .background).sync {
227-
self.keychain.set(secret,
228-
forKey: self.loginPerFieldKeychainKey,
229-
withAccessibility: MZKeychainItemAccessibility.afterFirstUnlock)
230-
self.keychain.set(canary,
231-
forKey: self.canaryPhraseKey,
232-
withAccessibility: MZKeychainItemAccessibility.afterFirstUnlock)
228+
let result = self.keychain.set(secret,
229+
forKey: self.loginPerFieldKeychainKey,
230+
withAccessibility: MZKeychainItemAccessibility.afterFirstUnlock)
231+
self.logger.log("[issam] 0 createAndStoreKey set result",
232+
level: .warning,
233+
category: .storage,
234+
description: "\(result)")
235+
if !result {
236+
let status = SecItemCopyMatching(
237+
setupKeychainQueryDictionary(forKey: self.loginPerFieldKeychainKey) as CFDictionary, nil)
238+
self.logger.log("[issam] 000 Keychain SET FAILED - Status: \(status) Key: \(self.loginPerFieldKeychainKey)")
239+
}
240+
241+
let result2 = self.keychain.set(canary,
242+
forKey: self.canaryPhraseKey,
243+
withAccessibility: MZKeychainItemAccessibility.afterFirstUnlock)
244+
self.logger.log("[issam] 00 createAndStoreKey set result",
245+
level: .warning,
246+
category: .storage,
247+
description: "\(result2)")
233248
}
249+
250+
let key = self.keychain.string(forKey: self.loginPerFieldKeychainKey)
251+
self.logger.log("[issam] 1 createAndStoreKey",
252+
level: .warning,
253+
category: .storage,
254+
description: "\(key ?? "empty")")
234255
return secret
235256
} catch let err as NSError {
236257
if let loginsStoreError = err as? LoginsStoreError {
@@ -605,9 +626,17 @@ public class RustLogins: LoginsProtocol, KeyManager {
605626
public func addLogin(login: LoginEntry) -> Deferred<Maybe<String>> {
606627
let deferred = Deferred<Maybe<String>>()
607628

629+
self.logger.log("[issam] 0 Adding login",
630+
level: .warning,
631+
category: .storage,
632+
description: "xxxx")
608633
queue.async {
609634
guard self.isOpen else {
610635
let error = LoginsStoreError.UnexpectedLoginsApiError(reason: "Database is closed")
636+
self.logger.log("[issam] 1 Adding login",
637+
level: .warning,
638+
category: .storage,
639+
description: error.descriptionValue)
611640

612641
deferred.fill(Maybe(failure: error as MaybeErrorType))
613642
return
@@ -620,9 +649,17 @@ public class RustLogins: LoginsProtocol, KeyManager {
620649
let id = try self.storage?.add(login: login).id
621650
deferred.fill(Maybe(success: id!))
622651
} catch let err as NSError {
652+
self.logger.log("[issam] 2 Error adding login",
653+
level: .warning,
654+
category: .storage,
655+
description: err.localizedDescription)
623656
deferred.fill(Maybe(failure: err))
624657
}
625658
case .failure(let err):
659+
self.logger.log("[issam] 3 Error adding login",
660+
level: .warning,
661+
category: .storage,
662+
description: err.localizedDescription)
626663
deferred.fill(Maybe(failure: err))
627664
}
628665
}
@@ -853,12 +890,25 @@ public class RustLogins: LoginsProtocol, KeyManager {
853890
private func getKeychainData(rustKeys: RustLoginEncryptionKeys) -> (String?, String?) {
854891
var keychainData: (String?, String?) = (nil, nil)
855892

893+
self.logger.log("[issam] 1 getKeychainData",
894+
level: .warning,
895+
category: .storage,
896+
description: "")
897+
856898
DispatchQueue.global(qos: .background).sync {
857899
let key = rustKeys.keychain.string(forKey: rustKeys.loginPerFieldKeychainKey)
858900
let encryptedCanaryPhrase = rustKeys.keychain.string(forKey: rustKeys.canaryPhraseKey)
859901
keychainData = (key, encryptedCanaryPhrase)
902+
self.logger.log("[issam] 2 getKeychainData",
903+
level: .warning,
904+
category: .storage,
905+
description: "\(keychainData.0 ?? "empty")")
860906
}
861907

908+
self.logger.log("[issam] 3 getKeychainData",
909+
level: .warning,
910+
category: .storage,
911+
description: "\(keychainData.0 ?? "empty")")
862912
return keychainData
863913
}
864914

@@ -937,27 +987,52 @@ public class RustLogins: LoginsProtocol, KeyManager {
937987
// call or the key data has been cleared from the keychain.
938988

939989
self.hasSyncedLogins().upon { result in
990+
self.logger.log("[issam] 0 getStoredKey",
991+
level: .warning,
992+
category: .storage,
993+
description: "")
940994
guard result.failureValue == nil else {
941995
completion(.failure(result.failureValue! as NSError))
942996
return
943997
}
998+
self.logger.log("[issam] 1 getStoredKey",
999+
level: .warning,
1000+
category: .storage,
1001+
description: "")
9441002

9451003
guard let hasLogins = result.successValue else {
9461004
let msg = "Failed to verify logins count before attempting to reset key"
9471005
completion(.failure(LoginEncryptionKeyError.dbRecordCountVerificationError(msg) as NSError))
9481006
return
9491007
}
9501008

1009+
self.logger.log("[issam] 2 getStoredKey",
1010+
level: .warning,
1011+
category: .storage,
1012+
description: "")
1013+
9511014
if hasLogins {
9521015
// Since the key data isn't present and we have login records in
9531016
// the database, we both clear the database and reset the key.
9541017
GleanMetrics.LoginsStoreKeyRegeneration.keychainDataLost.record()
1018+
self.logger.log("[issam] 3 getStoredKey",
1019+
level: .warning,
1020+
category: .storage,
1021+
description: "")
9551022
self.resetLoginsAndKey(rustKeys: rustKeys, completion: completion)
9561023
} else {
9571024
// There are no records in the database so we don't need to wipe any
9581025
// existing login records. We just need to create a new key.
9591026
do {
1027+
self.logger.log("[issam] 4 getStoredKey",
1028+
level: .warning,
1029+
category: .storage,
1030+
description: "")
9601031
let key = try rustKeys.createAndStoreKey()
1032+
self.logger.log("[issam] 5 getStoredKey",
1033+
level: .warning,
1034+
category: .storage,
1035+
description: "\(key)")
9611036
completion(.success(key))
9621037
} catch let error as NSError {
9631038
completion(.failure(error))
@@ -998,8 +1073,16 @@ public class RustLogins: LoginsProtocol, KeyManager {
9981073
*/
9991074
public func getKey() throws -> Data {
10001075
let rustKeys = RustLoginEncryptionKeys()
1076+
let key1 = rustKeys.keychain.string(forKey: rustKeys.loginPerFieldKeychainKey)
1077+
self.logger.log("[issam] 0 getKey",
1078+
level: .warning,
1079+
category: .storage,
1080+
description: "\(key1 ?? "empty")")
10011081
let (key, _) = getKeychainData(rustKeys: rustKeys)
1002-
1082+
self.logger.log("[issam] 1 getKey",
1083+
level: .warning,
1084+
category: .storage,
1085+
description: "\(key ?? "empty")")
10031086
guard let keyData = key?.data(using: .utf8) else {
10041087
throw LoginsStoreError.MissingKey
10051088
}

0 commit comments

Comments
 (0)