From 535241ef9e78af3a5bb59c5648427ecc360fab9b Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 31 Aug 2018 13:06:24 -0400 Subject: [PATCH] Add test app context; use mock "document" and "shared data container" directories in tests, use mock keychain storage in tests. --- SignalServiceKit/src/Storage/OWSStorage.m | 36 ++++++++++++++++++----- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/SignalServiceKit/src/Storage/OWSStorage.m b/SignalServiceKit/src/Storage/OWSStorage.m index 2d8ed5a45..3439e3741 100644 --- a/SignalServiceKit/src/Storage/OWSStorage.m +++ b/SignalServiceKit/src/Storage/OWSStorage.m @@ -13,7 +13,7 @@ #import "OWSStorage+Subclass.h" #import "TSAttachmentStream.h" #import -#import +#import #import #import #import @@ -750,7 +750,13 @@ NSString *const kNSUserDefaults_DatabaseExtensionVersionMap = @"kNSUserDefaults_ { OWSLogInfo(@"removing legacy passphrase"); - [SAMKeychain deletePasswordForService:keychainService account:keychainDBLegacyPassphrase]; + NSError *_Nullable error; + BOOL result = [CurrentAppContext().keychainStorage removeWithKey:keychainDBLegacyPassphrase + service:keychainService + error:&error]; + if (error || !result) { + OWSFailDebug(@"could not remove legacy passphrase."); + } } - (void)ensureDatabaseKeySpecExists @@ -837,8 +843,19 @@ NSString *const kNSUserDefaults_DatabaseExtensionVersionMap = @"kNSUserDefaults_ + (void)deleteDBKeys { - [SAMKeychain deletePasswordForService:keychainService account:keychainDBLegacyPassphrase]; - [SAMKeychain deletePasswordForService:keychainService account:keychainDBCipherKeySpec]; + NSError *_Nullable error; + BOOL result = [CurrentAppContext().keychainStorage removeWithKey:keychainDBLegacyPassphrase + service:keychainService + error:&error]; + if (error || !result) { + OWSFailDebug(@"could not remove legacy passphrase."); + } + result = [CurrentAppContext().keychainStorage removeWithKey:keychainDBCipherKeySpec + service:keychainService + error:&error]; + if (error || !result) { + OWSFailDebug(@"could not remove cipher key spec."); + } } - (unsigned long long)databaseFileSize @@ -861,7 +878,12 @@ NSString *const kNSUserDefaults_DatabaseExtensionVersionMap = @"kNSUserDefaults_ OWSAssertDebug(keychainKey.length > 0); OWSAssertDebug(errorHandle); - return [SAMKeychain passwordDataForService:keychainService account:keychainKey error:errorHandle]; + NSData *_Nullable data = + [CurrentAppContext().keychainStorage dataForKey:keychainKey service:keychainService error:errorHandle]; + if (*errorHandle || !data) { + OWSLogWarn(@"could not load keychain value."); + } + return data; } + (void)storeKeyChainValue:(NSData *)data keychainKey:(NSString *)keychainKey @@ -870,8 +892,8 @@ NSString *const kNSUserDefaults_DatabaseExtensionVersionMap = @"kNSUserDefaults_ OWSAssertDebug(data.length > 0); NSError *error; - [SAMKeychain setAccessibilityType:kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly]; - BOOL success = [SAMKeychain setPasswordData:data forService:keychainService account:keychainKey error:&error]; + BOOL success = + [CurrentAppContext().keychainStorage setWithData:data forKey:keychainKey service:keychainService error:&error]; if (!success || error) { OWSFailDebug(@"Could not store database metadata"); OWSProdCritical([OWSAnalyticsEvents storageErrorCouldNotStoreKeychainValue]);