我編寫了一些代碼來測試將項目添加到鑰匙串。我正在測試iPad 4.2.1(越獄)。我在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
。
如何解決此錯誤?
感謝您的迴應,西蒙。我正在查看您的代碼,但上面的代碼確實將「kSecClass」設置爲
kSecClassInternetPassword,kSecClass,
– sandflow