SAMKeychain 1.5.3

SAMKeychain 1.5.3

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2017年9月

Sam SoffesMark Adams维护。



  • Sam Soffes



SAMKeychain是访问帐户、获取密码、设置密码以及使用Mac OS X和iOS系统密钥链删除密码的一个简单包装类。

将SAMKeychain添加到您的项目中

如果您使用CocoaPods,只需将以下代码添加到Podfile即可

pod 'SAMKeychain'

手动添加到您的项目

  1. Security.framework添加到您的目标
  2. SAMKeychain.hSAMKeychain.mSAMKeychainQuery.hSAMKeychainQuery.m添加到您的项目。

SAMKeychain需要自动引用计数。

注意:当前SAMKeychain不支持Mac OS 10.6。

与密钥链一起工作

SAMKeychain包含以下类方法,用于与系统密钥链一起工作:

+ (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;

就这样简单。(请参阅SAMKeychain.hSAMKeychainQuery.h以获取所有方法。)

文档

使用准备好的文档

阅读在线文档

调试

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

NSError *error = nil;
SAMKeychainQuery *query = [[SAMKeychainQuery 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(目前都已不复存在)的启发。感谢作者们。SAMKeychain随后切换到一个更简单的实现,该实现从SSToolkit抽象而来。

非常感谢Caleb Davenport为SAMKeychain 1.0版本带路。