SSKeychain 1.4.1

SSKeychain 1.4.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2016年7月

Sam Soffes 维护。



  • 作者:
  • Sam Soffes

SSKeychain 是一个简单的封装,用于访问帐户、获取密码、设置密码和删除密码,使用 Mac OS X 和 iOS 上的系统密钥链。

添加到您的项目

如果您使用 CocoaPods,只需将以下内容添加到您的 Podfile 中

pod 'SSKeychain'

要手动添加到项目中

  1. Security.framework 添加到您的目标
  2. SSKeychain.hSSKeychain.mSSKeychainQuery.hSSKeychainQuery.m 添加到项目中。

SSKeychain 需要 ARC。

注意:目前 SSKeychain 不支持 Mac OS 10.6。

使用密钥链

SSKeychain 有以下类方法用于与系统密钥链交互

+ (NSArray *)allAccounts;
+ (NSArray *)accountsForService:(NSString *)serviceName;
+ (NSString *)passwordForService:(NSString *)serviceName account:(NSString *)account;
+ (BOOL)deletePasswordForService:(NSString *)serviceName account:(NSString *)account;
+ (void)setAccessibilityType:(CFTypeRef)accessibilityType;
+ (BOOL)setPassword:(NSString *)password forService:(NSString *)serviceName account:(NSString *)account;

就这么简单。(有关全部方法,请参阅 SSKeychain.hSSKeychainQuery.h。)

文档

使用准备好的文档

请参阅在线文档:SSKeychain 文档

调试

如果将数据保存到密钥链失败,请使用 NSError 对象来处理它。您可以调用 [error code] 来获取数字错误代码。SSKeychain.h 中定义了一些值,其余在 SecBase.h 中定义。

NSError *error = nil;
SSKeychainQuery *query = [[SSKeychainQuery alloc] init];
query.service = @"MyService";
query.account = @"soffes";
[query fetch:&error];

if ([error code] == errSecItemNotFound) {
    NSLog(@"Password not found");
} else if (error != nil) {
    NSLog(@"Some other error occurred: %@", [error localizedDescription]);
}

显然,您应该做更复杂的事情。如果只需要错误消息,可以调用 [error localizedDescription]

免责声明

使用密钥链是非常糟糕的。您真的应该检查错误和失败。此库并没有使它更稳定,它只是封装了所有讨厌的 C 语言 API。

您也应该不使用默认设置,并设置 accessibilityType。对于大多数应用程序,kSecAttrAccessibleWhenUnlocked 应该工作。有关其他选项,请参阅 Apple 文档

感谢

这最初是受到 EMKeychain 和 SDKeychain 的启发(两者现在都已消失)。感谢作者们。自那时起,SSKeychain 已切换到从 SSToolkit 抽象出来的更简单实现。

非常感谢Caleb Davenport为SSKeychain 1.0版本所做的引领工作。