@@ -224,13 +224,27 @@ public class RustLoginEncryptionKeys {
224224 let canary = try createCanary ( text: canaryPhrase, encryptionKey: secret)
225225
226226 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)
227+ let result = self . keychain. set ( secret,
228+ forKey: self . loginPerFieldKeychainKey,
229+ withAccessibility: MZKeychainItemAccessibility . whenUnlocked)
230+ self . logger. log ( " [issam] 0 createAndStoreKey set result " ,
231+ level: . warning,
232+ category: . storage,
233+ description: " \( result) " )
234+ let result2 = self . keychain. set ( canary,
235+ forKey: self . canaryPhraseKey,
236+ withAccessibility: MZKeychainItemAccessibility . whenUnlocked)
237+ self . logger. log ( " [issam] 00 createAndStoreKey set result " ,
238+ level: . warning,
239+ category: . storage,
240+ description: " \( result2) " )
233241 }
242+
243+ let key = self . keychain. string ( forKey: self . loginPerFieldKeychainKey)
244+ self . logger. log ( " [issam] 1 createAndStoreKey " ,
245+ level: . warning,
246+ category: . storage,
247+ description: " \( key ?? " empty " ) " )
234248 return secret
235249 } catch let err as NSError {
236250 if let loginsStoreError = err as? LoginsStoreError {
@@ -605,9 +619,17 @@ public class RustLogins: LoginsProtocol, KeyManager {
605619 public func addLogin( login: LoginEntry ) -> Deferred < Maybe < String > > {
606620 let deferred = Deferred < Maybe < String > > ( )
607621
622+ self . logger. log ( " [issam] 0 Adding login " ,
623+ level: . warning,
624+ category: . storage,
625+ description: " xxxx " )
608626 queue. async {
609627 guard self . isOpen else {
610628 let error = LoginsStoreError . UnexpectedLoginsApiError ( reason: " Database is closed " )
629+ self . logger. log ( " [issam] 1 Adding login " ,
630+ level: . warning,
631+ category: . storage,
632+ description: error. descriptionValue)
611633
612634 deferred. fill ( Maybe ( failure: error as MaybeErrorType ) )
613635 return
@@ -620,9 +642,17 @@ public class RustLogins: LoginsProtocol, KeyManager {
620642 let id = try self . storage? . add ( login: login) . id
621643 deferred. fill ( Maybe ( success: id!) )
622644 } catch let err as NSError {
645+ self . logger. log ( " [issam] 2 Error adding login " ,
646+ level: . warning,
647+ category: . storage,
648+ description: err. localizedDescription)
623649 deferred. fill ( Maybe ( failure: err) )
624650 }
625651 case . failure( let err) :
652+ self . logger. log ( " [issam] 3 Error adding login " ,
653+ level: . warning,
654+ category: . storage,
655+ description: err. localizedDescription)
626656 deferred. fill ( Maybe ( failure: err) )
627657 }
628658 }
@@ -853,12 +883,25 @@ public class RustLogins: LoginsProtocol, KeyManager {
853883 private func getKeychainData( rustKeys: RustLoginEncryptionKeys ) -> ( String ? , String ? ) {
854884 var keychainData : ( String ? , String ? ) = ( nil , nil )
855885
886+ self . logger. log ( " [issam] 1 getKeychainData " ,
887+ level: . warning,
888+ category: . storage,
889+ description: " " )
890+
856891 DispatchQueue . global ( qos: . background) . sync {
857892 let key = rustKeys. keychain. string ( forKey: rustKeys. loginPerFieldKeychainKey)
858893 let encryptedCanaryPhrase = rustKeys. keychain. string ( forKey: rustKeys. canaryPhraseKey)
859894 keychainData = ( key, encryptedCanaryPhrase)
895+ self . logger. log ( " [issam] 2 getKeychainData " ,
896+ level: . warning,
897+ category: . storage,
898+ description: " \( keychainData. 0 ?? " empty " ) " )
860899 }
861900
901+ self . logger. log ( " [issam] 3 getKeychainData " ,
902+ level: . warning,
903+ category: . storage,
904+ description: " \( keychainData. 0 ?? " empty " ) " )
862905 return keychainData
863906 }
864907
@@ -937,27 +980,52 @@ public class RustLogins: LoginsProtocol, KeyManager {
937980 // call or the key data has been cleared from the keychain.
938981
939982 self . hasSyncedLogins ( ) . upon { result in
983+ self . logger. log ( " [issam] 0 getStoredKey " ,
984+ level: . warning,
985+ category: . storage,
986+ description: " " )
940987 guard result. failureValue == nil else {
941988 completion ( . failure( result. failureValue! as NSError ) )
942989 return
943990 }
991+ self . logger. log ( " [issam] 1 getStoredKey " ,
992+ level: . warning,
993+ category: . storage,
994+ description: " " )
944995
945996 guard let hasLogins = result. successValue else {
946997 let msg = " Failed to verify logins count before attempting to reset key "
947998 completion ( . failure( LoginEncryptionKeyError . dbRecordCountVerificationError ( msg) as NSError ) )
948999 return
9491000 }
9501001
1002+ self . logger. log ( " [issam] 2 getStoredKey " ,
1003+ level: . warning,
1004+ category: . storage,
1005+ description: " " )
1006+
9511007 if hasLogins {
9521008 // Since the key data isn't present and we have login records in
9531009 // the database, we both clear the database and reset the key.
9541010 GleanMetrics . LoginsStoreKeyRegeneration. keychainDataLost. record ( )
1011+ self . logger. log ( " [issam] 3 getStoredKey " ,
1012+ level: . warning,
1013+ category: . storage,
1014+ description: " " )
9551015 self . resetLoginsAndKey ( rustKeys: rustKeys, completion: completion)
9561016 } else {
9571017 // There are no records in the database so we don't need to wipe any
9581018 // existing login records. We just need to create a new key.
9591019 do {
1020+ self . logger. log ( " [issam] 4 getStoredKey " ,
1021+ level: . warning,
1022+ category: . storage,
1023+ description: " " )
9601024 let key = try rustKeys. createAndStoreKey ( )
1025+ self . logger. log ( " [issam] 5 getStoredKey " ,
1026+ level: . warning,
1027+ category: . storage,
1028+ description: " \( key) " )
9611029 completion ( . success( key) )
9621030 } catch let error as NSError {
9631031 completion ( . failure( error) )
@@ -998,8 +1066,16 @@ public class RustLogins: LoginsProtocol, KeyManager {
9981066 */
9991067 public func getKey( ) throws -> Data {
10001068 let rustKeys = RustLoginEncryptionKeys ( )
1069+ let key1 = rustKeys. keychain. string ( forKey: rustKeys. loginPerFieldKeychainKey)
1070+ self . logger. log ( " [issam] 0 getKey " ,
1071+ level: . warning,
1072+ category: . storage,
1073+ description: " \( key1 ?? " empty " ) " )
10011074 let ( key, _) = getKeychainData ( rustKeys: rustKeys)
1002-
1075+ self . logger. log ( " [issam] 1 getKey " ,
1076+ level: . warning,
1077+ category: . storage,
1078+ description: " \( key ?? " empty " ) " )
10031079 guard let keyData = key? . data ( using: . utf8) else {
10041080 throw LoginsStoreError . MissingKey
10051081 }
0 commit comments