키 체인에 항목을 추가하는 코드를 작성했습니다. iPad 4.2.1 (jailbroken)에서 테스트 중입니다. iPad에서 ldid -S prog
으로 이진수에 서명했습니다.iOS 오류 errSecInteractionNotAllowed 또는 SecItemAdd의 -25308
코드 :
#import <Security/Security.h>
#import <Security/SecItem.h>
#import <Foundation/NSDictionary.h>
#import <Foundation/NSString.h>
#import <Foundation/NSObject.h>
#import <CoreFoundation/CoreFoundation.h>
#import <Foundation/NSAutoreleasePool.h>
#import <Foundation/NSKeyValueCoding.h>
int main(int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSDictionary *attributesToStore = [NSDictionary dictionaryWithObjectsAndKeys:
[@"testuser01" dataUsingEncoding:NSUTF8StringEncoding],kSecAttrAccount,
[@"test123" dataUsingEncoding:NSUTF8StringEncoding],kSecValueData,
kSecClassInternetPassword,kSecClass,
[@"www.example.com" dataUsingEncoding:NSUTF8StringEncoding],kSecAttrServer,
kCFBooleanTrue, kSecReturnPersistentRef,
[@"Sample password" dataUsingEncoding:NSUTF8StringEncoding], kSecAttrDescription,
[@"password label" dataUsingEncoding:NSUTF8StringEncoding],kSecAttrLabel, nil];
NSData *persistentRef = nil;
OSStatus result = SecItemAdd((CFDictionaryRef)attributesToStore, (CFTypeRef *)&persistentRef);
if (noErr == result)
{
NSLog(@"Added item to Keychain");
}
else {
NSLog(@"Item add failed");
NSLog(@"Result code: %d",result);
}
[pool release];
return 0;
}
코드는 컴파일 및 소음 또는 경고없이 링크. 그러나 iPad에서 실행하면 -25308
오류가 발생합니다.
이 오류를 어떻게 해결합니까?
응답 해 주셔서 감사합니다. Simon. 귀하의 코드를보고 있지만 위의 코드는 "kSecClass"를
kSecClassInternetPassword,kSecClass,
으로 설정합니다. – sandflow