Nenhuma descrição

Evgenii Neumerzhitckii 54734a59c9 Update podspec version 10 anos atrás
Demo f92e44494c Make methods non-class. Add keychain prefix. 10 anos atrás
Distrib 3e762692b4 Concatenate files 10 anos atrás
KeychainSwift 8213322874 Added OSX and watchOS schemes 10 anos atrás
KeychainSwift.xcodeproj 54734a59c9 Update podspec version 10 anos atrás
KeychainSwiftTests f92e44494c Make methods non-class. Add keychain prefix. 10 anos atrás
graphics dd7aab8d45 Readme 10 anos atrás
scripts e1bdf37746 Concatenate swift files in a separate target 10 anos atrás
.gitignore 942adf8e3a Restructure project 10 anos atrás
KeychainSwift.podspec 54734a59c9 Update podspec version 10 anos atrás
KeychainSwiftDistrib.swift e1bdf37746 Concatenate swift files in a separate target 10 anos atrás
LICENSE 942adf8e3a Restructure project 10 anos atrás
README.md cd47f80cf4 Add the list of alternative libraries 10 anos atrás

README.md

Helper functions for storing text in Keychain for iOS, OS X and WatchOS

Carthage compatible CocoaPods Version License Platform

This is a collection of helper functions for saving text and data in the Keychain. As you probably noticed Apple's keychain API is a bit verbose. This library was designed to provide shorter syntax for accomplishing a simple task: reading/writing text values for specified keys.

What's Keychain?

Keychain is a secure storage. You can store all kind of sensitive data in it: user passwords, credit card numbers, secret tokens etc. Once stored in Keychain this information is only available to your app, other apps can't see it. Besides that, operating system makes sure this information is kept and processed securely. For example, text stored in Keychain can not be extracted from iPhone backup or from its file system. Apple recommends storing only small amount of data in the Keychain. If you need to secure something big you can encrypt it manually, save to a file and store the key in the Keychain.

Setup

There are three ways you can add KeychainSwift to your Xcode project.

Add source (iOS 7+)

Simply add KeychainSwiftDistrib.swift file into your Xcode project.

Setup with Carthage (iOS 8+)

Alternatively, add github "exchangegroup/keychain-swift" ~> 3.0 to your Cartfile and run carthage update.

Setup with CocoaPods (iOS 8+)

If you are using CocoaPods add this text to your Podfile and run pod install.

use_frameworks!
pod 'KeychainSwift', '~> 3.0'

Here is how to use KeychainSwift in a WatchKit extension with CocoaPods.

use_frameworks!

target 'YourWatchApp Extension Target Name' do
  platform :watchos, '2.0'
  pod 'KeychainSwift', '~> 3.0'
end

Setup in Swift 1.2 project

Use the previous version of the library.

Usage

Add import KeychainSwift to your source code if you used Carthage or CocoaPods setup methods.

let keychain = KeychainSwift()

keychain.set("hello world", forKey: "my key")

keychain.get("my key")

keychain.delete("my key")

keychain.clear() // delete everything from app's Keychain

In addition to strings one can set/get NSData objects.

let keychain = KeychainSwift()

keychain.set(nsDataObject, forKey: "my key")

keychain.getData("my key")

Advanced options

Keychain item access

Use withAccess parameter to specify the security level of the keychain storage. By default the .AccessibleWhenUnlocked option is used. It is one of the most restrictive options and provides good data protection.

KeychainSwift().set("Hello world", forKey: "key 1", withAccess: .AccessibleWhenUnlocked)

You can use .AccessibleAfterFirstUnlock if you need your app to access the keychain item while in the background. It may be needed for the Apple Watch apps. Note that it is less secure than the .AccessibleWhenUnlocked option.

See the list of all available access options.

Setting key prefix

One can pass a keyPrefix argument when initializing a KeychainSwift object. The string passed in keyPrefix argument will be used as a prefix to all the keys used in set, get, getData and delete methods. I use the prefixed keychain in tests. This prevents the tests from changing the Keychain keys that are used when the app is launched manually.

Note that clear method still clears everything from the Keychain regardless of the prefix used.

let keychain = KeychainSwift(keyPrefix: "myTestKey_")
keychain.set("hello world", forKey: "hello")
// Value will be stored under "myTestKey_hello" key

Demo app

Sacing and reading text from Keychaing in iOS and Swift

Alternative solutions

Here are some other Keychain libraries for iOS.

Credits

License

Keychain Swift is released under the MIT License.