-#if !SECTRUST_OSX
- BEGIN_SECAPI
-
- KCThrowParamErrIf_(!itemRef || !persistentItemRef);
- Item item;
- CFTypeID itemType = (itemRef) ? CFGetTypeID(itemRef) ? 0;
- bool isIdentityRef = (itemType == SecIdentityGetTypeID()) ? true : false;
- bool isCertificateRef = (itemType == SecCertificateGetTypeID()) ? true : false;
- if (isIdentityRef) {
- SecPointer<Certificate> certificatePtr(Identity::required((SecIdentityRef)itemRef)->certificate());
- SecCertificateRef certificateRef = certificatePtr->handle(false);
- item = ItemImpl::required((SecKeychainItemRef)certificateRef);
- item->copyPersistentReference(*persistentItemRef, true);
- }
- else if (isCertificateRef) {
- item = ItemImpl::required(itemRef);
- item->copyPersistentReference(*persistentItemRef, false);
- }
- else {
- item = ItemImpl::required(itemRef);
- item->copyPersistentReference(*persistentItemRef, false);
- }
-
- END_SECAPI
-#else