- keychain을 사용하기 위해서는 Apple 에서 제공되는 KeychainItemWrapper 클래스를 다운받아 사용한다.
- 사용법
// create instance
wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"Account Number"
accessGroup:@"XXXXXXXX.com.yourcompany.GenericKeychainSuite"];
// set data to item
[wrapper setObject: @"data" forKey: kSecAttrAccount]
// read data from item
[wrapper objectForKey: kSecAttrAccount]
- 응용
사용법에서 @"XXXXXXXX.com.yourcompany.GenericKeychainSuite" 의 경우 nil을 주면 내부 앱에서만 사용한다.
nil 아닌 값을 사용하면 keychain group 을 사용하는 앱끼리 정보 교환도 가능하다. 단, 이때는 Entitlement 파일을 만들어서 공유할 keychaing group을 지정해야한다.
Entitlement 설정이 안되어 있는 상태에서 accessGroup을 지정하고 사용하면 Error가 발생 한다.
KeychainItemWrapper에 데이터를 넣을때 key사용할 수 있는 값은 다음과 같은 네가지이다.
- kSecAttrAccount : Account 정보
- kSecAttrLabel : 라벨 정보
- kSecAttrDescription : 설명
- kSecValueData : Data
위의 Data중에 kSecValueData로 저장할때는 내부적으로 NSData로 변환하기때문에 NSString일 필요는 없다.
- 유의사항
wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"Account Number"
accessGroup:@"XXXXXXXX.com.yourcompany.GenericKeychainSuite"];
에서 @"Account Number" 를 알아야만 키에 접근할 수 있다.
참조 : http://10apps.tistory.com/archive/20130403