#ifndef _COMMON_CDSA_UTILS_H_
#define _COMMON_CDSA_UTILS_H_
#include <Security/cssm.h>
#include <Security/SecKeychain.h>
#ifdef __cplusplus
extern "C" {
#endif
extern void * cuAppMalloc (CSSM_SIZE size, void *allocRef);
extern void cuAppFree (void *mem_ptr, void *allocRef);
extern void * cuAppRealloc (void *ptr, CSSM_SIZE size, void *allocRef);
extern void * cuAppCalloc (uint32 num, CSSM_SIZE size, void *allocRef);
#define APP_MALLOC(s) cuAppMalloc(s, NULL)
#define APP_FREE(p) cuAppFree(p, NULL)
#define APP_REALLOC(p, s) cuAppRealloc(p, s, NULL)
#define APP_CALLOC(n, s) cuAppRealloc(n, s, NULL)
extern CSSM_BOOL cuCompareCssmData(
const CSSM_DATA *d1,
const CSSM_DATA *d2);
#define cuCompareOid(o1, o2) cuCompareCssmData(o1, o2)
void cuPrintError(const char *op, CSSM_RETURN err);
extern CSSM_BOOL cuCssmStartup();
extern CSSM_CSP_HANDLE cuCspStartup(
CSSM_BOOL bareCsp);
extern CSSM_DL_HANDLE cuDlStartup();
extern CSSM_CL_HANDLE cuClStartup();
extern CSSM_TP_HANDLE cuTpStartup();
CSSM_DB_HANDLE cuDbStartup(
CSSM_DL_HANDLE dlHand, const char *dbName);
CSSM_DB_HANDLE cuDbStartupByName(CSSM_DL_HANDLE dlHand,
char *dbName,
CSSM_BOOL doCreate,
CSSM_BOOL quiet);
CSSM_RETURN cuCspDetachUnload(
CSSM_CSP_HANDLE cspHand,
CSSM_BOOL bareCsp); CSSM_RETURN cuClDetachUnload(
CSSM_CL_HANDLE clHand);
CSSM_RETURN cuDlDetachUnload(
CSSM_DL_HANDLE dlHand);
CSSM_RETURN cuTpDetachUnload(
CSSM_TP_HANDLE tpHand);
extern CSSM_RETURN cuCspDeriveKey(CSSM_CSP_HANDLE cspHand,
uint32 keyAlg, const char *keyLabel,
unsigned keyLabelLen,
uint32 keyUsage, uint32 keySizeInBits,
CSSM_DATA_PTR password, CSSM_DATA_PTR salt, uint32 iterationCnt, CSSM_KEY_PTR key);
extern CSSM_RETURN cuCspGenKeyPair(CSSM_CSP_HANDLE cspHand,
CSSM_DL_DB_HANDLE *dlDbHand, uint32 algorithm,
const char *keyLabel,
unsigned keyLabelLen,
uint32 keySize, CSSM_KEY_PTR pubKey, CSSM_KEYUSE pubKeyUsage, CSSM_KEYATTR_FLAGS pubAttrs, CSSM_KEY_PTR privKey, CSSM_KEYUSE privKeyUsage, CSSM_KEYATTR_FLAGS privAttrs);
CSSM_RETURN cuRefKeyToRaw(CSSM_CSP_HANDLE cspHand,
const CSSM_KEY *refKey,
CSSM_KEY_PTR rawKey);
CSSM_RETURN cuAddCertToKC(
SecKeychainRef keychain,
const CSSM_DATA *cert,
CSSM_CERT_TYPE certType,
CSSM_CERT_ENCODING certEncoding,
const char *printName, const CSSM_DATA *keyLabel);
unsigned cuDER_ToInt(
const CSSM_DATA *DER_Data);
CSSM_RETURN cuCrlVerify(
CSSM_TP_HANDLE tpHand,
CSSM_CL_HANDLE clHand,
CSSM_CSP_HANDLE cspHand,
const CSSM_DATA *crlData,
CSSM_DL_DB_HANDLE_PTR certKeychain, const CSSM_DATA *anchors, uint32 anchorCount);
#ifdef __cplusplus
}
#endif
#endif