#ifndef _APPLE_CSP_H_
#define _APPLE_CSP_H_
#include <security_cdsa_plugin/cssmplugin.h>
#include <security_cdsa_plugin/pluginsession.h>
#include <security_cdsa_plugin/CSPsession.h>
class AppleCSPSession;
class AppleCSPContext;
class AppleCSPAlgorithmFactory {
public:
AppleCSPAlgorithmFactory() {};
virtual ~AppleCSPAlgorithmFactory() { };
virtual bool setup(
AppleCSPSession &session,
CSPFullPluginSession::CSPContext * &cspCtx,
const Context &context) = 0;
};
class AppleCSPPlugin : public CssmPlugin {
friend class AppleCSPSession;
friend class AppleCSPContext;
public:
AppleCSPPlugin();
~AppleCSPPlugin();
PluginSession *makeSession(CSSM_MODULE_HANDLE handle,
const CSSM_VERSION &version,
uint32 subserviceId,
CSSM_SERVICE_TYPE subserviceType,
CSSM_ATTACH_FLAGS attachFlags,
const CSSM_UPCALLS &upcalls);
Allocator &normAlloc() {return normAllocator; }
Allocator &privAlloc() {return privAllocator; }
private:
Allocator &normAllocator;
Allocator &privAllocator;
#ifdef BSAFE_CSP_ENABLE
AppleCSPAlgorithmFactory *bSafe4Factory; #endif
#ifdef CRYPTKIT_CSP_ENABLE
AppleCSPAlgorithmFactory *cryptKitFactory;
#endif
AppleCSPAlgorithmFactory *miscAlgFactory;
#ifdef ASC_CSP_ENABLE
AppleCSPAlgorithmFactory *ascAlgFactory;
#endif
AppleCSPAlgorithmFactory *rsaDsaAlgFactory;
AppleCSPAlgorithmFactory *dhAlgFactory;
};
#endif //_APPLE_CSP_H_