SamkeyChain은 계정에 액세스하고, 비밀번호를 가져오고, 비밀번호를 설정하고, Mac OS X 및 iOS의 시스템 키 체인을 사용하여 암호를 삭제하기위한 간단한 래퍼입니다.
Cocoapods를 사용하는 경우 Podfile에 다음을 추가하기 만하면됩니다.
pod 'SAMKeychain'또는 Carthage를 사용하는 경우 Cartfile :
github "soffes/SAMKeychain"
프로젝트에 수동으로 추가하려면 :
Security.framework 추가하십시오SAMKeychain.h , SAMKeychain.m , SAMKeychainQuery.h 및 SAMKeychainQuery.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.h 및 Samkeychainquery.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에서 추상화 된 더 간단한 구현으로 전환했습니다.
Samkeychain의 버전 1.0에 대한 길을 이끌어 준 Caleb Davenport에게 큰 감사를드립니다.