輕量級iOS安全框架:SSKeyChain

jopen 10年前發布 | 11K 次閱讀 iOS開發 移動開發 SSKeyChain

SSKeyChains對蘋果安全框架API進行了簡單封裝,支持對存儲在鑰匙串中密碼、賬戶進行訪問,包括讀取、刪除和設置。SSKeyChain的作者是大名鼎鼎的SSToolkit的作者samsoffes。

項目地址:https://github.com/samsoffes/sskeychain

在工程中加入SSKeyChain

  1. 在工程中加入Security.framework框架。

  2. 把SSKeychain.h和SSKeychain.m加到項目文件夾。

使用SSKeyChain

通過以下類方法來使用SSKeyChain(請查看SSKeyChain.h):

+ (NSArray *)allAccounts;

+ (NSArray *)accountsForService:(NSString *)serviceName;

+ (NSString *)passwordForService:(NSString *)serviceNameaccount:(NSString *)account;

+ (BOOL)deletePasswordForService:(NSString *)serviceNameaccount:(NSString *)account;

+ (BOOL)setPassword:(NSString *)password forService:(NSString*)serviceName account:(NSString *)account;

 

文檔

在Xcode中安裝SSKeyChain的幫助文檔需要以下步驟:

  1. 打開菜單 Xcode -> Preferences

  2. 選擇 Downloads

  3. 選擇 Documentation

  4. 點擊底部的加號按鈕,并輸入以下URL: http://docs.samsoff.es/com.samsoffes.sskeychain.atom

  5. 點擊”SSKeyChain Documentation”旁邊的install按鈕。 (如果你看不到它,也沒有提示任何錯誤,請重啟Xcode)

確保在Organizer中可選的docset中能夠看到SSKeychain。

此外,可以在線查看SSKeychain Documentation

調試

如果無法保存鑰匙串,請使用SSKeychain.h中提供的錯誤代碼,例如:

NSError *error = nil;

NSString *password = [SSKeychainpasswordForService:@"MyService" account:@"samsoffes"error:&error]; 

if ([error code] == SSKeychainErrorNotFound) {

     NSLog(@"Passwordnot found");

}

顯然,你對做這個應該很熟悉了。訪問鑰匙串是件痛苦的事情,你要隨時檢查它的每個錯誤和失敗。SSKeychain并沒有使它(鑰匙串)變得更穩定,它僅僅是繁瑣的C APIs封裝。

示例代碼

保存一個UUID字符串到鑰匙串:

CFUUIDRef uuid = CFUUIDCreate(NULL);
assert(uuid != NULL);
CFStringRef uuidStr = CFUUIDCreateString(NULL, uuid);

 

[SSKeychain setPassword: [NSString stringWithFormat:@"%@", uuidStr]

 forService:@"com.yourapp.yourcompany"account:@"user"];

 

然后,從鑰匙串讀取UUID:

NSString *retrieveuuid = [SSKeychainpasswordForService:@"com.yourapp.yourcompany"account:@"user"];

 

注意: setPassword和passwordForSevice方法中的services 和 accounts 參數應該是一致的。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!