#include <security_cdsa_utilities/Schema.h>
#include <Security/cssmapplePriv.h>
#include <syslog.h>
+#include <os/activity.h>
#include "SecBridge.h"
#include "KCExceptions.h"
SecAccessRef initialAccess, SecKeychainItemRef *itemRef)
{
BEGIN_SECAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemCreateFromContent", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
KCThrowParamErrIf_(length!=0 && data==NULL);
Item item(itemClass, attrList, length, data);
SecKeychainItemModifyContent(SecKeychainItemRef itemRef, const SecKeychainAttributeList *attrList, UInt32 length, const void *data)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemModifyContent", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
Item item = ItemImpl::required(__itemImplRef);
item->modifyContent(attrList, length, data);
SecKeychainItemCopyContent(SecKeychainItemRef itemRef, SecItemClass *itemClass, SecKeychainAttributeList *attrList, UInt32 *length, void **outData)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemCopyContent", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
Item item = ItemImpl::required(__itemImplRef);
item->getContent(itemClass, attrList, length, outData);
SecKeychainItemFreeContent(SecKeychainAttributeList *attrList, void *data)
{
BEGIN_SECAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemFreeContent", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
ItemImpl::freeContent(attrList, data);
SecKeychainItemModifyAttributesAndData(SecKeychainItemRef itemRef, const SecKeychainAttributeList *attrList, UInt32 length, const void *data)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemModifyAttributesAndData", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
Item item = ItemImpl::required(__itemImplRef);
item->modifyAttributesAndData(attrList, length, data);
SecKeychainItemDelete(SecKeychainItemRef itemRef)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemDelete", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
Item item = ItemImpl::required(__itemImplRef);
Keychain keychain = item->keychain();
SecAccessRef initialAccess, SecKeychainItemRef *itemCopy)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemCreateCopy", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
Item copy = ItemImpl::required(__itemImplRef)->copyTo(Keychain::optional(destKeychainRef), Access::optional(initialAccess));
if (itemCopy) {
SecKeychainItemGetUniqueRecordID(SecKeychainItemRef itemRef, const CSSM_DB_UNIQUE_RECORD **uniqueRecordID)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemGetUniqueRecordID", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
Required(uniqueRecordID) = ItemImpl::required(__itemImplRef)->dbUniqueRecord();
SecKeychainItemGetDLDBHandle(SecKeychainItemRef itemRef, CSSM_DL_DB_HANDLE* dldbHandle)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemGetDLDBHandle", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
*dldbHandle = ItemImpl::required(__itemImplRef)->keychain()->database()->handle();
SecKeychainItemCopyAccess(SecKeychainItemRef itemRef, SecAccessRef* accessRef)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemCopyAccess", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
Required(accessRef); // preflight
SecPointer<Access> access = new Access(*aclBearer(reinterpret_cast<CFTypeRef>(__itemImplRef)));
SecKeychainItemSetAccess(SecKeychainItemRef itemRef, SecAccessRef accessRef)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemSetAccess", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
Access::required(accessRef)->setAccess(*aclBearer(reinterpret_cast<CFTypeRef>(__itemImplRef)), true);
OSStatus SecKeychainItemSetAccessWithPassword(SecKeychainItemRef itemRef, SecAccessRef accessRef, UInt32 passwordLength, const void * password)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemSetAccessWithPassword", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
OSStatus result;
+ if(!__itemImplRef) {
+ return errSecParam;
+ }
+
// try to unlock the keychain with this password first
SecKeychainRef kc = NULL;
result = SecKeychainItemCopyKeychain(__itemImplRef, &kc);
OSStatus SecKeychainItemSetData(SecKeychainItemRef itemRef, UInt32 length, const void* data)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemSetData", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
ItemImpl::required(__itemImplRef)->setData(length, data);
OSStatus SecKeychainItemGetData(SecKeychainItemRef itemRef, UInt32 maxLength, void* data, UInt32* actualLength)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemGetData", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
/* The caller either needs to specify data and maxLength or an actualLength,
* so we return either the data itself or the actual length of the data or both.
OSStatus SecKeychainItemUpdate(SecKeychainItemRef itemRef)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemUpdate", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
ItemImpl::required(__itemImplRef)->update();
OSStatus SecKeychainItemAddNoUI(SecKeychainRef keychainRef, SecKeychainItemRef itemRef)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemAddNoUI", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
Item item = ItemImpl::required(__itemImplRef);
Keychain::optional(keychainRef)->add(item);
OSStatus SecKeychainItemAdd(SecKeychainItemRef itemRef)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemAdd", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
Item item = ItemImpl::required(__itemImplRef);
Keychain defaultKeychain = globals().storageManager.defaultKeychainUI(item);
OSStatus SecKeychainItemCreateNew(SecItemClass itemClass, OSType itemCreator, UInt32 length, const void* data, SecKeychainItemRef* itemRef)
{
BEGIN_SECAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemCreateNew", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
RequiredParam(itemRef) = Item(itemClass, itemCreator, length, data, false)->handle();
OSStatus SecKeychainItemGetAttribute(SecKeychainItemRef itemRef, SecKeychainAttribute* attribute, UInt32* actualLength)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemGetAttribute", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
ItemImpl::required(__itemImplRef)->getAttribute(RequiredParam(attribute), actualLength);
OSStatus SecKeychainItemSetAttribute(SecKeychainItemRef itemRef, SecKeychainAttribute* attribute)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemSetAttribute", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
ItemImpl::required(__itemImplRef)->setAttribute(RequiredParam(attribute));
OSStatus SecKeychainItemFindFirst(SecKeychainRef keychainRef, const SecKeychainAttributeList *attrList, SecKeychainSearchRef *searchRef, SecKeychainItemRef *itemRef)
{
BEGIN_SECAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemFindFirst", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
KCCursor cursor;
if (keychainRef) {
END_SECAPI
}
-#if SECTRUST_OSX
static OSStatus SecKeychainItemCreatePersistentReferenceFromCertificate(SecCertificateRef certRef,
CFDataRef *persistentItemRef, Boolean isIdentity)
{
}
CFErrorRef errorRef = NULL;
- CFDataRef serialData = SecCertificateCopySerialNumber(certItem, &errorRef);
+ CFDataRef serialData = SecCertificateCopySerialNumberData(certItem, &errorRef);
if (errorRef) {
CFIndex err = CFErrorGetCode(errorRef);
CFRelease(errorRef);
return __secapiresult;
}
-#endif
OSStatus SecKeychainItemCreatePersistentReference(SecKeychainItemRef itemRef, CFDataRef *persistentItemRef)
{
-#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
/* We're in the unified world, where SecCertificateRef is not a SecKeychainItemRef. */
if (!itemRef || !persistentItemRef) {
return errSecParam;
// otherwise, not a certificate, so proceed as usual for keychain item
BEGIN_SECAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemCreatePersistentReference", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
Item item = ItemImpl::required(itemRef);
item->copyPersistentReference(*persistentItemRef, false);
END_SECAPI
-
-#endif
}
OSStatus SecKeychainItemCopyFromPersistentReference(CFDataRef persistentItemRef, SecKeychainItemRef *itemRef)
{
BEGIN_SECAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemCopyFromPersistentReference", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
KCThrowParamErrIf_(!persistentItemRef || !itemRef);
// first, query the iOS keychain
}
*itemRef = (SecKeychainItemRef) result;
-#if SECTRUST_OSX
/* see if we should convert outgoing item to a unified SecCertificateRef */
SecItemClass tmpItemClass = Schema::itemClassFor(item->recordType());
if (tmpItemClass == kSecCertificateItemClass && !isIdentityRef) {
if (tmpRef)
CFRelease(tmpRef);
}
-#endif
END_SECAPI
}
OSStatus SecKeychainItemCopyRecordIdentifier(SecKeychainItemRef itemRef, CFDataRef *recordIdentifier)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemCopyRecordIdentifier", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
CSSM_DATA data;
RequiredParam (recordIdentifier);
CFDataRef recordIdentifier)
{
BEGIN_SECAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemCopyFromRecordIdentifier", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
// make a local Keychain reference
RequiredParam (keychainRef);
SecAccessRef initialAccess, SecKeychainItemRef *itemRef, CFDataRef *localID)
{
BEGIN_SECAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemCreateFromEncryptedContent", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
KCThrowParamErrIf_(length!=0 && data==NULL);
RequiredParam (localID);
UInt32 *length, void **outData)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemCopyAttributesAndEncryptedData", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
Item item = ItemImpl::required(__itemImplRef);
item->doNotEncrypt ();
OSStatus SecKeychainItemModifyEncryptedData(SecKeychainItemRef itemRef, UInt32 length, const void *data)
{
BEGIN_SECKCITEMAPI
+ os_activity_t activity = os_activity_create("SecKeychainItemModifyEncryptedData", OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_IF_NONE_PRESENT);
+ os_activity_scope(activity);
+ os_release(activity);
Item item = ItemImpl::required(__itemImplRef);
item->doNotEncrypt ();