#include "MDSSchema.h"
#include <cstring>
#include <Security/mds_schema.h>
#define DEFINE_META_TABLES 0
static const CSSM_DB_ATTRIBUTE_INFO objectAttrs[] = {
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(Manifest, BLOB),
DB_ATTRIBUTE(ModuleName, STRING),
DB_ATTRIBUTE(Path, STRING),
DB_ATTRIBUTE(ProductVersion, STRING),
DB_ATTRIBUTE(BuiltIn, UINT32),
};
static const CSSM_DB_INDEX_INFO objectIndex[] = {
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING)
};
const RelationInfo kObjectRelation =
RELATION_INFO(MDS_OBJECT_RECORDTYPE,
objectAttrs,
objectIndex);
static const CSSM_DB_ATTRIBUTE_INFO cssmAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(CDSAVersion, STRING),
DB_ATTRIBUTE(Vendor, STRING),
DB_ATTRIBUTE(Desc, STRING),
DB_ATTRIBUTE(NativeServices, UINT32),
};
static const CSSM_DB_INDEX_INFO cssmIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING)
};
static const CSSM_DB_ATTRIBUTE_INFO krmmAttrs[] =
{
DB_ATTRIBUTE(CSSMGuid, STRING),
DB_ATTRIBUTE(PolicyType, UINT32),
DB_ATTRIBUTE(PolicyName, STRING),
DB_ATTRIBUTE(PolicyPath, STRING),
DB_ATTRIBUTE(PolicyInfo, BLOB),
DB_ATTRIBUTE(PolicyManifest, BLOB),
DB_ATTRIBUTE(ModuleID, STRING),
};
static const CSSM_DB_INDEX_INFO krmmIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(CSSMGuid, STRING),
UNIQUE_INDEX_ATTRIBUTE(PolicyType, UINT32)
};
static const CSSM_DB_ATTRIBUTE_INFO emmAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(Manifest, BLOB),
DB_ATTRIBUTE(ModuleName, STRING),
DB_ATTRIBUTE(Path, STRING),
DB_ATTRIBUTE(CDSAVersion, STRING),
DB_ATTRIBUTE(EMMSpecVersion, STRING),
DB_ATTRIBUTE(Desc, STRING),
DB_ATTRIBUTE(PolicyStmt, BLOB),
DB_ATTRIBUTE(EmmVersion, STRING),
DB_ATTRIBUTE(EmmVendor, STRING),
DB_ATTRIBUTE(EmmType, UINT32), };
static const CSSM_DB_INDEX_INFO emmIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING)
};
static const CSSM_DB_ATTRIBUTE_INFO emmPrimaryAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
DB_ATTRIBUTE(ServiceType, UINT32),
DB_ATTRIBUTE(Manifest, BLOB),
DB_ATTRIBUTE(ModuleName, STRING),
DB_ATTRIBUTE(ProductVersion, STRING),
DB_ATTRIBUTE(Vendor, STRING),
DB_ATTRIBUTE(SampleTypes, MULTI_UINT32),
DB_ATTRIBUTE(AclSubjectTypes, MULTI_UINT32),
DB_ATTRIBUTE(AuthTags, MULTI_UINT32),
DB_ATTRIBUTE(EmmSpecVersion, STRING),
};
static const CSSM_DB_INDEX_INFO emmPrimaryIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING),
UNIQUE_INDEX_ATTRIBUTE(SSID, UINT32),
UNIQUE_INDEX_ATTRIBUTE(ServiceType, UINT32)
};
static const CSSM_DB_ATTRIBUTE_INFO commonAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(Manifest, BLOB),
DB_ATTRIBUTE(ModuleName, STRING),
DB_ATTRIBUTE(Path, STRING),
DB_ATTRIBUTE(CDSAVersion, STRING),
DB_ATTRIBUTE(Desc, STRING),
DB_ATTRIBUTE(DynamicFlag, UINT32),
DB_ATTRIBUTE(MultiThreadFlag, UINT32),
DB_ATTRIBUTE(ServiceMask, UINT32),
};
static const CSSM_DB_INDEX_INFO commonIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING)
};
static const CSSM_DB_ATTRIBUTE_INFO cspPrimaryAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
DB_ATTRIBUTE(Manifest, BLOB),
DB_ATTRIBUTE(ModuleName, STRING),
DB_ATTRIBUTE(ProductVersion, STRING),
DB_ATTRIBUTE(Vendor, STRING),
DB_ATTRIBUTE(CspType, UINT32),
DB_ATTRIBUTE(CspFlags, UINT32),
DB_ATTRIBUTE(CspCustomFlags, UINT32),
DB_ATTRIBUTE(UseeTags, MULTI_UINT32),
DB_ATTRIBUTE(SampleTypes, MULTI_UINT32),
DB_ATTRIBUTE(AclSubjectTypes, MULTI_UINT32),
DB_ATTRIBUTE(AuthTags, MULTI_UINT32),
};
static const CSSM_DB_INDEX_INFO cspPrimaryIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING),
UNIQUE_INDEX_ATTRIBUTE(SSID, UINT32)
};
static const CSSM_DB_ATTRIBUTE_INFO cspCapabilitiesAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
DB_ATTRIBUTE(UseeTag, UINT32),
DB_ATTRIBUTE(ContextType, UINT32),
DB_ATTRIBUTE(AlgType, UINT32),
DB_ATTRIBUTE(GroupId, UINT32),
DB_ATTRIBUTE(AttributeType, UINT32),
DB_ATTRIBUTE(AttributeValue, MULTI_UINT32),
DB_ATTRIBUTE(Description, STRING),
};
static const CSSM_DB_INDEX_INFO cspCapabilitiesIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING),
UNIQUE_INDEX_ATTRIBUTE(SSID, UINT32),
UNIQUE_INDEX_ATTRIBUTE(UseeTag, UINT32),
UNIQUE_INDEX_ATTRIBUTE(ContextType, UINT32),
UNIQUE_INDEX_ATTRIBUTE(AlgType, UINT32),
UNIQUE_INDEX_ATTRIBUTE(GroupId, UINT32),
UNIQUE_INDEX_ATTRIBUTE(AttributeType, STRING)
};
static const CSSM_DB_ATTRIBUTE_INFO kAttributesCSPCapabilitiesDict1[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
};
const RelationInfo CSPCapabilitiesDict1RelInfo =
RELATION_INFO(
MDS_CDSADIR_CSP_CAPABILITY_RECORDTYPE, kAttributesCSPCapabilitiesDict1,
NULL);
static const CSSM_DB_ATTRIBUTE_INFO kAttributesCSPCapabilitiesDict2[] =
{
DB_ATTRIBUTE(AlgType, UINT32),
DB_ATTRIBUTE(ContextType, UINT32),
DB_ATTRIBUTE(UseeTag, UINT32),
DB_ATTRIBUTE(Description, STRING),
};
const RelationInfo CSPCapabilitiesDict2RelInfo =
RELATION_INFO(
MDS_CDSADIR_CSP_CAPABILITY_RECORDTYPE, kAttributesCSPCapabilitiesDict2,
NULL);
static const CSSM_DB_ATTRIBUTE_INFO kAttributesCSPCapabilitiesDict3[] =
{
DB_ATTRIBUTE(AttributeType, UINT32),
DB_ATTRIBUTE(AttributeValue, MULTI_UINT32),
};
const RelationInfo CSPCapabilitiesDict3RelInfo =
RELATION_INFO(
MDS_CDSADIR_CSP_CAPABILITY_RECORDTYPE, kAttributesCSPCapabilitiesDict3,
NULL);
static const CSSM_DB_ATTRIBUTE_INFO cspEncapsulatedAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
DB_ATTRIBUTE(ProductDesc, STRING),
DB_ATTRIBUTE(ProductVendor, STRING),
DB_ATTRIBUTE(ProductVersion, STRING),
DB_ATTRIBUTE(ProductFlags, UINT32),
DB_ATTRIBUTE(CustomFlags, UINT32),
DB_ATTRIBUTE(StandardDesc, STRING),
DB_ATTRIBUTE(StandardVersion, STRING),
DB_ATTRIBUTE(ReaderDesc, STRING),
DB_ATTRIBUTE(ReaderVendor, STRING),
DB_ATTRIBUTE(ReaderVersion, STRING),
DB_ATTRIBUTE(ReaderFirmwareVersion, STRING),
DB_ATTRIBUTE(ReaderFlags, UINT32),
DB_ATTRIBUTE(ReaderCustomFlags, UINT32),
DB_ATTRIBUTE(ReaderSerialNumber, STRING),
};
static const CSSM_DB_INDEX_INFO cspEncapsulatedIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING),
UNIQUE_INDEX_ATTRIBUTE(SSID, UINT32)
};
static const CSSM_DB_ATTRIBUTE_INFO cspSmartCardAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
DB_ATTRIBUTE(ScDesc, STRING),
DB_ATTRIBUTE(ScVendor, STRING),
DB_ATTRIBUTE(ScVersion, STRING),
DB_ATTRIBUTE(ScFirmwareVersion, STRING),
DB_ATTRIBUTE(ScFlags, UINT32),
DB_ATTRIBUTE(ScCustomFlags, UINT32),
DB_ATTRIBUTE(ScSerialNumber, STRING),
};
static const CSSM_DB_INDEX_INFO cspSmartCardIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING),
UNIQUE_INDEX_ATTRIBUTE(SSID, UINT32),
UNIQUE_INDEX_ATTRIBUTE(ScDesc, STRING),
UNIQUE_INDEX_ATTRIBUTE(ScVendor, STRING),
UNIQUE_INDEX_ATTRIBUTE(ScVersion, STRING),
UNIQUE_INDEX_ATTRIBUTE(ScFirmwareVersion, STRING),
UNIQUE_INDEX_ATTRIBUTE(ScFlags, UINT32)
};
static const CSSM_DB_ATTRIBUTE_INFO dlPrimaryAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
DB_ATTRIBUTE(Manifest, BLOB),
DB_ATTRIBUTE(ModuleName, STRING),
DB_ATTRIBUTE(ProductVersion, STRING),
DB_ATTRIBUTE(Vendor, STRING),
DB_ATTRIBUTE(DLType, UINT32),
DB_ATTRIBUTE(QueryLimitsFlag, UINT32), DB_ATTRIBUTE(SampleTypes, MULTI_UINT32),
DB_ATTRIBUTE(AclSubjectTypes, MULTI_UINT32),
DB_ATTRIBUTE(AuthTags, MULTI_UINT32),
DB_ATTRIBUTE(ConjunctiveOps, MULTI_UINT32),
DB_ATTRIBUTE(RelationalOps, MULTI_UINT32),
};
static const CSSM_DB_INDEX_INFO dlPrimaryIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING),
UNIQUE_INDEX_ATTRIBUTE(SSID, UINT32)
};
static const CSSM_DB_ATTRIBUTE_INFO dlEncapsulatedAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
DB_ATTRIBUTE(ProductDesc, STRING),
DB_ATTRIBUTE(ProductVendor, STRING),
DB_ATTRIBUTE(ProductVersion, STRING),
DB_ATTRIBUTE(ProductFlags, UINT32),
DB_ATTRIBUTE(StandardDesc, STRING),
DB_ATTRIBUTE(StandardVersion, STRING),
DB_ATTRIBUTE(Protocol, UINT32),
DB_ATTRIBUTE(RetrievalMode, UINT32),
};
static const CSSM_DB_INDEX_INFO dlEncapsulatedIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING),
UNIQUE_INDEX_ATTRIBUTE(SSID, UINT32)
};
static const CSSM_DB_ATTRIBUTE_INFO clPrimaryAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
DB_ATTRIBUTE(Manifest, BLOB),
DB_ATTRIBUTE(ModuleName, STRING),
DB_ATTRIBUTE(ProductVersion, STRING),
DB_ATTRIBUTE(Vendor, STRING),
DB_ATTRIBUTE(CertTypeFormat, UINT32),
DB_ATTRIBUTE(CrlTypeFormat, UINT32),
DB_ATTRIBUTE(CertFieldNames, BLOB),
DB_ATTRIBUTE(BundleTypeFormat, MULTI_UINT32),
DB_ATTRIBUTE(XlationTypeFormat, MULTI_UINT32),
DB_ATTRIBUTE(TemplateFieldNames, BLOB),
};
static const CSSM_DB_INDEX_INFO clPrimaryIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING),
UNIQUE_INDEX_ATTRIBUTE(SSID, UINT32)
};
static const CSSM_DB_ATTRIBUTE_INFO clEncapsulatedAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
DB_ATTRIBUTE(ProductDesc, STRING),
DB_ATTRIBUTE(ProductVendor, STRING),
DB_ATTRIBUTE(ProductVersion, STRING),
DB_ATTRIBUTE(ProductFlags, UINT32),
DB_ATTRIBUTE(StandardDesc, STRING),
DB_ATTRIBUTE(StandardVersion, STRING),
};
static const CSSM_DB_INDEX_INFO clEncapsulatedIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING),
UNIQUE_INDEX_ATTRIBUTE(SSID, UINT32)
};
static const CSSM_DB_ATTRIBUTE_INFO tpPrimaryAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
DB_ATTRIBUTE(Manifest, BLOB),
DB_ATTRIBUTE(ModuleName, STRING),
DB_ATTRIBUTE(ProductVersion, STRING),
DB_ATTRIBUTE(Vendor, STRING),
DB_ATTRIBUTE(CertTypeFormat, UINT32),
DB_ATTRIBUTE(SampleTypes, MULTI_UINT32),
DB_ATTRIBUTE(AclSubjectTypes, MULTI_UINT32),
DB_ATTRIBUTE(AuthTags, MULTI_UINT32),
};
static const CSSM_DB_INDEX_INFO tpPrimaryIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING),
UNIQUE_INDEX_ATTRIBUTE(SSID, UINT32)
};
static const CSSM_DB_ATTRIBUTE_INFO tpPolicyOidsAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
DB_ATTRIBUTE(OID, BLOB),
DB_ATTRIBUTE(Value, BLOB),
};
static const CSSM_DB_INDEX_INFO tpPolicyOidsIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING),
UNIQUE_INDEX_ATTRIBUTE(SSID, UINT32),
UNIQUE_INDEX_ATTRIBUTE(OID, BLOB)
};
static const CSSM_DB_ATTRIBUTE_INFO tpPolicyOidsDict1[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
};
const RelationInfo TpPolicyOidsDict1RelInfo =
RELATION_INFO(
MDS_CDSADIR_TP_OIDS_RECORDTYPE, tpPolicyOidsDict1,
NULL);
static const CSSM_DB_ATTRIBUTE_INFO tpPolicyOidsDict2[] =
{
DB_ATTRIBUTE(OID, BLOB),
DB_ATTRIBUTE(Value, BLOB),
};
const RelationInfo TpPolicyOidsDict2RelInfo =
RELATION_INFO(
MDS_CDSADIR_TP_OIDS_RECORDTYPE, tpPolicyOidsDict2,
NULL);
static const CSSM_DB_ATTRIBUTE_INFO tpEncapsulatedAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
DB_ATTRIBUTE(ProductDesc, STRING),
DB_ATTRIBUTE(ProductVendor, STRING),
DB_ATTRIBUTE(ProductVersion, STRING),
DB_ATTRIBUTE(ProductFlags, UINT32), DB_ATTRIBUTE(AuthorityRequestType, MULTI_UINT32),
DB_ATTRIBUTE(StandardDesc, STRING),
DB_ATTRIBUTE(StandardVersion, STRING),
DB_ATTRIBUTE(ProtocolDesc, STRING),
DB_ATTRIBUTE(ProtocolFlags, UINT32),
DB_ATTRIBUTE(CertClassName, STRING),
DB_ATTRIBUTE(RootCertificate, BLOB),
DB_ATTRIBUTE(RootCertTypeFormat, UINT32),
};
static const CSSM_DB_INDEX_INFO tpEncapsulatedIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING),
UNIQUE_INDEX_ATTRIBUTE(SSID, UINT32)
};
#if DEFINE_META_TABLES
static const CSSM_DB_ATTRIBUTE_INFO mdsSchemaRelationsAttrs[] =
{
DB_ATTRIBUTE(RelationID, UINT32),
DB_ATTRIBUTE(RelationName, STRING),
};
static const CSSM_DB_INDEX_INFO mdsSchemaRelationsIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(RelationID, UINT32),
};
static const CSSM_DB_ATTRIBUTE_INFO mdsSchemaAttributesAttrs[] =
{
DB_ATTRIBUTE(RelationID, UINT32),
DB_ATTRIBUTE(AttributeID, UINT32),
DB_ATTRIBUTE(AttributeNameFormat, UINT32),
DB_ATTRIBUTE(AttributeName, STRING),
DB_ATTRIBUTE(AttributeNameID, BLOB),
DB_ATTRIBUTE(AttributeFormat, UINT32),
};
static const CSSM_DB_INDEX_INFO mdsSchemaAttributesIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(RelationID, UINT32),
UNIQUE_INDEX_ATTRIBUTE(AttributeID, UINT32)
};
static const CSSM_DB_ATTRIBUTE_INFO mdsSchemaIndexesAttrs[] =
{
DB_ATTRIBUTE(RelationID, UINT32),
DB_ATTRIBUTE(IndexID, UINT32),
DB_ATTRIBUTE(AttributeID, UINT32),
DB_ATTRIBUTE(IndexType, UINT32),
DB_ATTRIBUTE(IndexedDataLocation, UINT32),
};
static const CSSM_DB_INDEX_INFO mdsSchemaIndexesIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(RelationID, UINT32),
UNIQUE_INDEX_ATTRIBUTE(IndexID, UINT32)
};
#endif
static const CSSM_DB_ATTRIBUTE_INFO acPrimaryAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
DB_ATTRIBUTE(Manifest, BLOB),
DB_ATTRIBUTE(ModuleName, STRING),
DB_ATTRIBUTE(ProductVersion, STRING),
DB_ATTRIBUTE(Vendor, STRING),
};
static const CSSM_DB_INDEX_INFO acPrimaryIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING),
UNIQUE_INDEX_ATTRIBUTE(SSID, UINT32)
};
static const CSSM_DB_ATTRIBUTE_INFO krPrimaryAttrs[] =
{
DB_ATTRIBUTE(ModuleID, STRING),
DB_ATTRIBUTE(SSID, UINT32),
DB_ATTRIBUTE(Manifest, BLOB),
DB_ATTRIBUTE(ModuleName, STRING),
DB_ATTRIBUTE(CompatCSSMVersion, STRING),
DB_ATTRIBUTE(Version, STRING),
DB_ATTRIBUTE(Vendor, STRING),
DB_ATTRIBUTE(Description, STRING),
DB_ATTRIBUTE(ConfigFileLocation, STRING),
};
static const CSSM_DB_INDEX_INFO krPrimaryIndex[] =
{
UNIQUE_INDEX_ATTRIBUTE(ModuleID, STRING),
UNIQUE_INDEX_ATTRIBUTE(SSID, UINT32)
};
const RelationInfo kMDSRelationInfo[] =
{
RELATION_INFO(MDS_CDSADIR_CSSM_RECORDTYPE,
cssmAttrs,
cssmIndex),
RELATION_INFO(MDS_CDSADIR_KRMM_RECORDTYPE,
krmmAttrs,
krmmIndex),
RELATION_INFO(MDS_CDSADIR_EMM_RECORDTYPE,
emmAttrs,
emmIndex),
RELATION_INFO(MDS_CDSADIR_EMM_PRIMARY_RECORDTYPE,
emmPrimaryAttrs,
emmPrimaryIndex),
RELATION_INFO(MDS_CDSADIR_COMMON_RECORDTYPE,
commonAttrs,
commonIndex),
RELATION_INFO(MDS_CDSADIR_CSP_PRIMARY_RECORDTYPE,
cspPrimaryAttrs,
cspPrimaryIndex),
RELATION_INFO(MDS_CDSADIR_CSP_CAPABILITY_RECORDTYPE,
cspCapabilitiesAttrs,
cspCapabilitiesIndex),
RELATION_INFO(MDS_CDSADIR_CSP_ENCAPSULATED_PRODUCT_RECORDTYPE,
cspEncapsulatedAttrs,
cspEncapsulatedIndex),
RELATION_INFO(MDS_CDSADIR_CSP_SC_INFO_RECORDTYPE,
cspSmartCardAttrs,
cspSmartCardIndex),
RELATION_INFO(MDS_CDSADIR_DL_PRIMARY_RECORDTYPE,
dlPrimaryAttrs,
dlPrimaryIndex),
RELATION_INFO(MDS_CDSADIR_DL_ENCAPSULATED_PRODUCT_RECORDTYPE,
dlEncapsulatedAttrs,
dlEncapsulatedIndex),
RELATION_INFO(MDS_CDSADIR_CL_PRIMARY_RECORDTYPE,
clPrimaryAttrs,
clPrimaryIndex),
RELATION_INFO(MDS_CDSADIR_CL_ENCAPSULATED_PRODUCT_RECORDTYPE,
clEncapsulatedAttrs,
clEncapsulatedIndex),
RELATION_INFO(MDS_CDSADIR_TP_PRIMARY_RECORDTYPE,
tpPrimaryAttrs,
tpPrimaryIndex),
RELATION_INFO(MDS_CDSADIR_TP_OIDS_RECORDTYPE,
tpPolicyOidsAttrs,
tpPolicyOidsIndex),
RELATION_INFO(MDS_CDSADIR_TP_ENCAPSULATED_PRODUCT_RECORDTYPE,
tpEncapsulatedAttrs,
tpEncapsulatedIndex),
#if DEFINE_META_TABLES
RELATION_INFO(MDS_CDSADIR_MDS_SCHEMA_RELATIONS,
mdsSchemaRelationsAttrs,
mdsSchemaRelationsIndex),
RELATION_INFO(MDS_CDSADIR_MDS_SCHEMA_ATTRIBUTES,
mdsSchemaAttributesAttrs,
mdsSchemaAttributesIndex),
RELATION_INFO(MDS_CDSADIR_MDS_SCHEMA_INDEXES,
mdsSchemaIndexesAttrs,
mdsSchemaIndexesIndex),
#endif
RELATION_INFO(MDS_CDSADIR_AC_PRIMARY_RECORDTYPE,
acPrimaryAttrs,
acPrimaryIndex),
RELATION_INFO(MDS_CDSADIR_KR_PRIMARY_RECORDTYPE,
krPrimaryAttrs,
krPrimaryIndex)
};
const unsigned kNumMdsRelations = sizeof(kMDSRelationInfo) / sizeof(RelationInfo);
extern const RelationInfo *MDSRecordTypeToRelation(
CSSM_DB_RECORDTYPE recordType)
{
const RelationInfo *relInfo = kMDSRelationInfo;
unsigned dex;
for(dex=0; dex<kNumMdsRelations; dex++) {
if(relInfo->DataRecordType == recordType) {
return relInfo;
}
relInfo++;
}
if(recordType == MDS_OBJECT_RECORDTYPE) {
return &kObjectRelation;
}
return NULL;
}
extern const RelationInfo *MDSRecordTypeNameToRelation(
const char *recordTypeName)
{
const RelationInfo *relInfo = kMDSRelationInfo;
unsigned dex;
for(dex=0; dex<kNumMdsRelations; dex++) {
if(!strcmp(recordTypeName, relInfo->relationName)) {
return relInfo;
}
relInfo++;
}
return NULL;
}