#include <security_keychain/Globals.h>
#include <security_keychain/SecCFTypes.h>
-#include "SecBasePriv.h"
+#include <Security/SecBasePriv.h>
#include <Security/SecKeychainPriv.h>
#include <security_keychain/KCUtilities.h>
#include <security_cdsa_utilities/cssmbridge.h>
+#include "LegacyAPICounts.h"
using namespace KeychainCore;
+#define COUNTLEGACYAPI static dispatch_once_t countToken; \
+ countLegacyAPI(&countToken, __FUNCTION__);
+
//
// API boilerplate macros. These provide a frame for C++ code that is impermeable to exceptions.
// Usage:
//
#define BEGIN_SECAPI \
OSStatus __secapiresult = errSecSuccess; \
+ static dispatch_once_t countToken; \
+ countLegacyAPI(&countToken, __FUNCTION__); \
try {
#define END_SECAPI }\
catch (const MacOSError &err) { __secapiresult=err.osStatus(); } \
// BEGIN_SECKCITEMAPI
// Note: this macro assumes an input parameter named "itemRef"
//
-#if SECTRUST_OSX
#define BEGIN_SECKCITEMAPI \
OSStatus __secapiresult=errSecSuccess; \
+ static dispatch_once_t countToken; \
+ countLegacyAPI(&countToken, __FUNCTION__); \
SecKeychainItemRef __itemImplRef=NULL; \
bool __is_certificate=(itemRef && (CFGetTypeID(itemRef) == SecCertificateGetTypeID())); \
if (__is_certificate) { \
__itemImplRef=(SecKeychainItemRef)((itemRef) ? CFRetain(itemRef) : NULL); \
} \
try {
-#else
-#define BEGIN_SECKCITEMAPI \
- OSStatus __secapiresult=errSecSuccess; \
- SecKeychainItemRef __itemImplRef=(SecKeychainItemRef)((itemRef) ? CFRetain(itemRef) : NULL); \
- try {
-#endif
+
//
// END_SECKCITEMAPI
//
// BEGIN_SECCERTAPI
// Note: this macro assumes an input parameter named "certificate"
//
-#if SECTRUST_OSX
#define BEGIN_SECCERTAPI \
OSStatus __secapiresult=errSecSuccess; \
+ static dispatch_once_t countToken; \
+ countLegacyAPI(&countToken, __FUNCTION__); \
SecCertificateRef __itemImplRef=NULL; \
if (SecCertificateIsItemImplInstance(certificate)) { __itemImplRef=(SecCertificateRef)CFRetain(certificate); } \
if (!__itemImplRef && certificate) { __itemImplRef=(SecCertificateRef)SecCertificateCopyKeychainItem(certificate); } \
if (!__itemImplRef && certificate) { __itemImplRef=SecCertificateCreateItemImplInstance(certificate); \
(void)SecCertificateSetKeychainItem(certificate,__itemImplRef); } \
try {
-#else
-#define BEGIN_SECCERTAPI \
- OSStatus __secapiresult=errSecSuccess; \
- SecCertificateRef __itemImplRef=(SecCertificateRef)((certificate)?CFRetain(certificate):NULL); \
- try {
-#endif
+
//
// END_SECCERTAPI
//