#ifndef _SECURITY_SECBRIDGE_H_
#define _SECURITY_SECBRIDGE_H_
#include <security_keychain/Globals.h>
#include <security_keychain/SecCFTypes.h>
#include "SecBasePriv.h"
#include <Security/SecKeychainPriv.h>
#include <security_keychain/KCUtilities.h>
#include <security_cdsa_utilities/cssmbridge.h>
using namespace KeychainCore;
#define BEGIN_SECAPI \
OSStatus __secapiresult = errSecSuccess; \
try {
#define END_SECAPI }\
catch (const MacOSError &err) { __secapiresult=err.osStatus(); } \
catch (const CommonError &err) { __secapiresult=SecKeychainErrFromOSStatus(err.osStatus()); } \
catch (const std::bad_alloc &) { __secapiresult=errSecAllocate; } \
catch (...) { __secapiresult=errSecInternalComponent; } \
return __secapiresult;
#define END_SECAPI1(BAD_RETURN_VAL) \
} \
catch (...) \
{ \
__secapiresult=BAD_RETURN_VAL; \
} \
return __secapiresult;
#define END_SECAPI1(BAD_RETURN_VAL) }\
catch (...) { __secapiresult=BAD_RETURN_VAL; } \
return __secapiresult;
#define END_SECAPI0 }\
catch (...) { return; }
#if SECTRUST_OSX
#define BEGIN_SECCERTAPI \
OSStatus __secapiresult=errSecSuccess; \
SecCertificateRef __itemImplRef=(SecCertificateRef)SecCertificateCopyKeychainItem(certificate); \
if (!__itemImplRef) { __itemImplRef=SecCertificateCreateItemImplInstance(certificate); } \
try {
#else
#define BEGIN_SECCERTAPI \
OSStatus __secapiresult=errSecSuccess; \
SecCertificateRef __itemImplRef=(SecCertificateRef)((certificate)?CFRetain(certificate):NULL); \
try {
#endif
#define END_SECCERTAPI }\
catch (const MacOSError &err) { __secapiresult=err.osStatus(); } \
catch (const CommonError &err) { __secapiresult=SecKeychainErrFromOSStatus(err.osStatus()); } \
catch (const std::bad_alloc &) { __secapiresult=errSecAllocate; } \
catch (...) { __secapiresult=errSecInternalComponent; } \
if (__itemImplRef) { CFRelease(__itemImplRef); } \
return __secapiresult;
#endif