123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- //
- // SSKeychain.m
- // SSKeychain
- //
- // Created by Sam Soffes on 5/19/10.
- // Copyright (c) 2010-2014 Sam Soffes. All rights reserved.
- //
- #import "SSKeychain.h"
- #import <WFChatClient/WFCChatClient.h>
- NSString *const kSSKeychainErrorDomain = @"com.samsoffes.sskeychain";
- NSString *const kSSKeychainAccountKey = @"acct";
- NSString *const kSSKeychainCreatedAtKey = @"cdat";
- NSString *const kSSKeychainClassKey = @"labl";
- NSString *const kSSKeychainDescriptionKey = @"desc";
- NSString *const kSSKeychainLabelKey = @"labl";
- NSString *const kSSKeychainLastModifiedKey = @"mdat";
- NSString *const kSSKeychainWhereKey = @"svce";
- #if __IPHONE_4_0 && TARGET_OS_IPHONE
- static CFTypeRef SSKeychainAccessibilityType = NULL;
- #endif
- @implementation SSKeychain
- + (NSString *)accountForWFService {
- NSString *clientId = [[WFCCNetworkService sharedInstance] getClientId];
- return [NSString stringWithFormat:@"WF_Account_%@", clientId];
- }
- + (NSString *)passwordForWFService:(NSString *)serviceName {
- return [self passwordForService:serviceName account:[self accountForWFService] error:nil];
- }
- + (NSString *)passwordForService:(NSString *)serviceName account:(NSString *)account {
- return [self passwordForService:serviceName account:account error:nil];
- }
- + (NSString *)passwordForService:(NSString *)serviceName account:(NSString *)account error:(NSError *__autoreleasing *)error {
- SSKeychainQuery *query = [[SSKeychainQuery alloc] init];
- query.service = serviceName;
- query.account = account;
- [query fetch:error];
- return query.password;
- }
- + (NSData *)passwordDataForService:(NSString *)serviceName account:(NSString *)account {
- return [self passwordDataForService:serviceName account:account error:nil];
- }
- + (NSData *)passwordDataForService:(NSString *)serviceName account:(NSString *)account error:(NSError **)error {
- SSKeychainQuery *query = [[SSKeychainQuery alloc] init];
- query.service = serviceName;
- query.account = account;
- [query fetch:error];
- return query.passwordData;
- }
- + (BOOL)deletePasswordForWFService:(NSString *)serviceName {
- return [self deletePasswordForService:serviceName account:[self accountForWFService] error:nil];
- }
- + (BOOL)deletePasswordForService:(NSString *)serviceName account:(NSString *)account {
- return [self deletePasswordForService:serviceName account:account error:nil];
- }
- + (BOOL)deletePasswordForService:(NSString *)serviceName account:(NSString *)account error:(NSError *__autoreleasing *)error {
- SSKeychainQuery *query = [[SSKeychainQuery alloc] init];
- query.service = serviceName;
- query.account = account;
- return [query deleteItem:error];
- }
- + (BOOL)setPassword:(NSString *)password forWFService:(NSString *)serviceName {
- return [self setPassword:password forService:serviceName account:[self accountForWFService] error:nil];
- }
- + (BOOL)setPassword:(NSString *)password forService:(NSString *)serviceName account:(NSString *)account {
- return [self setPassword:password forService:serviceName account:account error:nil];
- }
- + (BOOL)setPassword:(NSString *)password forService:(NSString *)serviceName account:(NSString *)account error:(NSError *__autoreleasing *)error {
- SSKeychainQuery *query = [[SSKeychainQuery alloc] init];
- query.service = serviceName;
- query.account = account;
- query.password = password;
- return [query save:error];
- }
- + (BOOL)setPasswordData:(NSData *)password forService:(NSString *)serviceName account:(NSString *)account {
- return [self setPasswordData:password forService:serviceName account:account error:nil];
- }
- + (BOOL)setPasswordData:(NSData *)password forService:(NSString *)serviceName account:(NSString *)account error:(NSError **)error {
- SSKeychainQuery *query = [[SSKeychainQuery alloc] init];
- query.service = serviceName;
- query.account = account;
- query.passwordData = password;
- return [query save:error];
- }
- + (NSArray *)allAccounts {
- return [self allAccounts:nil];
- }
- + (NSArray *)allAccounts:(NSError *__autoreleasing *)error {
- return [self accountsForService:nil error:error];
- }
- + (NSArray *)accountsForService:(NSString *)serviceName {
- return [self accountsForService:serviceName error:nil];
- }
- + (NSArray *)accountsForService:(NSString *)serviceName error:(NSError *__autoreleasing *)error {
- SSKeychainQuery *query = [[SSKeychainQuery alloc] init];
- query.service = serviceName;
- return [query fetchAll:error];
- }
- #if __IPHONE_4_0 && TARGET_OS_IPHONE
- + (CFTypeRef)accessibilityType {
- return SSKeychainAccessibilityType;
- }
- + (void)setAccessibilityType:(CFTypeRef)accessibilityType {
- CFRetain(accessibilityType);
- if (SSKeychainAccessibilityType) {
- CFRelease(SSKeychainAccessibilityType);
- }
- SSKeychainAccessibilityType = accessibilityType;
- }
- #endif
- @end
|