Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // No previous item found; add the new one.
- result = SecItemAdd((CFDictionaryRef)[self dictionaryToSecItemFormat:keychainItemData], NULL);
- NSAssert( result == noErr, @"Couldn't add the Keychain Item." );
- - (void) saveKey:(NSString *)key value:(NSString *)value {
- KeychainItemWrapper *keyItem = [[KeychainItemWrapper alloc] initWithIdentifier:key accessGroup:nil];
- [keyItem setObject:value forKey:(id)kSecValueData];
- [keyItem release];
- }
- <CFBasicHash 0x7231f60 [0x320d380]>{type = mutable dict, count = 5,
- entries =>
- 2 : <CFString 0x2e6eb98 [0x320d380]>{contents = "labl"} = <CFString 0x2fb018 [0x320d380]>{contents = ""}
- 3 : <CFString 0x2e6efb8 [0x320d380]>{contents = "v_Data"} = <CFString 0x727de60 [0x320d380]>{contents = "dit8"}
- 4 : <CFString 0x2e6ebc8 [0x320d380]>{contents = "acct"} = <CFString 0x2fb018 [0x320d380]>{contents = ""}
- 5 : <CFString 0x2e6eb58 [0x320d380]>{contents = "desc"} = <CFString 0x2fb018 [0x320d380]>{contents = ""}
- 6 : <CFString 0x2e6ebe8 [0x320d380]>{contents = "gena"} = <CFString 0x2ffd08 [0x320d380]>{contents = "userCode"}
- }
- [self.keychainItemWrapper setObject:@"MY_APP_CREDENTIALS" forKey:(id)kSecAttrService];
- //@"MY_APP_CREDENTIALS" can be any string.
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
- //there will be some standard code here.
- KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"MY_APP_CREDENTIALS" accessGroup:nil];
- self.keychainWrapper = wrapper;
- [self.keychainWrapper setObject:@"MYOBJECT" forKey:(id)kSecAttrService];
- [wrapper release];
- }
- [self.wrapper setObject:txtUserName.text forKey:(id)kSecAttrAccount];
- // To store data
- NSError *error = nil;
- [SFHFKeychainUtils storeUsername:username andPassword:password forServiceName:kStoredData updateExisting:YES error:&error];
- // To retrieve data
- NSString *password = [SFHFKeychainUtils getPasswordForUsername:username andServiceName:kStoredData error:&error];
- // To delete data from keychain
- [SFHFKeychainUtils deleteItemForUsername:username andServiceName:kStoredData error:&error];
- + (KeychainItemWrapper*) keyChainWrapperForKeyID: (NSString*) keyID
- {
- static dispatch_once_t onceToken = 0;
- static NSMutableDictionary *rfcuKeyChains = nil;
- dispatch_once(&onceToken, ^{
- rfcuKeyChains = [NSMutableDictionary new];
- });
- KeychainItemWrapper *keychain = nil;
- @synchronized (rfcuKeyChains)
- {
- keychain = [rfcuKeyChains objectForKey: keyID];
- if (keychain == nil)
- {
- keychain = [[KeychainItemWrapper alloc] initWithIdentifier: keyID accessGroup: nil];
- [rfcuKeyChains setObject: keychain forKey: keyID];
- }
- }
- return keychain;
- }
- KeychainItemWrapper *keychain = [RFCUtils keyChainWrapperForKeyID: keyID];
- NSString *firstLaunch = [keychain objectForKey: (__bridge id)(kSecAttrAccount)];
- if (firstLaunch == nil)
- {
- [keychain setObject: MY_APP_KEY forKey: (__bridge id)(kSecAttrAccount)];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement