mirror of
https://github.com/MacPass/MacPass.git
synced 2025-12-17 13:39:40 +00:00
Added migration to new format of touchId key store
This commit is contained in:
@@ -226,6 +226,7 @@
|
|||||||
if(success) {
|
if(success) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// TODO: clear encryptedKey if password was wrong? Show user feedback?
|
||||||
self.touchIdButton.enabled = NO;
|
self.touchIdButton.enabled = NO;
|
||||||
[self _showError:error];
|
[self _showError:error];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,6 +126,7 @@ NSString *const kMPDepricatedSettingsKeyAutotypeHideAccessibiltyWarning = @"Au
|
|||||||
[self _migrateEntrySearchFlags];
|
[self _migrateEntrySearchFlags];
|
||||||
[self _migrateRememberedKeyFiles];
|
[self _migrateRememberedKeyFiles];
|
||||||
[self _migrateLoadUnsecurePlugins];
|
[self _migrateLoadUnsecurePlugins];
|
||||||
|
[self _migrateTouchIdKeyStore];
|
||||||
[self _removeDeprecatedValues];
|
[self _removeDeprecatedValues];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -311,7 +312,27 @@ return deprecatedSettings;
|
|||||||
if(oldValue != [[self _standardDefaults][kMPDepricatedSettingsKeyLoadUnsecurePlugins] boolValue]) {
|
if(oldValue != [[self _standardDefaults][kMPDepricatedSettingsKeyLoadUnsecurePlugins] boolValue]) {
|
||||||
[NSUserDefaults.standardUserDefaults setBool:oldValue forKey:kMPSettingsKeyLoadUnsecurePlugins];
|
[NSUserDefaults.standardUserDefaults setBool:oldValue forKey:kMPSettingsKeyLoadUnsecurePlugins];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)_migrateTouchIdKeyStore {
|
||||||
|
// Read keys stored in new format
|
||||||
|
NSMutableDictionary *storedKeys = [[NSUserDefaults.standardUserDefaults dictionaryForKey:kMPSettingsKeyTouchIdEncryptedKeyStore] mutableCopy];
|
||||||
|
NSArray *defaultKeys = [NSUserDefaults.standardUserDefaults dictionaryRepresentation].allKeys;
|
||||||
|
// find all keys in old format
|
||||||
|
for(NSString *key in defaultKeys) {
|
||||||
|
NSString *prefix = [NSString stringWithFormat:kMPSettingsKeyEntryTouchIdDatabaseEncryptedKeyFormat, @""];
|
||||||
|
if([key hasPrefix:prefix]) {
|
||||||
|
// database name was adde
|
||||||
|
NSString *databaseName = [key substringFromIndex:prefix.length];
|
||||||
|
NSData *encryptedKey = [NSUserDefaults.standardUserDefaults dataForKey:key];
|
||||||
|
if(!storedKeys[databaseName] && encryptedKey) {
|
||||||
|
storedKeys[databaseName] = encryptedKey;
|
||||||
|
}
|
||||||
|
[NSUserDefaults.standardUserDefaults removeObjectForKey:key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Put it all back in
|
||||||
|
[NSUserDefaults.standardUserDefaults setObject:storedKeys forKey:kMPSettingsKeyTouchIdEncryptedKeyStore];
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
Reference in New Issue
Block a user