Advertisement
Guest User

Untitled

a guest
Oct 10th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.95 KB | None | 0 0
  1. // No previous item found; add the new one.
  2. result = SecItemAdd((CFDictionaryRef)[self dictionaryToSecItemFormat:keychainItemData], NULL);
  3. NSAssert( result == noErr, @"Couldn't add the Keychain Item." );
  4.  
  5. - (void) saveKey:(NSString *)key value:(NSString *)value {
  6. KeychainItemWrapper *keyItem = [[KeychainItemWrapper alloc] initWithIdentifier:key accessGroup:nil];
  7. [keyItem setObject:value forKey:(id)kSecValueData];
  8. [keyItem release];
  9. }
  10.  
  11. <CFBasicHash 0x7231f60 [0x320d380]>{type = mutable dict, count = 5,
  12. entries =>
  13. 2 : <CFString 0x2e6eb98 [0x320d380]>{contents = "labl"} = <CFString 0x2fb018 [0x320d380]>{contents = ""}
  14. 3 : <CFString 0x2e6efb8 [0x320d380]>{contents = "v_Data"} = <CFString 0x727de60 [0x320d380]>{contents = "dit8"}
  15. 4 : <CFString 0x2e6ebc8 [0x320d380]>{contents = "acct"} = <CFString 0x2fb018 [0x320d380]>{contents = ""}
  16. 5 : <CFString 0x2e6eb58 [0x320d380]>{contents = "desc"} = <CFString 0x2fb018 [0x320d380]>{contents = ""}
  17. 6 : <CFString 0x2e6ebe8 [0x320d380]>{contents = "gena"} = <CFString 0x2ffd08 [0x320d380]>{contents = "userCode"}
  18. }
  19.  
  20. [self.keychainItemWrapper setObject:@"MY_APP_CREDENTIALS" forKey:(id)kSecAttrService];
  21. //@"MY_APP_CREDENTIALS" can be any string.
  22.  
  23. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
  24. //there will be some standard code here.
  25. KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"MY_APP_CREDENTIALS" accessGroup:nil];
  26. self.keychainWrapper = wrapper;
  27. [self.keychainWrapper setObject:@"MYOBJECT" forKey:(id)kSecAttrService];
  28. [wrapper release];
  29. }
  30.  
  31. [self.wrapper setObject:txtUserName.text forKey:(id)kSecAttrAccount];
  32.  
  33. // To store data
  34. NSError *error = nil;
  35. [SFHFKeychainUtils storeUsername:username andPassword:password forServiceName:kStoredData updateExisting:YES error:&error];
  36.  
  37. // To retrieve data
  38. NSString *password = [SFHFKeychainUtils getPasswordForUsername:username andServiceName:kStoredData error:&error];
  39.  
  40. // To delete data from keychain
  41. [SFHFKeychainUtils deleteItemForUsername:username andServiceName:kStoredData error:&error];
  42.  
  43. + (KeychainItemWrapper*) keyChainWrapperForKeyID: (NSString*) keyID
  44. {
  45. static dispatch_once_t onceToken = 0;
  46. static NSMutableDictionary *rfcuKeyChains = nil;
  47. dispatch_once(&onceToken, ^{
  48. rfcuKeyChains = [NSMutableDictionary new];
  49. });
  50.  
  51. KeychainItemWrapper *keychain = nil;
  52. @synchronized (rfcuKeyChains)
  53. {
  54. keychain = [rfcuKeyChains objectForKey: keyID];
  55. if (keychain == nil)
  56. {
  57. keychain = [[KeychainItemWrapper alloc] initWithIdentifier: keyID accessGroup: nil];
  58. [rfcuKeyChains setObject: keychain forKey: keyID];
  59. }
  60. }
  61.  
  62. return keychain;
  63. }
  64.  
  65. KeychainItemWrapper *keychain = [RFCUtils keyChainWrapperForKeyID: keyID];
  66. NSString *firstLaunch = [keychain objectForKey: (__bridge id)(kSecAttrAccount)];
  67. if (firstLaunch == nil)
  68. {
  69. [keychain setObject: MY_APP_KEY forKey: (__bridge id)(kSecAttrAccount)];
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement