#include "KCExceptions.h"
#include "Access.h"
#include "SecKeychainItemExtendedAttributes.h"
+#include "LegacyAPICounts.h"
extern "C" Boolean SecKeyIsCDSAKey(SecKeyRef ref);
SecKeychainItemGetTypeID(void)
{
BEGIN_SECAPI
-
return gTypes().ItemImpl.typeID;
END_SECAPI1(_kCFRuntimeNotATypeID)
OSStatus
SecKeychainItemModifyContent(SecKeychainItemRef itemRef, const SecKeychainAttributeList *attrList, UInt32 length, const void *data)
{
- BEGIN_SECKCITEMAPI
+ 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);
OSStatus
SecKeychainItemModifyAttributesAndData(SecKeychainItemRef itemRef, const SecKeychainAttributeList *attrList, UInt32 length, const void *data)
{
- BEGIN_SECKCITEMAPI
+ 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);
OSStatus
SecKeychainItemCopyAttributesAndData(SecKeychainItemRef itemRef, SecKeychainAttributeInfo *info, SecItemClass *itemClass, SecKeychainAttributeList **attrList, UInt32 *length, void **outData)
{
- BEGIN_SECKCITEMAPI
+ BEGIN_SECKCITEMAPI
Item item = ItemImpl::required(__itemImplRef);
item->getAttributesAndData(info, itemClass, attrList, length, outData);
SecKeychainItemFreeAttributesAndData(SecKeychainAttributeList *attrList, void *data)
{
BEGIN_SECAPI
-
ItemImpl::freeAttributesAndData(attrList, data);
END_SECAPI
OSStatus
SecKeychainItemDelete(SecKeychainItemRef itemRef)
{
- BEGIN_SECKCITEMAPI
+ 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);
OSStatus
SecKeychainItemCopyKeychain(SecKeychainItemRef itemRef, SecKeychainRef* keychainRef)
{
- BEGIN_SECKCITEMAPI
+ BEGIN_SECKCITEMAPI
// make sure this item has a keychain
Keychain kc = ItemImpl::required(__itemImplRef)->keychain();
SecKeychainItemCreateCopy(SecKeychainItemRef itemRef, SecKeychainRef destKeychainRef,
SecAccessRef initialAccess, SecKeychainItemRef *itemCopy)
{
- BEGIN_SECKCITEMAPI
+ 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);
END_SECKCITEMAPI
}
-#if 0
-static
-OSStatus SecAccessCreateFromObject(CFTypeRef sourceRef,
- SecAccessRef *accessRef)
-{
- BEGIN_SECAPI
-
- Required(accessRef); // preflight
- SecPointer<Access> access = new Access(*aclBearer(sourceRef));
- *accessRef = access->handle();
-
- END_SECAPI
-}
-
-
-/*!
- */
-static
-OSStatus SecAccessModifyObject(SecAccessRef accessRef, CFTypeRef sourceRef)
-{
- BEGIN_SECAPI
-
- Access::required(accessRef)->setAccess(*aclBearer(sourceRef), true);
-
- END_SECAPI
-}
-#endif
-
OSStatus
SecKeychainItemCopyAccess(SecKeychainItemRef itemRef, SecAccessRef* accessRef)
{
static OSStatus SecKeychainItemCreatePersistentReferenceFromCertificate(SecCertificateRef certRef,
CFDataRef *persistentItemRef, Boolean isIdentity)
{
+ COUNTLEGACYAPI
OSStatus __secapiresult;
if (!certRef || !persistentItemRef) {
return errSecParam;
}
CFErrorRef errorRef = NULL;
- CFDataRef serialData = SecCertificateCopySerialNumber(certItem, &errorRef);
+ CFDataRef serialData = SecCertificateCopySerialNumberData(certItem, &errorRef);
if (errorRef) {
CFIndex err = CFErrorGetCode(errorRef);
CFRelease(errorRef);
}
// first, query the iOS keychain
{
- const void *keys[] = { kSecValueRef, kSecReturnPersistentRef, kSecAttrNoLegacy };
+ const void *keys[] = { kSecValueRef, kSecReturnPersistentRef, kSecUseDataProtectionKeychain };
const void *values[] = { itemRef, kCFBooleanTrue, kCFBooleanTrue };
CFRef<CFDictionaryRef> query = CFDictionaryCreate(kCFAllocatorDefault, keys, values,
sizeof(keys) / sizeof(*keys),
KCThrowParamErrIf_(!persistentItemRef || !itemRef);
// first, query the iOS keychain
{
- const void *keys[] = { kSecValuePersistentRef, kSecReturnRef, kSecAttrNoLegacy};
+ const void *keys[] = { kSecValuePersistentRef, kSecReturnRef, kSecUseDataProtectionKeychain};
const void *values[] = { persistentItemRef, kCFBooleanTrue, kCFBooleanTrue };
CFRef<CFDictionaryRef> query = CFDictionaryCreate(kCFAllocatorDefault, keys, values,
sizeof(keys) / sizeof(*keys),