Добавление SecKeyRef, SecIdentityRefs в брелок OS X - PullRequest
0 голосов
/ 19 января 2011

Существует удобная функция SecCertificateAddToKeychain(), которая позволяет разработчику добавлять «плавающие» сертификаты (например, SecCertificateRef экземпляры, сгенерированные SecCertificateCreateWithData()) в цепочку для ключей.

Где находятся эквивалентные функции для экземпляров SecKeyRef и SecIdentityRef? Есть SecKeychainItemImport(), но это для импорта необработанных данных. Существует также SecItemAdd(), но оно ограничено добавлением паролей.

Чего мне не хватает?

1 Ответ

3 голосов
/ 29 октября 2011

SecItemAdd вполне способен добавлять сертификаты и ключи в связку ключей;просто установите атрибут kSecClass для класса элемента (например, kSecClassKey) и передайте ссылки на элементы в массиве в атрибуте kSecUseItemList.

Единственное предостережение состоит в том, что один вызов SecItemAdd может толькодобавить предметы того же класса;если вы хотите добавить сертификат и ключ, вам нужно сделать это за два вызова.

Вам не нужно явно создавать или добавлять идентификаторы в цепочку для ключей;они являются неявными конструкциями, которые автоматически создаются, когда доступны сертификат и его закрытый ключ.

...