#include <stdlib.h>
#include <Security/cssmapi.h>
#include <Security/cssmapple.h>
#include "testcssm.h"
#include "testmore.h"
const CSSM_API_MEMORY_FUNCS gMemFuncs =
{
(CSSM_MALLOC)malloc,
(CSSM_FREE)free,
(CSSM_REALLOC)realloc,
(CSSM_CALLOC)calloc,
NULL
};
int
cssm_attach(const CSSM_GUID *guid, CSSM_HANDLE *handle)
{
setup("cssm_attach");
CSSM_VERSION version = {2, 0};
CSSM_PVC_MODE pvcPolicy = CSSM_PVC_NONE;
return (ok_status(CSSM_Init(&version, CSSM_PRIVILEGE_SCOPE_NONE,
&gGuidCssm, CSSM_KEY_HIERARCHY_NONE, &pvcPolicy,
NULL ), "CSSM_Init") &&
ok_status(CSSM_ModuleLoad(guid, CSSM_KEY_HIERARCHY_NONE, NULL, NULL),
"CSSM_ModuleLoad") &&
ok_status(CSSM_ModuleAttach(guid, &version, &gMemFuncs,
0 , CSSM_SERVICE_DL, 0 ,
CSSM_KEY_HIERARCHY_NONE, NULL, 0, NULL, handle),
"CSSM_ModuleAttach"));
}
int
cssm_detach(const CSSM_GUID *guid, CSSM_HANDLE handle)
{
setup("cssm_detach");
return ok_status(CSSM_ModuleDetach(handle), "CSSM_ModuleDetach") &&
ok_status(CSSM_ModuleUnload(guid, NULL, NULL), "CSSM_ModuleUnload") &&
ok_status(CSSM_Terminate(), "CSSM_Terminate");
}