#ifndef _TP_UTILS_H_
#define _TP_UTILS_H_
#include <Security/cssmtype.h>
#include <Security/x509defs.h>
#include <Security/cssmapple.h>
#include <time.h>
#include <MacTypes.h>
#include <CoreFoundation/CoreFoundation.h>
#include <Security/Security.h>
#ifdef __cplusplus
extern "C" {
#endif
#define TP_DB_ENABLE 1
CSSM_RETURN tpMakeRandCertGroup(
CSSM_CL_HANDLE clHand,
CSSM_DL_DB_LIST_PTR dbList,
const CSSM_DATA_PTR certs,
unsigned numCerts,
CSSM_CERTGROUP_PTR certGroup,
CSSM_BOOL firstCertIsSubject, CSSM_BOOL verbose,
CSSM_BOOL allInDbs, CSSM_BOOL skipFirstDb);
CSSM_RETURN tpStoreCert(
CSSM_DL_DB_HANDLE dlDb,
const CSSM_DATA_PTR cert,
CSSM_CERT_TYPE certType, uint32 serialNum,
const CSSM_DATA *issuer,
CSSM_CERT_ENCODING certEncoding, const CSSM_DATA *printName,
const CSSM_DATA *subject);
CSSM_RETURN tpStoreRawCert(
CSSM_DL_DB_HANDLE dlDb,
CSSM_CL_HANDLE clHand,
const CSSM_DATA_PTR cert);
CSSM_RETURN tpGenKeys(
CSSM_CSP_HANDLE cspHand,
CSSM_DL_DB_HANDLE dbHand,
unsigned numKeyPairs,
uint32 keyGenAlg,
uint32 keySizeInBits,
const char *keyLabelBase,
CSSM_KEY_PTR pubKeys,
CSSM_KEY_PTR privKeys,
CSSM_DATA_PTR paramData = NULL);
CSSM_RETURN tpGenCerts(
CSSM_CSP_HANDLE cspHand,
CSSM_CL_HANDLE clHand,
unsigned numCerts,
uint32 sigAlg,
const char *nameBase,
CSSM_KEY_PTR pubKeys,
CSSM_KEY_PTR privKeys,
CSSM_DATA_PTR certs,
const char *notBeforeStr,
const char *notAfterStr);
CSSM_RETURN tpGenCertsStore(
CSSM_CSP_HANDLE cspHand,
CSSM_CL_HANDLE clHand,
unsigned numCerts,
uint32 sigAlg,
const char *nameBase,
CSSM_KEY_PTR pubKeys,
CSSM_KEY_PTR privKeys,
CSSM_DL_DB_HANDLE *storeArray,
CSSM_DATA_PTR certs,
const char *notBeforeStr,
const char *notAfterStr);
void tpFreeCertGroup(
CSSM_CERTGROUP_PTR certGroup,
CSSM_BOOL freeCertData, CSSM_BOOL freeStruct);
CSSM_BOOL tpCompareCertGroups(
const CSSM_CERTGROUP *grp1,
const CSSM_CERTGROUP *grp2);
CSSM_RETURN clDeleteAllCerts(CSSM_DL_DB_HANDLE dlDb);
CSSM_RETURN tpCertGroupVerify(
CSSM_TP_HANDLE tpHand,
CSSM_CL_HANDLE clHand,
CSSM_CSP_HANDLE cspHand,
CSSM_DL_DB_LIST_PTR dbListPtr,
const CSSM_OID *policy, const CSSM_DATA *fieldOpts, const CSSM_DATA *actionData, void *policyOpts,
const CSSM_CERTGROUP *certGroup,
CSSM_DATA_PTR anchorCerts,
unsigned numAnchorCerts,
CSSM_TP_STOP_ON stopOn, CSSM_TIMESTRING cssmTimeStr, CSSM_TP_VERIFY_CONTEXT_RESULT_PTR result);
CSSM_RETURN tpKcOpen(
CSSM_DL_HANDLE dlHand,
const char *kcName,
const char *pwd, CSSM_BOOL doCreate,
CSSM_DB_HANDLE *dbHand);
CSSM_RETURN freeVfyResult(
CSSM_TP_VERIFY_CONTEXT_RESULT *ctx);
void printCertInfo(
unsigned numCerts, const CSSM_TP_APPLE_EVIDENCE_INFO *info);
void dumpVfyResult(
const CSSM_TP_VERIFY_CONTEXT_RESULT *vfyResult);
OSStatus getSystemAnchors(
CFArrayRef *rootArray,
CSSM_DATA **anchors,
unsigned *numAnchors);
SecCertificateRef certFromFile(
const char *fileName);
#ifdef __cplusplus
}
#endif
#endif