#ifndef _H_CDSA_CLIENT_MDS_STANDARD
#define _H_CDSA_CLIENT_MDS_STANDARD
#include <security_cdsa_client/mdsclient.h>
namespace Security {
namespace MDSClient {
class Common : public Record {
public:
Common();
static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_COMMON_RECORDTYPE;
string moduleID() const;
string moduleName() const;
string path() const;
string description() const;
bool dynamic() const;
bool singleThreaded() const;
CSSM_SERVICE_MASK serviceMask() const;
public:
class Carrier {
public:
virtual ~Carrier();
string moduleName() const { return common().moduleName(); }
string path() const { return common().path(); }
string description() const { return common().description(); }
bool dynamic() const { return common().dynamic(); }
bool singleThreaded() const { return common().singleThreaded(); }
CSSM_SERVICE_MASK serviceMask() const { return common().serviceMask(); }
private:
mutable RefPointer<Common> mCommon;
Common &common() const;
};
};
class PrimaryRecord : public Record, public Common::Carrier {
public:
PrimaryRecord(const char * const * names);
string moduleID() const;
uint32 subserviceID() const;
string moduleName() const;
string productVersion() const;
string vendor() const;
};
class CSP : public PrimaryRecord {
public:
CSP();
static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_CSP_PRIMARY_RECORDTYPE;
uint32 cspType() const;
CSSM_CSP_FLAGS cspFlags() const;
};
class CSPCapabilities : public Record, public Common::Carrier {
public:
CSPCapabilities();
static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_CSP_CAPABILITY_RECORDTYPE;
string moduleID() const;
uint32 subserviceID() const;
uint32 contextType() const;
uint32 algorithm() const;
uint32 group() const;
uint32 attribute() const;
string description() const;
};
class SmartcardInfo : public Record, public Common::Carrier {
public:
SmartcardInfo();
static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_CSP_SC_INFO_RECORDTYPE;
string moduleID() const;
uint32 subserviceID() const;
string description() const;
string vendor() const;
string version() const;
string firmware() const;
CSSM_SC_FLAGS flags() const;
CSSM_SC_FLAGS customFlags() const;
string serial() const;
};
class DL : public PrimaryRecord {
public:
DL();
static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_DL_PRIMARY_RECORDTYPE;
uint32 dlType() const;
uint32 queryLimits() const;
};
class CL : public PrimaryRecord {
public:
CL();
static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_CL_PRIMARY_RECORDTYPE;
uint32 certTypeFormat() const;
uint32 certType() const { return certTypeFormat() >> 16; }
uint32 certEncoding() const { return certTypeFormat() & 0xFFFF; }
uint32 crlTypeFormat() const;
uint32 crlType() const { return crlTypeFormat() >> 16; }
uint32 crlEncoding() const { return crlTypeFormat() & 0xFFFF; }
};
class TP : public PrimaryRecord {
public:
TP();
static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_TP_PRIMARY_RECORDTYPE;
uint32 certTypeFormat() const;
uint32 certType() const { return certTypeFormat() >> 16; }
uint32 certEncoding() const { return certTypeFormat() & 0xFFFF; }
};
class PolicyOids : public Record {
public:
PolicyOids();
static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_TP_OIDS_RECORDTYPE;
string moduleID() const;
uint32 subserviceID() const;
CssmData oid() const;
CssmData value() const;
};
} }
#endif // _H_CDSA_CLIENT_MDS_STANDARD