/* * Copyright (c) 2000-2004 Apple Computer, Inc. All Rights Reserved. * * The contents of this file constitute Original Code as defined in and are * subject to the Apple Public Source License Version 1.2 (the 'License'). * You may not use this file except in compliance with the License. Please obtain * a copy of the License at http://www.apple.com/publicsource and read it before * using this file. * * This Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the * specific language governing rights and limitations under the License. */ // // mds_standard - standard-defined MDS record types // #include #include namespace Security { namespace MDSClient { // // CDSA Common relation (one record per module) // static const char * const commonAttributes[] = { "ModuleID", "ModuleName", "Path", "Desc", "DynamicFlag", "MultiThreadFlag", "ServiceMask", NULL }; Common::Common() : Record(commonAttributes) { } string Common::moduleID() const { return mAttributes[0]; } string Common::moduleName() const { return mAttributes[1]; } string Common::path() const { return mAttributes[2]; } string Common::description() const { return mAttributes[3]; } bool Common::dynamic() const { return mAttributes[4]; } bool Common::singleThreaded() const { return !mAttributes[5]; } CSSM_SERVICE_MASK Common::serviceMask() const { return mAttributes[6]; } // // Common::Carrier draws in the Common fields for anything with // a ModuleID attribute (which must be the first attribute listed) // Common::Carrier::~Carrier() { } Common &Common::Carrier::common() const { if (!mCommon) { const CssmDbRecordAttributeData &attrs = dynamic_cast(this)->attributes(); RefPointer rpc; rpc = Table(mds()).fetch( Attribute("ModuleID") == string(attrs[0]), CSSMERR_DL_ENDOFDATA); mCommon = rpc; } return *mCommon; } // // Attributes that are common to all primary relations // static const char * const primaryAttributes[] = { "ModuleID", "SSID", "ModuleName", "ProductVersion", "Vendor", NULL }; PrimaryRecord::PrimaryRecord(const char * const * names) : Record(primaryAttributes) { addAttributes(names); } string PrimaryRecord::moduleID() const { return mAttributes[0]; } uint32 PrimaryRecord::subserviceID() const { return mAttributes[1]; } string PrimaryRecord::moduleName() const { return mAttributes[2]; } string PrimaryRecord::productVersion() const { return mAttributes[3]; } string PrimaryRecord::vendor() const { return mAttributes[4]; } // // CSP Primary relation (one record per CSP SSID) // static const char * const cspAttributes[] = { // up to Vendor is handled by PrimaryRecord "CspType", "CspFlags", NULL }; CSP::CSP() : PrimaryRecord(cspAttributes) { } uint32 CSP::cspType() const { return mAttributes[5]; } CSSM_CSP_FLAGS CSP::cspFlags() const { return mAttributes[6]; } // // CSP capabilities relation // static const char * const capAttributes[] = { "ModuleID", "SSID", "ContextType", "AlgType", "GroupId", "AttributeType", "Description", NULL }; CSPCapabilities::CSPCapabilities() : Record(capAttributes) { } string CSPCapabilities::moduleID() const { return mAttributes[0]; } uint32 CSPCapabilities::subserviceID() const { return mAttributes[1]; } uint32 CSPCapabilities::contextType() const { return mAttributes[2]; } uint32 CSPCapabilities::algorithm() const { return mAttributes[3]; } uint32 CSPCapabilities::group() const { return mAttributes[4]; } uint32 CSPCapabilities::attribute() const { return mAttributes[5]; } string CSPCapabilities::description() const { return mAttributes[6]; } // // CSP SmartcardInfo relation (one record per smartcard token present) // static const char * const scAttributes[] = { "ModuleID", "SSID", "ScDesc", "ScVendor", "ScVersion", "ScFirmwareVersion", "ScFlags", "ScCustomFlags", "ScSerialNumber", NULL }; SmartcardInfo::SmartcardInfo() : Record(scAttributes) { } string SmartcardInfo::moduleID() const { return mAttributes[0]; } uint32 SmartcardInfo::subserviceID() const { return mAttributes[1]; } string SmartcardInfo::description() const { return mAttributes[2]; } string SmartcardInfo::vendor() const { return mAttributes[3]; } string SmartcardInfo::version() const { return mAttributes[4]; } string SmartcardInfo::firmware() const { return mAttributes[5]; } CSSM_SC_FLAGS SmartcardInfo::flags() const { return mAttributes[6]; } CSSM_SC_FLAGS SmartcardInfo::customFlags() const { return mAttributes[7]; } string SmartcardInfo::serial() const { return mAttributes[8]; } // // DL Primary relation (one record per DL SSID) // static const char * const dlAttributes[] = { // up to Vendor is handled by PrimaryRecord "DLType", "QueryLimitsFlag", NULL }; DL::DL() : PrimaryRecord(dlAttributes) { } uint32 DL::dlType() const { return mAttributes[5]; } uint32 DL::queryLimits() const { return mAttributes[6]; } // // CL Primary relation (one record per CL SSID) // static const char * const clAttributes[] = { // up to Vendor is handled by PrimaryRecord "CertTypeFormat", "CrlTypeFormat", NULL }; CL::CL() : PrimaryRecord(clAttributes) { } uint32 CL::certTypeFormat() const { return mAttributes[5]; } uint32 CL::crlTypeFormat() const { return mAttributes[6]; } // // TP Primary relation (one record per TP SSID) // static const char * const tpAttributes[] = { // up to Vendor is handled by PrimaryRecord "CertTypeFormat", NULL }; TP::TP() : PrimaryRecord(tpAttributes) { } uint32 TP::certTypeFormat() const { return mAttributes[5]; } // // TP Policy-OIDS relation (one record per supported policy and TP) // static const char * const policyAttributes[] = { "ModuleID", "SSID", "OID", "Value", NULL }; PolicyOids::PolicyOids() : Record(policyAttributes) { } string PolicyOids::moduleID() const { return mAttributes[0]; } uint32 PolicyOids::subserviceID() const { return mAttributes[1]; } CssmData PolicyOids::oid() const { return mAttributes[2]; } CssmData PolicyOids::value() const { return mAttributes[3]; } } // end namespace MDSClient } // end namespace Security