Skip to content
This repository has been archived by the owner on Jun 16, 2020. It is now read-only.

Secure your NSUserDefaults just by one line of code. Simple usage / strong encryption protection / maximum productivity

License

Notifications You must be signed in to change notification settings

haikieu/NSUserDefaults-SevenSecurityLayers

Repository files navigation

NSUserDefaults+SevenSecurityLayers.h (Obsoleted, this is no longer maintained)

  • A category which provides an encryption layer for NSUserDefaults to securely save data .
  • Using strong AES 356-bit encryption

####Benefit:

* Secure user data just by one line of code.
* Support obfuscating your key in binary source
* Able to save data without encryption
* Enable to handle exceptional case via built-in NOTIFICATION
* Enable using standardUserDefaults as well as securedUserDefaults parallelly

Make donation for Hai Kieu's github


How to use

Note: Remember to install dependency first


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];`
    

Supported NOTIFICATION Events

  • NOTIFICATION_CANNOT_RETRIEVE_ENCRYPTED_DATA
  • NOTIFICATION_CANNOT_STORE_ENCRYPTED_DATA
  • NOTIFICATION_SECRET_KEY_NOT_SET
  • NOTIFICATION_STORED_DATA_HAS_BEEN_VIOLATED

Supported Encryption Types

Seven Security Layers Solution supports the following property types:

  • NSInteger
  • NSString
  • NSArray
  • string+array
  • NSDictionary
  • NSURL
  • NSData
  • BOOL
  • float
  • double

Contact

Email: haikieu2907@gmail.com

Make donation for Hai Kieu's github

###Thanks to

MIT License

###Dependencies

###Dependencies Installation

  1. git:
$ git clone git://github.com/kelp404/CocoaSecurity.git
$ cd CocoaSecurity
$ git submodule update --init
  1. CocoadPods:
    add Podfile in your project path
platform :ios
pod 'CocoaSecurity'
$ pod install

About

Secure your NSUserDefaults just by one line of code. Simple usage / strong encryption protection / maximum productivity

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published