Tech Leads: Repository archived due to inactivity in more than 6 months. Please remember to add a CODEOWNERS file to the root of the repository when unarchiving.
- A category which provides an encryption layer for NSUserDefaults to securely save data .
 - Using strong AES 356-bit encryption
 
####Benefit:
Note: Remember to install dependency first
- CocoaSecurity 1.2.4 (https://github.com/kelp404/CocoaSecurity)
 
In the implementation file, import NSUserDefaults+SevenSecurityLayers.h
#import "NSUserDefaults+SevenSecurityLayers.h"Initialize a secured UserDefaults with a secret key.
//Recommend: Should put the secret key in implementation file to secure your key.
//Warning: Must specify the secret key before using or you get **Exception**
NSUserDefault *pref = [[NSUserDefault securedUserDefaults] setSecretKey:@"Your secret key"];
// >>> DONE! That's it, a secured storage has been created already for you to save any data later. <<<
//Demonstrate saving data
[pref setBool:YES forKey:@"DataIsSecured"];
[pref setString:@"AES 356-bit" forKey:@"KindOfEncryption"];
[pref setString:@"v1.2.0 available" forKey:@"ObfuscateSecretKey"];
[pref setString:@"Able to save data without encryption" forKey:@"KeepOrigin"];
...
[pref synchronize];
//Demonstrate retrieving data
bool yourBool = [pref boolForKey:@"DataIsSecured"];
NSString * yourString = [pref stringForKey:@"KindOfEncrytion"];
...
###Advanced usage
- 
v1.2.0 available
 - 
Obfuscate your secret key
Shouldn't use this
NSString * theSecretKey = @"putYourKeyHere";Try this way 👉
NSString * theSecretKey = @"".p.u.t.Y.o.u.r.K.e.y.H.e.r.e; - 
Store data without encryption
`[pref setObject:@"yourValue" forKey:@"yourKey.nonSecured"];` Or `[pref setObject:@"yourValue" forKey:@"yourKey".nonSecured];` - 
Migrate data to secured storage
`[NSUserDefaults migrate:[NSUserDefaults standardUserDefaults] to:pref clearSource:YES];` 
NOTIFICATION_CANNOT_RETRIEVE_ENCRYPTED_DATANOTIFICATION_CANNOT_STORE_ENCRYPTED_DATANOTIFICATION_SECRET_KEY_NOT_SETNOTIFICATION_STORED_DATA_HAS_BEEN_VIOLATED
Seven Security Layers Solution supports the following property types:
- NSInteger
 - NSString
 - NSArray
 - string+array
 - NSDictionary
 - NSURL
 - NSData
 - BOOL
 - float
 - double
 
Email: [email protected]
###Thanks to
- https://github.com/nielsmouthaan/SecureNSUserDefaults
 - https://github.com/UrbanApps/UAObfuscatedString
 
###Dependencies
- CocoaSecurity 1.2.4 (https://github.com/kelp404/CocoaSecurity)
 
###Dependencies Installation
- git:
 
$ git clone git://github.com/kelp404/CocoaSecurity.git
$ cd CocoaSecurity
$ git submodule update --init
- CocoadPods:
addPodfilein your project path 
platform :ios
pod 'CocoaSecurity'
$ pod install
