DTKeychain 1.0.2

DTKeychain 1.0.2

测试已测试
语言语言 Obj-CObjective C
许可证 BSD
发布最后发布2015年12月

Cocoanetics 维护。



一个简单而现代的密钥链包装器。这是通用的,适用于 iOS 和 OSX。

该组件的设计目标是替换先前使用的变得非常复杂的密钥链包装器。它也旨在可扩展以支持未来的附加密钥链项:网络密码、证书、身份等。您有这些用例吗?让我们知道!

如何使用

创建一个新的通用密码

// get shared instance
DTKeychain *keychain = [DTKeychain sharedInstance];

// just create a new instance of the generic password and set values
DTKeychainGenericPassword *pass = [DTKeychainGenericPassword new];
pass.account = @"bar";
pass.service = @"foo";
pass.password = @"*****";

// write the new object to the keychain
NSError *error;
if (![keychain writeKeychainItem:pass error:&error])
{
   NSLog(@"%@", [error localizedDescription]);
}

在密钥链项被写入之后,填充了额外的信息,如持久引用。这允许您稍后对其进行修改或删除。因此,更新代码是相同的

pass.password = @"different";

NSError *error;
if (![keychain writeKeychainItem:pass error:&error])
{
   NSLog(@"%@", [error localizedDescription]);
}

要获取所有匹配特定服务的项目。注意,服务和账户都可以为 nil。

// get shared instance
DTKeychain *keychain = [DTKeychain sharedInstance];

// create a keychain query for generic passwords
NSDictionary *query = [DTKeychainGenericPassword keychainItemQueryForService:@"foo" 
                                                                                            account:nil];

// retrieve matching keychain items
NSError *error;
NSArray *items = [keychain keychainItemsMatchingQuery:query error:&error];

if (!items)
{
   NSLog(@"%@", [error localizedDescription]);
}

iOS 和 OSX 的区别

在 iOS 上,密钥链项目通过访问组进行沙盒隔离。DTKeychain 依赖于内置的系统安全性,不人为地限制您可以查询的项目。这意味着您也可以查询其他现有的通用密码密钥链项目,如 OSX 上的 WiFi 密码。

在 OSX 上,当您尝试检索安全数据(也称为密码)时,会要求用户对每个项目进行权限。在 iOS 上,访问通过可访问性参数进行调节。在 iOS 上,DTKeychain 可以检索查询项的密码。在 OSX 上,您必须对每个项目单独调用 retrieveSecuredDataForKeychainItem:error:

// only necessary at an opportune moment on OSX, might cause an 
// access prompt alert to appear
NSError *error;
if (![keychain retrieveSecuredDataForKeychainItem:pass error:&error]
{
   NSLog(@"%@", [error localizedDescription]);
}

许可证

它是开源的,适用标准 2 条款 BSD 许可证。这意味着您必须提及 Cocoanetics 作为此代码的原始作者,并在您的应用程序中复制 LICENSE 文本。

您可以为 75 欧元购买免责声明许可证,这样就不需要包括 LICENSE 文本。