代客可以让你安全地存储在iOS或OS X的钥匙串数据,而无需知道一个关于钥匙串是如何工作的事情。这很容易。我们的承诺。
要在iOS或OS X安装工程代客,与安装的CocoaPods
在iOS上:
platform :ios, '6.0'
pod 'Valet'
在OS X:
platform :osx, '10.10'
pod 'Valet'
迦太基是一个分散的依赖性管理器,建立你的依赖,并为您提供二元框架。
您可以通过安装迦太基自制使用以下命令:
$ brew update
$ brew install carthage
要使用迦太基代客集成到您的Xcode项目,在你指定它Cartfile
:
github "Square/Valet"
运行迦太基
建立框架和拖动内置Valet.framework
到您的Xcode项目。
或者手动签的子模块git的子模块添加git@github.com:方/ Valet.git
,拖动Valet.xcodeproj到您的项目,并添加代客构建依赖。
VALValet *myValet = [[VALValet alloc] initWithIdentifier:@"Druidia" accessibility:VALAccessibilityWhenUnlocked];
要开始安全地存储数据使用代客,您需要与创建VALValet实例:
本实例可用于安全地存储和检索数据,但只有当装置被解锁。
该VALAccessibility枚举是用来确定当你的秘密可以访问。这是一个好主意,用最严格的无障碍可能,这将使您的应用程序的功能。例如,如果您的应用没有在后台运行,你需要确保当手机用解锁只能读的秘密VALAccessibilityWhenUnlocked
或VALAccessibilityWhenUnlockedThisDeviceOnly
。
NSString *const username = @"Skroob";
[myValet setString:@"12345" forKey:username];
NSString *const myLuggageCombination = [myValet stringForKey:username];
代客的用于安全地读取和写入数据的API类似于一个NSMapTable的; 使用-setObject:forKey:
和-setString:forKey:
写对象和-objectForKey:
和-stringForKey:
阅读的对象。用不同类类型创建随从,经由不同的初始值设定,或具有不同的标识符或辅助属性将不能够读取或修改值myValet
。
VALValet *mySharedValet = [[VALValet alloc] initWithSharedAccessGroupIdentifier:@"Druidia" accessibility:VALAccessibilityWhenUnlocked];
这个实例可以被用来存储和跨通过与价值同开发者编写的应用程序安全地检索数据Druidia
下的钥匙链访问组
中的应用程序的主要权利
的文件,当设备解锁。myValet
和mySharedValet
不能读取或修改彼此的价值观,因为两个随从分别用不同的初始化创建的。您可以使用-initWithSharedAccessGroupIdentifier:可访问
任何代客类初始化,以便在由同一个开发者编写应用程序共享的秘密。
VALSynchronizableValet *mySynchronizableValet = [[VALSynchronizableValet alloc] initWithIdentifier:@"Druidia" accessibility:VALAccessibilityWhenUnlocked];
这个实例可以被用来存储和检索,可以通过这个程序在其他设备上登录到同一iCloud帐户使用iCloud的钥匙扣启用被检索的数据。mySynchronizableValet
不能读取或修改值myValet
或mySharedValet
因为mySynchronizableValet
是不同类类型的。如果该设备上未启用iCloud的钥匙扣,秘密仍然可以读取和写入,但不会同步到其他设备。
VALSecureEnclaveValet *mySecureEnclaveValet = [[VALSecureEnclaveValet alloc] initWithIdentifier:@"Druidia" accessControl:VALAccessControlUserPresence];
这个实例可以被用来存储和检索的安全飞地数据(可在iOS 8.0及更高版本和Mac OS 10.11及更高版本)。阅读或在此代客修改项目将要求用户确认其在iOS或输入其设备密码通过触摸ID的存在。如果没有密码设置在设备上,这种情况下将无法访问或存储数据。数据被删除从安全飞地当用户从装置的密码。使用VALSecureEnclaveValet存储的数据是存储在任的iOS或Mac OS数据最安全的方式。
已经使用的钥匙串,不再想维护自己的钥匙扣代码?我们觉得你。这就是为什么我们写-migrateObjectsMatchingQuery:removeOnCompletion:
。这种方法允许您将所有现有的钥匙串项迁移到代客实例一行。只是通过与一个NSDictionarykSecClass
,kSecAttrService
和任何其他kSecAttr *
属性使用-我们将迁移数据为您服务。
代客保证它永远不会失败写入或钥匙串读除非canAccessKeychain
返回NO
。只有少数情况下,可导致钥匙串是不可访问的:
VALAccessibility
为您的使用情况。使用不当的例子包括使用VALAccessibilityWhenPasscodeSetThisDeviceOnly
当在设备上没有设置密码,或者使用VALAccessibilityWhenUnlocked
在后台运行时。initWithSharedAccessGroupIdentifier:
当共享访问组标识符不在您的权利文件。VALSecureEnclaveValet
不具有一个安全的飞地在iOS设备上。安全的飞地与引入A7芯片,它首次出现在iPhone 5S,iPad的空气和iPad迷你2。
热门源码