From cd299b98b4b6f431a88a310a8222248ba7851fef Mon Sep 17 00:00:00 2001 From: Bruno Virlet Date: Tue, 17 Oct 2017 16:54:55 +0200 Subject: [PATCH] Add ability to specific accessibility on a per-item basis --- Sources/SAMKeychainQuery.h | 3 +++ Sources/SAMKeychainQuery.m | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Sources/SAMKeychainQuery.h b/Sources/SAMKeychainQuery.h index 84658e2..2cb2ba5 100644 --- a/Sources/SAMKeychainQuery.h +++ b/Sources/SAMKeychainQuery.h @@ -53,6 +53,9 @@ typedef NS_ENUM(NSUInteger, SAMKeychainQuerySynchronizationMode) { @property (nonatomic, copy, nullable) NSString *accessGroup; #endif +/** kSecAttrAccessible (only used on iOS) */ +@property (nonatomic, copy, nullable) NSString *accessibility; + #ifdef SAMKEYCHAIN_SYNCHRONIZATION_AVAILABLE /** kSecAttrSynchronizable */ @property (nonatomic) SAMKeychainQuerySynchronizationMode synchronizationMode; diff --git a/Sources/SAMKeychainQuery.m b/Sources/SAMKeychainQuery.m index 00ecb80..e9f5bcc 100644 --- a/Sources/SAMKeychainQuery.m +++ b/Sources/SAMKeychainQuery.m @@ -41,7 +41,7 @@ - (BOOL)save:(NSError *__autoreleasing *)error { query = [[NSMutableDictionary alloc]init]; [query setObject:self.passwordData forKey:(__bridge id)kSecValueData]; #if __IPHONE_4_0 && TARGET_OS_IPHONE - CFTypeRef accessibilityType = [SAMKeychain accessibilityType]; + CFTypeRef accessibilityType = self.accessibility ? (__bridge CFTypeRef)self.accessibility : [SAMKeychain accessibilityType]; if (accessibilityType) { [query setObject:(__bridge id)accessibilityType forKey:(__bridge id)kSecAttrAccessible]; } @@ -54,7 +54,7 @@ - (BOOL)save:(NSError *__autoreleasing *)error { } [query setObject:self.passwordData forKey:(__bridge id)kSecValueData]; #if __IPHONE_4_0 && TARGET_OS_IPHONE - CFTypeRef accessibilityType = [SAMKeychain accessibilityType]; + CFTypeRef accessibilityType = self.accessibility ? (__bridge CFTypeRef)self.accessibility : [SAMKeychain accessibilityType]; if (accessibilityType) { [query setObject:(__bridge id)accessibilityType forKey:(__bridge id)kSecAttrAccessible]; }