KeyStorage 0.2.1

KeyStorage 0.2.1

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2016年12月
SwiftSwift 版本3.0
SPM支持 SPM

Ben Bahrenburg 维护。



KeyStorage

KeyStorage 是一个用 Swift 编写的简单安全的密钥持久化库。使用 Keychain 或 NSUserDefaults 快速、简单并安全地持久化密码、首选项和其他键信息。

功能

  • 对 Keychain 或 NSUserDefaults 的强类型持久化
  • 内置 AES 256 加密 [正在开发中]
  • 可扩展 - 添加新的存储或加密提供程序
  • Keychain 帮助程序以便查找 AccessGroup 信息

要求

  • Xcode 8.2 或更高版本
  • Swift 3.0

安装

KeyStorage 可以通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile 中

pod "KeyStorage"

使用方法

KeyStorage 有五个主要类

  1. KeyStorage - 所有存储提供程序都必须遵守的协议
  2. KeyStorageCrypter - 用于加密和解密键值协议
  3. KeyStorageKeyChainProvider - KeyStorage 协议的 Keychain 实现
  4. KeyStoreDefaultsProvider - KeyStorage 协议的 NSUserDefaults 实现
  5. KeychainHelpers - 用于与 iOS Keychain 一起工作的工具

保存选项

每个 KeyStorage 提供程序都有各种类型安全的选项来保存键信息。请访问 wiki 获取更多详情。

返回选项

每个 KeyStorage 提供程序都有各种类型安全的选项来读取键信息。请访问 wiki 获取更多详情。

操作/辅助程序

KeyStorage 提供了一些方法,以帮助您与 StorageProvders 一起工作。

exists - 返回一个布尔值,指明指定的键是否存在

let doesExist = keyStoreProvider.exists(forKey: "Hello")

removeKey - 根据指定键删除存储的值

let success = keyStoreProvider.removeKey(forKey: "Hello")
print("was success? \(success)")

removeAllKeys - 删除 KeyStorage 提供者的所有存储值

let success = keyStoreProvider.removeAllKeys()
print("was success? \(success)")

存储提供者

KeyStoreDefaultsProvider

KeyStoreDefaultsProvider 存储提供者用于管理对 NSUserDefaults 的持久化。

KeyStoreDefaultsProvider - 创建

可以使用以下可选参数创建 KeyStoreDefaultsProvider。

suiteName : 字符串

指定要使用的应用组名称。

let provider = KeyStoreDefaultsProvider(suiteName: "MyAppGroup")

cryptoProvider : KeyStorageCrypter

用作加密和解密键值的加密提供者。

let provider = KeyStoreDefaultsProvider(cryptoProvider: myCryptoProvider)

组合示例

如果您希望使用加密提供者并实现应用组共享,可以同时指定它们。

let provider = KeyStoreDefaultsProvider(suiteName: "MyAppGroup", cryptoProvider: myCryptoProvider)

KeyStorageKeyChainProvider

The KeyStorageKeyChainProvider storage provider manages persistance to iOS Keychain.

KeyStorageKeyChainProvider - 创建

可以使用以下可选参数创建 KeyStorageKeyChainProvider。

serviceName : 字符串

用于标识存储在 Keychain 中的键值的服务名称。

let provider = KeyStorageKeyChainProvider(serviceName: "myApp")

accessGroup : 字符串

用于标识存储在 Keychain 中的键值的 Keychain 访问组。如果您正在使用 Keychain 共享,则需要实现此功能。

let provider = KeyStorageKeyChainProvider(accessGroup: "myApp")

cryptoProvider : KeyStorageCrypter

用作加密和解密键值的加密提供者。

let provider = KeyStorageKeyChainProvider(cryptoProvider: myCryptoProvider)

accessible : KeyChainInfo.accessibleOption

Keychain 中值的可访问级别。有关详细信息,请参阅 Keychain 文档此处

let provider = KeyStorageKeyChainProvider(accessible: .afterFirstUnlock)

组合示例

根据需要组合以上所有选项。以下是一个完整实现的示例。

let provider = KeyStorageKeyChainProvider(serviceName: "myApp", accessGroup: "my-awesome-group", accessible: .afterFirstUnlockThisDeviceOnly, cryptoProvider: myCryptoProvider)

KeychainHelpers

获取 Keychain 访问组信息

通过编程查找应用程序的 App ID 前缀和默认 Keychain 组。

//Get Information 
let info = KeychainHelpers.getAccessGroupInfo()

print("App ID Prefix \(info.prefix)")
print("KeyChain Group \(info.keyChainGroup)")
print("Raw kSecAttrAccessGroup value \(info.rawValue)")

作者

Ben Bahrenburg,@bencoding

许可

KeyStorage 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。