Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+--------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File: dbtable.h
//
// Contents: Cert Server Database interface implementation
//
//---------------------------------------------------------------------------
#ifndef __DBTABLE_H__
#define __DBTABLE_H__ 1
#define DTR_REQUESTID 0
#define DTR_REQUESTRAWREQUEST 1
#define DTR_REQUESTRAWARCHIVEDKEY 2
#define DTR_REQUESTKEYRECOVERYHASHES 3
#define DTR_REQUESTRAWOLDCERTIFICATE 4
#define DTR_REQUESTATTRIBUTES 5
#define DTR_REQUESTTYPE 6
#define DTR_REQUESTFLAGS 7
#define DTR_REQUESTSTATUSCODE 8
#define DTR_REQUESTDISPOSITION 9
#define DTR_REQUESTDISPOSITIONMESSAGE 10
#define DTR_REQUESTSUBMITTEDWHEN 11
#define DTR_REQUESTRESOLVEDWHEN 12
#define DTR_REQUESTREVOKEDWHEN 13
#define DTR_REQUESTREVOKEDEFFECTIVEWHEN 14
#define DTR_REQUESTREVOKEDREASON 15
#define DTR_REQUESTERNAME 16
#define DTR_CALLERNAME 17
#define DTR_SIGNERPOLICIES 18
#define DTR_SIGNERAPPLICATIONPOLICIES 19
#define DTR_DISTINGUISHEDNAME 20
#define DTR_RAWNAME 21
#define DTR_COUNTRY 22
#define DTR_ORGANIZATION 23
#define DTR_ORGUNIT 24
#define DTR_COMMONNAME 25
#define DTR_LOCALITY 26
#define DTR_STATE 27
#define DTR_TITLE 28
#define DTR_GIVENNAME 29
#define DTR_INITIALS 30
#define DTR_SURNAME 31
#define DTR_DOMAINCOMPONENT 32
#define DTR_EMAIL 33
#define DTR_STREETADDRESS 34
#define DTR_UNSTRUCTUREDNAME 35
#define DTR_UNSTRUCTUREDADDRESS 36
#define DTR_DEVICESERIALNUMBER 37
#define DTR_MAX 38
#define DTC_REQUESTID 0
#define DTC_RAWCERTIFICATE 1
#define DTC_CERTIFICATEHASH 2
#define DTC_CERTIFICATETEMPLATE 3
#define DTC_CERTIFICATEENROLLMENTFLAGS 4
#define DTC_CERTIFICATEGENERALFLAGS 5
#define DTC_CERTIFICATESERIALNUMBER 6
#define DTC_CERTIFICATEISSUERNAMEID 7
#define DTC_CERTIFICATENOTBEFOREDATE 8
#define DTC_CERTIFICATENOTAFTERDATE 9
#define DTC_CERTIFICATESUBJECTKEYIDENTIFIER 10
#define DTC_CERTIFICATERAWPUBLICKEY 11
#define DTC_CERTIFICATEPUBLICKEYLENGTH 12
#define DTC_CERTIFICATEPUBLICKEYALGORITHM 13
#define DTC_CERTIFICATERAWPUBLICKEYALGORITHMPARAMETERS 14
#define DTC_CERTIFICATEUPN 15
#define DTC_DISTINGUISHEDNAME 16
#define DTC_RAWNAME 17
#define DTC_COUNTRY 18
#define DTC_ORGANIZATION 19
#define DTC_ORGUNIT 20
#define DTC_COMMONNAME 21
#define DTC_LOCALITY 22
#define DTC_STATE 23
#define DTC_TITLE 24
#define DTC_GIVENNAME 25
#define DTC_INITIALS 26
#define DTC_SURNAME 27
#define DTC_DOMAINCOMPONENT 28
#define DTC_EMAIL 29
#define DTC_STREETADDRESS 30
#define DTC_UNSTRUCTUREDNAME 31
#define DTC_UNSTRUCTUREDADDRESS 32
#define DTC_DEVICESERIALNUMBER 33
#define DTC_MAX 34
#define DTA_REQUESTID 0
#define DTA_ATTRIBUTENAME 1
#define DTA_ATTRIBUTEVALUE 2
#define DTA_MAX 3
#define DTE_REQUESTID 0
#define DTE_EXTENSIONNAME 1
#define DTE_EXTENSIONFLAGS 2
#define DTE_EXTENSIONRAWVALUE 3
#define DTE_MAX 4
#define DTL_ROWID 0
#define DTL_NUMBER 1
#define DTL_MINBASE 2
#define DTL_NAMEID 3
#define DTL_COUNT 4
#define DTL_THISUPDATEDATE 5
#define DTL_NEXTUPDATEDATE 6
#define DTL_THISPUBLISHDATE 7
#define DTL_NEXTPUBLISHDATE 8
#define DTL_EFFECTIVEDATE 9
#define DTL_PROPAGATIONCOMPLETEDATE 10
#define DTL_LASTPUBLISHEDDATE 11
#define DTL_PUBLISHATTEMPTS 12
#define DTL_PUBLISHFLAGS 13
#define DTL_PUBLISHSTATUSCODE 14
#define DTL_PUBLISHERROR 15
#define DTL_RAWCRL 16
#define DTL_MAX 17
#define DTI_REQUESTTABLE 0x00001000
#define DTI_CERTIFICATETABLE 0x00002000
#define DTI_ATTRIBUTETABLE 0x00003000
#define DTI_EXTENSIONTABLE 0x00004000
#define DTI_CRLTABLE 0x00005000
#define DTI_TABLEMASK 0x0000f000
#define DTI_COLUMNMASK 0x00000fff
#define ISTEXTCOLTYP(coltyp) \
(JET_coltypText == (coltyp) || JET_coltypLongText == (coltyp))
#define IsValidJetTableId(tableid) (0 != (tableid) && 0xffffffff != (tableid))
const DWORD DBTF_POLICYWRITEABLE = 0x00000001; const DWORD DBTF_INDEXPRIMARY = 0x00000002; // Primary DB Index
const DWORD DBTF_INDEXREQUESTID = 0x00000004; // Combine Index with RequestID
const DWORD DBTF_SUBJECT = 0x00000008; // Is a "Subject." property
const DWORD DBTF_INDEXUNIQUE = 0x00000010; // Force uniqueness constraint
const DWORD DBTF_INDEXIGNORENULL = 0x00000020; // don't index NULLs
const DWORD DBTF_SOFTFAIL = 0x00000040; // optional column (it's new)
const DWORD DBTF_MISSING = 0x00000080; // optional column is missing
const DWORD DBTF_OLDCOLUMNID = 0x00000100; // old column id still exists
const DWORD DBTF_COLUMNRENAMED = 0x00000200; // renamed, old name appended
const DWORD DBTF_INDEXRENAMED = 0x00000400; // renamed, old name appended
typedef struct _DBTABLE { WCHAR const *pwszPropName; WCHAR const *pwszPropNameObjId; DWORD dwFlags; DWORD dwcbMax; // maximum allowed strlen/wcslen(value string)
DWORD dwTable; CHAR const *pszFieldName; CHAR const *pszIndexName; DWORD dbcolumnMax; JET_GRBIT dbgrbit; JET_COLTYP dbcoltyp; JET_COLUMNID dbcolumnid; JET_COLUMNID dbcolumnidOld; // Old column Id if DBTF_OLDCOLUMNID
} DBTABLE;
#define DBTABLE_NULL \
{ NULL, NULL, 0, 0, 0, NULL, NULL, 0, 0, 0, 0 } // Termination marker
typedef struct _DUPTABLE { CHAR const *pszFieldName; WCHAR const *pwszPropName; } DUPTABLE;
typedef struct _DBAUXDATA { char const *pszTable; char const *pszRowIdIndex; char const *pszRowIdNameIndex; char const *pszNameIndex; DBTABLE const *pdtRowId; DBTABLE const *pdtName; DBTABLE const *pdtFlags; DBTABLE const *pdtValue; DBTABLE const *pdtIssuerNameId; } DBAUXDATA;
typedef struct _DBCREATETABLE { char const *pszTableName; DBAUXDATA *pdbaux; DBTABLE *pdt; } DBCREATETABLE;
const DWORD TABLE_REQCERTS = 0; const DWORD TABLE_REQUESTS = 1; const DWORD TABLE_CERTIFICATES = 2; const DWORD TABLE_ATTRIBUTES = 3; const DWORD TABLE_EXTENSIONS = 4; const DWORD TABLE_CRLS = 5;
const DWORD CSF_TABLEMASK = 0x0000000f; const DWORD CSF_TABLESET = 0x00000010; const DWORD CSF_INUSE = 0x00000020; const DWORD CSF_READONLY = 0x00000040; const DWORD CSF_CREATE = 0x00000080; const DWORD CSF_DELETE = 0x00000100; const DWORD CSF_VIEW = 0x00000200; const DWORD CSF_VIEWRESET = 0x00000400;
const DWORD CST_SEEKINDEXRANGE = 0x00000001; const DWORD CST_SEEKNOTMOVE = 0x00000002; const DWORD CST_SEEKUSECURRENT = 0x00000004; const DWORD CST_SEEKASCEND = 0x00000008;
const DWORD CVF_NOMOREDATA = 0x00010000; const DWORD CVF_COLUMNVALUE = 0x00020000;
char const szCERTIFICATE_REQUESTIDINDEX[] = "CertificateReqIdIndex"; char const szCERTIFICATE_COMMONNAMEINDEX[] = "$CertificateCommonNameIndex"; #define szCERTIFICATE_SERIALNUMBERINDEX "$CertificateSerialNumberIndex2"
#define szCERTIFICATE_SERIALNUMBERINDEX_OLD "$CertificateSerialNumberIndex"
char const szCERTIFICATE_HASHINDEX[] = "$CertificateHashIndex"; char const szCERTIFICATE_TEMPLATEINDEX[] = "$CertificateTemplateIndex"; #define szCERTIFICATE_NOTAFTERINDEX "CertificateNotAfterIndex"
#define szCERTIFICATE_NOTAFTERINDEX_OLD "$CertificateNotAfterIndex"
char const szCERTIFICATE_UPNINDEX[] = "$CertificateUPNIndex";
char const szREQUEST_REQUESTIDINDEX[] = "RequestReqIdIndex"; char const szREQUEST_DISPOSITIONINDEX[] = "RequestDispositionIndex"; char const szREQUEST_REQUESTERNAMEINDEX[] = "$RequestRequesterNameIndex"; char const szREQUEST_CALLERNAMEINDEX[] = "$RequestCallerNameIndex"; #define szREQUEST_RESOLVEDWHENINDEX "RequestResolvedWhenIndex"
#define szREQUEST_RESOLVEDWHENINDEX_OLD "$RequestResolvedWhenIndex"
#define szREQUEST_REVOKEDEFFECTIVEWHENINDEX "RequestRevokedEffectiveWhenIndex"
#define szREQUEST_REVOKEDEFFECTIVEWHENINDEX_OLD "$RequestRevokedEffectiveWhenIndex"
char const szEXTENSION_REQUESTIDINDEX[] = "ExtensionReqIdIndex"; char const szEXTENSION_REQUESTIDNAMEINDEX[] = "$ExtensionReqIdNameIndex";
char const szATTRIBUTE_REQUESTIDINDEX[] = "AttributeReqIdIndex"; char const szATTRIBUTE_REQUESTIDNAMEINDEX[] = "$AttributeReqIdNameIndex";
char const szCRL_ROWIDINDEX[] = "CRLRowIdIndex"; char const szCRL_CRLNUMBERINDEX[] = "CRLCRLNumberIndex"; char const szCRL_CRLNEXTUPDATEINDEX[] = "CRLCRLNextUpdateIndex"; char const szCRL_CRLNEXTPUBLISHINDEX[] = "CRLCRLNextPublishIndex"; char const szCRL_CRLPROPAGATIONCOMPLETEINDEX[] = "CRLCRLPropagationCompleteIndex"; char const szCRL_CRLLASTPUBLISHEDINDEX[] = "CRLLastPublishedIndex"; char const szCRL_CRLPUBLISHATTEMPTSINDEX[] = "CRLPublishAttemptsIndex"; char const szCRL_CRLPUBLSTATUSCODEISHINDEX[] = "CRLPublishStatusCodeIndex";
char const szCERTIFICATETABLE[] = "Certificates"; char const szREQUESTTABLE[] = "Requests"; char const szCERTIFICATEEXTENSIONTABLE[] = "CertificateExtensions"; char const szREQUESTATTRIBUTETABLE[] = "RequestAttributes"; char const szCRLTABLE[] = "CRLs";
#define wszCERTIFICATETABLE L"Certificates"
#define wszREQUESTTABLE L"Requests"
#define wszCERTIFICATEEXTENSIONTABLE L"CertificateExtensions"
#define wszREQUESTATTRIBUTETABLE L"RequestAttributes"
#define wszCRLTABLE L"CRLs"
#define chTEXTPREFIX '$'
#define szREQUESTID "RequestID"
#define szRAWREQUEST "RawRequest"
#define szRAWARCHIVEDKEY "RawArchivedKey"
#define szKEYRECOVERYHASHES "$KeyRecoveryHashes"
#define szRAWOLDCERTIFICATE "RawOldCertificate"
#define szREQUESTATTRIBUTES "$RequestAttributes"
#define szREQUESTTYPE "RequestType"
#define szREQUESTFLAGS "RequestFlags"
#define szSTATUSCODE "StatusCode"
#define szDISPOSITION "Disposition"
#define szDISPOSITIONMESSAGE "$DispositionMessage"
#define szSUBMITTEDWHEN "SubmittedWhen"
#define szRESOLVEDWHEN "ResolvedWhen"
#define szREVOKEDWHEN "RevokedWhen"
#define szREVOKEDEFFECTIVEWHEN "RevokedEffectiveWhen"
#define szREVOKEDREASON "RevokedReason"
#define szREQUESTERNAME "$RequesterName"
#define szCALLERNAME "$CallerName"
#define szSIGNERPOLICIES "$SignerPolicies"
#define szSIGNERAPPLICATIONPOLICIES "$SignerApplicationPolicies"
#define szDISTINGUISHEDNAME "$DistinguishedName"
#define szRAWNAME "RawName"
#define szCOUNTRY "$Country"
#define szORGANIZATION "$Organization"
#define szORGANIZATIONALUNIT "$OrganizationalUnit"
#define szCOMMONNAME "$CommonName"
#define szLOCALITY "$Locality"
#define szSTATEORPROVINCE "$StateOrProvince"
#define szTITLE "$Title"
#define szGIVENNAME "$GivenName"
#define szINITIALS "$Initials"
#define szSURNAME "$SurName"
#define szDOMAINCOMPONENT "$DomainComponent"
#define szEMAIL "$EMail"
#define szSTREETADDRESS "$StreetAddress"
#define szUNSTRUCTUREDNAME "$UnstructuredName"
#define szUNSTRUCTUREDADDRESS "$UnstructuredAddress"
#define szDEVICESERIALNUMBER "$DeviceSerialNumber"
//#define szREQUESTID "RequestID"
#define szRAWCERTIFICATE "RawCertificate"
#define szCERTIFICATETEMPLATE "$CertificateTemplate"
#define szCERTIFICATEENROLLMENTFLAGS "EnrollmentFlags"
#define szCERTIFICATEGENERALFLAGS "GeneralFlags"
#define szCERTIFICATEHASH "$CertificateHash2" // 2nd revision
#define szSERIALNUMBER "$SerialNumber"
#define szISSUERNAMEID "IssuerNameID"
#define szNOTBEFORE "NotBefore"
#define szNOTAFTER "NotAfter"
#define szUPN "$UPN"
#define szSUBJECTKEYIDENTIFIER "$SubjectKeyIdentifier"
#define szSUBJECTKEYIDENTIFIER_OLD "$CertificateHash" // 2nd revision
#define szPUBLICKEY "PublicKey"
#define szPUBLICKEYLENGTH "PublicKeyLength"
#define szPUBLICKEYALGORITHM "$PublicKeyAlgorithm"
#define szPUBLICKEYPARAMS "PublicKeyParams"
//#define szDISTINGUISHEDNAME "$DistinguishedName"
//#define szRAWNAME "RawName"
//#define szCOUNTRY "Country"
//#define ...
//#define szREQUESTID "RequestID"
#define szATTRIBUTENAME "$AttributeName"
#define szATTRIBUTEVALUE "$AttributeValue"
//#define szREQUESTID "RequestID"
#define szEXTENSIONNAME "$ExtensionName"
#define szEXTENSIONFLAGS "ExtensionFlags"
#define szEXTENSIONRAWVALUE "ExtensionRawValue"
#define szCRLROWID "RowId"
#define szCRLNUMBER "Number"
#define szCRLMINBASE "MinBase"
#define szCRLNAMEID "NameId"
#define szCRLCOUNT "Count"
#define szCRLTHISUPDATE "ThisUpdate"
#define szCRLNEXTUPDATE "NextUpdate"
#define szCRLTHISPUBLISH "ThisPublish"
#define szCRLNEXTPUBLISH "NextPublish"
#define szCRLEFFECTIVE "Effective"
#define szCRLPROPAGATIONCOMPLETE "PropgationComplete"
#define szCRLLASTPUBLISHED "CRLLastPublished"
#define szCRLPUBLISHATTEMPTS "CRLPublishAttempts"
#define szCRLPUBLISHFLAGS "CRLPublishFlags"
#define szCRLPUBLISHSTATUSCODE "CRLPublishStatusCode"
#define szCRLPUBLISHERROR "$CRLPublishError"
#define szCRLPUBLISHERROR_OLD "CRLPublishError"
#define szRAWCRL "RawCRL"
#define CSTI_PRIMARY 0
#define CSTI_CERTIFICATE 1
#define CSTI_ATTRIBUTE 2
#define CSTI_EXTENSION 3
#define CSTI_MAX 4
#define CSTI_MAXDIRECT (CSTI_CERTIFICATE + 1)
typedef struct _CERTSESSIONTABLE { JET_TABLEID TableId; DWORD TableFlags; } CERTSESSIONTABLE;
typedef struct _CERTSESSION { JET_SESID SesId; JET_DBID DBId; DWORD RowId; DWORD SesFlags; CERTSESSIONTABLE aTable[CSTI_MAX]; DWORD cTransact; ICertDBRow *prow; IEnumCERTDBRESULTROW *pview; DWORD dwThreadId; } CERTSESSION;
extern DBTABLE g_adtRequests[]; extern DBTABLE g_adtCertificates[]; extern DBTABLE g_adtRequestAttributes[]; //extern DBTABLE g_adtNameExtensions[];
extern DBTABLE g_adtCertExtensions[]; extern DBTABLE g_adtCRLs[];
extern DBAUXDATA g_dbauxRequests; extern DBAUXDATA g_dbauxCertificates; extern DBAUXDATA g_dbauxAttributes; extern DBAUXDATA g_dbauxExtensions; extern DBAUXDATA g_dbauxCRLs;
extern DBCREATETABLE const g_actDataBase[];
extern DUPTABLE const g_dntr[];
extern DWORD g_aColumnViewQueue[]; extern DWORD g_cColumnViewQueue;
extern DWORD g_aColumnViewLog[]; extern DWORD g_cColumnViewLog;
extern DWORD g_aColumnViewRevoked[]; extern DWORD g_cColumnViewRevoked;
extern DWORD g_aColumnViewExtension[]; extern DWORD g_cColumnViewExtension;
extern DWORD g_aColumnViewAttribute[]; extern DWORD g_cColumnViewAttribute;
extern DWORD g_aColumnViewCRL[]; extern DWORD g_cColumnViewCRL;
#endif // #ifndef __DBTABLE_H__
|