123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281 |
- //
- // UICKeyChainStore.h
- // UICKeyChainStore
- //
- // Created by Kishikawa Katsumi on 11/11/20.
- // Copyright (c) 2011 Kishikawa Katsumi. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- #if !__has_feature(nullability)
- #define NS_ASSUME_NONNULL_BEGIN
- #define NS_ASSUME_NONNULL_END
- #define nullable
- #define nonnull
- #define null_unspecified
- #define null_resettable
- #define __nullable
- #define __nonnull
- #define __null_unspecified
- #endif
- #if __has_extension(objc_generics)
- #define UIC_KEY_TYPE <NSString *>
- #define UIC_CREDENTIAL_TYPE <NSDictionary <NSString *, NSString *>*>
- #else
- #define UIC_KEY_TYPE
- #define UIC_CREDENTIAL_TYPE
- #endif
- NS_ASSUME_NONNULL_BEGIN
- extern NSString * const UICKeyChainStoreErrorDomain;
- typedef NS_ENUM(NSInteger, UICKeyChainStoreErrorCode) {
- UICKeyChainStoreErrorInvalidArguments = 1,
- };
- typedef NS_ENUM(NSInteger, UICKeyChainStoreItemClass) {
- UICKeyChainStoreItemClassGenericPassword = 1,
- UICKeyChainStoreItemClassInternetPassword,
- };
- typedef NS_ENUM(NSInteger, UICKeyChainStoreProtocolType) {
- UICKeyChainStoreProtocolTypeFTP = 1,
- UICKeyChainStoreProtocolTypeFTPAccount,
- UICKeyChainStoreProtocolTypeHTTP,
- UICKeyChainStoreProtocolTypeIRC,
- UICKeyChainStoreProtocolTypeNNTP,
- UICKeyChainStoreProtocolTypePOP3,
- UICKeyChainStoreProtocolTypeSMTP,
- UICKeyChainStoreProtocolTypeSOCKS,
- UICKeyChainStoreProtocolTypeIMAP,
- UICKeyChainStoreProtocolTypeLDAP,
- UICKeyChainStoreProtocolTypeAppleTalk,
- UICKeyChainStoreProtocolTypeAFP,
- UICKeyChainStoreProtocolTypeTelnet,
- UICKeyChainStoreProtocolTypeSSH,
- UICKeyChainStoreProtocolTypeFTPS,
- UICKeyChainStoreProtocolTypeHTTPS,
- UICKeyChainStoreProtocolTypeHTTPProxy,
- UICKeyChainStoreProtocolTypeHTTPSProxy,
- UICKeyChainStoreProtocolTypeFTPProxy,
- UICKeyChainStoreProtocolTypeSMB,
- UICKeyChainStoreProtocolTypeRTSP,
- UICKeyChainStoreProtocolTypeRTSPProxy,
- UICKeyChainStoreProtocolTypeDAAP,
- UICKeyChainStoreProtocolTypeEPPC,
- UICKeyChainStoreProtocolTypeNNTPS,
- UICKeyChainStoreProtocolTypeLDAPS,
- UICKeyChainStoreProtocolTypeTelnetS,
- UICKeyChainStoreProtocolTypeIRCS,
- UICKeyChainStoreProtocolTypePOP3S,
- };
- typedef NS_ENUM(NSInteger, UICKeyChainStoreAuthenticationType) {
- UICKeyChainStoreAuthenticationTypeNTLM = 1,
- UICKeyChainStoreAuthenticationTypeMSN,
- UICKeyChainStoreAuthenticationTypeDPA,
- UICKeyChainStoreAuthenticationTypeRPA,
- UICKeyChainStoreAuthenticationTypeHTTPBasic,
- UICKeyChainStoreAuthenticationTypeHTTPDigest,
- UICKeyChainStoreAuthenticationTypeHTMLForm,
- UICKeyChainStoreAuthenticationTypeDefault,
- };
- typedef NS_ENUM(NSInteger, UICKeyChainStoreAccessibility) {
- UICKeyChainStoreAccessibilityWhenUnlocked = 1,
- UICKeyChainStoreAccessibilityAfterFirstUnlock,
- UICKeyChainStoreAccessibilityAlways,
- UICKeyChainStoreAccessibilityWhenPasscodeSetThisDeviceOnly
- __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0),
- UICKeyChainStoreAccessibilityWhenUnlockedThisDeviceOnly,
- UICKeyChainStoreAccessibilityAfterFirstUnlockThisDeviceOnly,
- UICKeyChainStoreAccessibilityAlwaysThisDeviceOnly,
- }
- __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_4_0);
- typedef NS_ENUM(NSInteger, UICKeyChainStoreAuthenticationPolicy) {
- UICKeyChainStoreAuthenticationPolicyUserPresence = kSecAccessControlUserPresence,
- };
- @interface UICKeyChainStore : NSObject
- @property (nonatomic, readonly) UICKeyChainStoreItemClass itemClass;
- @property (nonatomic, readonly, nullable) NSString *service;
- @property (nonatomic, readonly, nullable) NSString *accessGroup;
- @property (nonatomic, readonly, nullable) NSURL *server;
- @property (nonatomic, readonly) UICKeyChainStoreProtocolType protocolType;
- @property (nonatomic, readonly) UICKeyChainStoreAuthenticationType authenticationType;
- @property (nonatomic) UICKeyChainStoreAccessibility accessibility;
- @property (nonatomic, readonly) UICKeyChainStoreAuthenticationPolicy authenticationPolicy
- __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
- @property (nonatomic) BOOL synchronizable;
- @property (nonatomic, nullable) NSString *authenticationPrompt
- __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);
- @property (nonatomic, readonly, nullable) NSArray UIC_KEY_TYPE *allKeys;
- @property (nonatomic, readonly, nullable) NSArray *allItems;
- + (NSString *)defaultService;
- + (void)setDefaultService:(NSString *)defaultService;
- + (UICKeyChainStore *)keyChainStore;
- + (UICKeyChainStore *)keyChainStoreWithService:(nullable NSString *)service;
- + (UICKeyChainStore *)keyChainStoreWithService:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
- + (UICKeyChainStore *)keyChainStoreWithServer:(NSURL *)server protocolType:(UICKeyChainStoreProtocolType)protocolType;
- + (UICKeyChainStore *)keyChainStoreWithServer:(NSURL *)server protocolType:(UICKeyChainStoreProtocolType)protocolType authenticationType:(UICKeyChainStoreAuthenticationType)authenticationType;
- - (instancetype)init;
- - (instancetype)initWithService:(nullable NSString *)service;
- - (instancetype)initWithService:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
- - (instancetype)initWithServer:(NSURL *)server protocolType:(UICKeyChainStoreProtocolType)protocolType;
- - (instancetype)initWithServer:(NSURL *)server protocolType:(UICKeyChainStoreProtocolType)protocolType authenticationType:(UICKeyChainStoreAuthenticationType)authenticationType;
- + (nullable NSString *)stringForKey:(NSString *)key;
- + (nullable NSString *)stringForKey:(NSString *)key service:(nullable NSString *)service;
- + (nullable NSString *)stringForKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
- + (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key;
- + (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service;
- + (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
- + (nullable NSData *)dataForKey:(NSString *)key;
- + (nullable NSData *)dataForKey:(NSString *)key service:(nullable NSString *)service;
- + (nullable NSData *)dataForKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
- + (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key;
- + (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service;
- + (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
- - (BOOL)contains:(nullable NSString *)key;
- - (BOOL)setString:(nullable NSString *)string forKey:(nullable NSString *)key;
- - (BOOL)setString:(nullable NSString *)string forKey:(nullable NSString *)key label:(nullable NSString *)label comment:(nullable NSString *)comment;
- - (nullable NSString *)stringForKey:(NSString *)key;
- - (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key;
- - (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key label:(nullable NSString *)label comment:(nullable NSString *)comment;
- - (nullable NSData *)dataForKey:(NSString *)key;
- + (BOOL)removeItemForKey:(NSString *)key;
- + (BOOL)removeItemForKey:(NSString *)key service:(nullable NSString *)service;
- + (BOOL)removeItemForKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
- + (BOOL)removeAllItems;
- + (BOOL)removeAllItemsForService:(nullable NSString *)service;
- + (BOOL)removeAllItemsForService:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup;
- - (BOOL)removeItemForKey:(NSString *)key;
- - (BOOL)removeAllItems;
- - (nullable NSString *)objectForKeyedSubscript:(NSString<NSCopying> *)key;
- - (void)setObject:(nullable NSString *)obj forKeyedSubscript:(NSString<NSCopying> *)key;
- + (nullable NSArray UIC_KEY_TYPE *)allKeysWithItemClass:(UICKeyChainStoreItemClass)itemClass;
- - (nullable NSArray UIC_KEY_TYPE *)allKeys;
- + (nullable NSArray *)allItemsWithItemClass:(UICKeyChainStoreItemClass)itemClass;
- - (nullable NSArray *)allItems;
- - (void)setAccessibility:(UICKeyChainStoreAccessibility)accessibility authenticationPolicy:(UICKeyChainStoreAuthenticationPolicy)authenticationPolicy
- __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
- #if TARGET_OS_IOS
- - (void)sharedPasswordWithCompletion:(nullable void (^)(NSString * __nullable account, NSString * __nullable password, NSError * __nullable error))completion;
- - (void)sharedPasswordForAccount:(NSString *)account completion:(nullable void (^)(NSString * __nullable password, NSError * __nullable error))completion;
- - (void)setSharedPassword:(nullable NSString *)password forAccount:(NSString *)account completion:(nullable void (^)(NSError * __nullable error))completion;
- - (void)removeSharedPasswordForAccount:(NSString *)account completion:(nullable void (^)(NSError * __nullable error))completion;
- + (void)requestSharedWebCredentialWithCompletion:(nullable void (^)(NSArray UIC_CREDENTIAL_TYPE *credentials, NSError * __nullable error))completion;
- + (void)requestSharedWebCredentialForDomain:(nullable NSString *)domain account:(nullable NSString *)account completion:(nullable void (^)(NSArray UIC_CREDENTIAL_TYPE *credentials, NSError * __nullable error))completion;
- + (NSString *)generatePassword;
- #endif
- @end
- @interface UICKeyChainStore (ErrorHandling)
- + (nullable NSString *)stringForKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (nullable NSString *)stringForKey:(NSString *)key service:(nullable NSString *)service error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (nullable NSString *)stringForKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (nullable NSData *)dataForKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (nullable NSData *)dataForKey:(NSString *)key service:(nullable NSString *)service error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (nullable NSData *)dataForKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup error:(NSError * __nullable __autoreleasing * __nullable)error;
- - (BOOL)setString:(nullable NSString *)string forKey:(NSString * )key error:(NSError * __nullable __autoreleasing * __nullable)error;
- - (BOOL)setString:(nullable NSString *)string forKey:(NSString * )key label:(nullable NSString *)label comment:(nullable NSString *)comment error:(NSError * __nullable __autoreleasing * __nullable)error;
- - (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
- - (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key label:(nullable NSString *)label comment:(nullable NSString *)comment error:(NSError * __nullable __autoreleasing * __nullable)error;
- - (nullable NSString *)stringForKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
- - (nullable NSData *)dataForKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)removeItemForKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)removeItemForKey:(NSString *)key service:(nullable NSString *)service error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)removeItemForKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)removeAllItemsWithError:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)removeAllItemsForService:(nullable NSString *)service error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)removeAllItemsForService:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup error:(NSError * __nullable __autoreleasing * __nullable)error;
- - (BOOL)removeItemForKey:(NSString *)key error:(NSError * __nullable __autoreleasing * __nullable)error;
- - (BOOL)removeAllItemsWithError:(NSError * __nullable __autoreleasing * __nullable)error;
- @end
- @interface UICKeyChainStore (ForwardCompatibility)
- + (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute;
- + (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service genericAttribute:(nullable id)genericAttribute;
- + (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup genericAttribute:(nullable id)genericAttribute;
- + (BOOL)setString:(nullable NSString *)value forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute;
- + (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service genericAttribute:(nullable id)genericAttribute;
- + (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
- + (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup genericAttribute:(nullable id)genericAttribute;
- + (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key service:(nullable NSString *)service accessGroup:(nullable NSString *)accessGroup genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
- - (BOOL)setString:(nullable NSString *)string forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute;
- - (BOOL)setString:(nullable NSString *)string forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
- - (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute;
- - (BOOL)setData:(nullable NSData *)data forKey:(NSString *)key genericAttribute:(nullable id)genericAttribute error:(NSError * __nullable __autoreleasing * __nullable)error;
- @end
- @interface UICKeyChainStore (Deprecation)
- - (void)synchronize __attribute__((deprecated("calling this method is no longer required")));
- - (BOOL)synchronizeWithError:(NSError * __nullable __autoreleasing * __nullable)error __attribute__((deprecated("calling this method is no longer required")));
- @end
- NS_ASSUME_NONNULL_END
|