#objective-c #macos
#objective-c #macos
Вопрос:
создайте один объект доступа к элементу цепочки для ключей:
{
(SecAccessRef)createKeychainAccessForLabel:(NSString *)accessLabel appPahts:(NSArray *)appPaths
{
OSStatus err = noErr;
SecAccessRef access=nil;
//Create trusted application references; see SecTrustedApplications.h:
NSMutableArray *trustedApplications = [NSMutableArray array];
for (NSString *aPath in appPaths)
{
SecTrustedApplicationRef appRef = NULL;
err = SecTrustedApplicationCreateFromPath([aPath UTF8String], amp;appRef);
[trustedApplications addObject:(id)appRef];
CFRelease(appRef);
}
//Create an access object:
err = SecAccessCreate((CFStringRef)accessLabel, (CFArrayRef)trustedApplications, amp;access);
if (err != noErr)
{
access = nil;
}
// the momery would be released by the invoker
return access;
}
}
создать элемент цепочки для ключей:
{
const char *serviceUTF8 = [serviceName UTF8String];
const char *accountUTF8 = [account UTF8String];
const char *passwordUTF8 = [password UTF8String];
const char *itemLabelUTF8 = [label UTF8String];
//Create initial access control settings for the item:
SecAccessRef access = [self createKeychainAccessForLabel:label appPahts:appPaths];
//Set up the attribute vector (each attribute consists of {tag, length, pointer}):
SecKeychainAttribute attrs[] =
{
{kSecLabelItemAttr, strlen(itemLabelUTF8), (char *)itemLabelUTF8},
{kSecAccountItemAttr, strlen(accountUTF8), (char *)accountUTF8},
{kSecServiceItemAttr, strlen(serviceUTF8), (char *)serviceUTF8}
};
SecKeychainAttributeList attributes = {sizeof(attrs) / sizeof(attrs[0]), attrs};
err = SecKeychainItemCreateFromContent(
kSecGenericPasswordItemClass,
amp;attributes,
strlen(passwordUTF8),
passwordUTF8,
NULL, // use the default keychain
access,
amp;item);
CFStringRef message = SecCopyErrorMessageString(err, NULL);
NSLog(@"create keychain item: %@", (NSString *)message);
}
запустите эти коды в тестовой версии os x 10.10, но с окончанием ошибки: создать элемент keychain: ошибка разрешения записи, выполните поиск по этому вопросу в Google и stack overflow, но ничто
не является относительным, есть идеи??
Комментарии:
1. Этот вопрос, похоже, не по теме, поскольку он касается OSX 10.10, который в настоящее время находится на стадии предварительного просмотра для разработчиков 2 и не был выпущен для широкой публики. Ожидается, что в операционных системах до бета-тестирования будут проблемы. В настоящее время проблемы с OSX 10.10 должны быть сообщены Apple и обсуждаться только на developer.apple.com форумы.
2. Спасибо, Merlin069, за ваш ответ, я перейду к developer.apple.com форумы, чтобы что-то искать.
3. @thethirdtiger Вы решили эту проблему? Я также сталкиваюсь с такой же проблемой. Заранее спасибо.