Я пытаюсь добавить простой строковый секрет в связку ключей в macOS через API C ++.К сожалению, я не могу получить мой звонок на SecItemAdd
на работу.Я знаю, это потому, что мое значение для клавиши kSecValueRef
неправильного типа, но пока Google / Apple docs / существующих вопросов StackOverflow еще не раскрыло мне, какой тип яследует использовать, и как его создать.Вот что у меня есть на данный момент:
CFStringRef keys[4];
keys[0] = kSecClass;
keys[1] = kSecValueRef;
keys[2] = kSecAttrAccount;
keys[3] = kSecAttrService;
CFTypeRef values[4];
values[0] = kSecClassGenericPassword;
values[1] = CFSTR("password");
values[2] = CFSTR( "account-1" );
values[3] = CFSTR( "service-1" );
CFDictionaryRef attributes = CFDictionaryCreate
(
( CFAllocatorRef )NULL,
( const void ** )keys,
( const void ** )values,
4,
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks
);
CFShow(attributes);
OSStatus status = SecItemAdd(attributes, NULL);
Так, что я должен положить для моего kSecValueRef
?Я пытался сделать ссылку на CFStringRef, но это не сработало.Я также вижу, что в Apple docs написано:
Соответствующее значение, в зависимости от запрошенного класса элемента, имеет тип SecKeychainItem, SecKey, SecCertificate или SecIdentity.
Но у меня нет SecKeychainItem
, потому что я еще не добавил элемент, а другие типы не подходят для обычной строки.
Мысли?