home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / certsrv.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  29KB  |  686 lines

  1. //+---------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright (C) Microsoft Corporation, 1992 - 1999
  5. //
  6. //  File:       CertSrv.h
  7. //  Contents:   Main Certificate Server header
  8. //              Also includes .h files for the COM interfaces
  9. //
  10. //----------------------------------------------------------------------------
  11.  
  12. #if !defined( _CERTSRV_H_ )
  13. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  14. #define _CERTSRV_H_
  15.  
  16. #include <certadm.h>
  17. #include <certbcli.h>
  18. #include <certcli.h>
  19. #include <certenc.h>
  20. #include <certexit.h>
  21. #include <certif.h>
  22. #include <certpol.h>
  23. #include <certmod.h>
  24. #include <certview.h>
  25.  
  26. #ifndef DBG_CERTSRV
  27. # if defined(_DEBUG)
  28. #  define DBG_CERTSRV     1
  29. # elif defined(DBG)
  30. #  define DBG_CERTSRV     DBG
  31. # else
  32. #  define DBG_CERTSRV     0
  33. # endif
  34. #endif
  35.  
  36. #define wszSERVICE_NAME        TEXT("CertSvc")
  37.  
  38. #define wszREGKEYNOSYSTEMCERTSVCPATH \
  39.                 TEXT("CurrentControlSet\\Services\\") \
  40.                 wszSERVICE_NAME
  41.  
  42. #define wszREGKEYCERTSVCPATH    TEXT("SYSTEM\\") wszREGKEYNOSYSTEMCERTSVCPATH
  43. #define wszREGKEYBASE        wszREGKEYCERTSVCPATH    // obsolete definition
  44.  
  45. //======================================================================
  46. // Full path to "CertSvc\Configuration\":
  47. #define wszREGKEYCONFIGPATH    wszREGKEYCERTSVCPATH TEXT("\\") wszREGKEYCONFIG
  48. #define wszREGKEYCONFIGPATH_BS    wszREGKEYCONFIGPATH TEXT("\\")
  49. #define wszREGKEYCONFIGCANAME    wszREGKEYCONFIGPATH_BS    // obsolete definition
  50.  
  51. //======================================================================
  52. // Full path to "CertSvc\Configuration\RestoreInProgress":
  53. #define wszREGKEYCONFIGRESTORE wszREGKEYCONFIGPATH_BS wszREGKEYRESTOREINPROGRESS
  54.  
  55. //======================================================================
  56. // Key Under "CertSvc":
  57. #define wszREGKEYCONFIG        TEXT("Configuration")
  58.  
  59. //======================================================================
  60. // Values Under "CertSvc\Configuration":
  61. #define wszREGACTIVE             TEXT("Active")
  62. #define wszREGDIRECTORY             TEXT("ConfigurationDirectory")
  63. #define wszREGDBDIRECTORY            TEXT("DBDirectory")
  64. #define wszREGDBLOGDIRECTORY         TEXT("DBLogDirectory")
  65. #define wszREGDBSYSDIRECTORY         TEXT("DBSystemDirectory")
  66. #define wszREGDBTEMPDIRECTORY        TEXT("DBTempDirectory")
  67. #define wszREGDBSESSIONCOUNT         TEXT("DBSessionCount")
  68. #define wszREGWEBCLIENTCAMACHINE     TEXT("WebClientCAMachine")
  69. #define wszREGWEBCLIENTCANAME        TEXT("WebClientCAName")
  70. #define wszREGWEBCLIENTCATYPE        TEXT("WebClientCAType")
  71.  
  72. // Default value for wszREGDBSESSIONCOUNT
  73. #define DBSESSIONCOUNTDEFAULT         20
  74.  
  75. // Keys Under "CertSvc\Configuration":
  76. #define wszREGKEYRESTOREINPROGRESS   TEXT("RestoreInProgress")
  77.  
  78. //======================================================================
  79. // Values Under "CertSvc\Configuration\<CAName>":
  80. #define wszREGCADESCRIPTION          TEXT("CADescription")
  81. #define wszREGCACERTHASH         TEXT("CACertHash")
  82. #define wszREGCASERIALNUMBER         TEXT("CACertSerialNumber")
  83. #define wszREGCATYPE             TEXT("CAType")
  84. #define wszREGCERTENROLLCOMPATIBLE   TEXT("CertEnrollCompatible")
  85. #define wszREGENFORCEX500NAMELENGTHS TEXT("EnforceX500NameLengths")
  86. #define wszREGCOMMONNAME         TEXT("CommonName")
  87. #define wszREGCLOCKSKEWMINUTES         TEXT("ClockSkewMinutes")
  88. #define wszREGCRLNEXTPUBLISH         TEXT("CRLNextPublish")
  89. #define wszREGCRLPERIOD             TEXT("CRLPeriod")
  90. #define wszREGCRLUNITS             TEXT("CRLPeriodUnits")
  91. #define wszREGCRLOVERLAPPERIOD   TEXT("CRLOverlapPeriod")
  92. #define wszREGCRLOVERLAPUNITS    TEXT("CRLOverlapUnits")
  93. #define wszREGCRLPATH                TEXT("CRLPath")
  94. #define wszREGCRLEDITFLAGS         TEXT("CRLEditFlags")
  95. #define wszREGCRLATTEMPTREPUBLISH    TEXT("CRLAttemptRepublish")
  96. #define wszREGENABLED             TEXT("Enabled")
  97. #define wszREGFORCETELETEX           TEXT("ForceTeletex")
  98. #define wszREGLOGLEVEL             TEXT("LogLevel")
  99. #define wszREGPOLICYFLAGS         TEXT("PolicyFlags")
  100. #define wszREGNAMESEPARATOR          TEXT("SubjectNameSeparator")
  101. #define wszREGSUBJECTTEMPLATE         TEXT("SubjectTemplate")
  102. #define wszREGCAUSEDS             TEXT("UseDS")
  103. #define wszREGDURATIONPERIOD         TEXT("ValidityPeriod")
  104. #define wszREGDURATIONUNITS         TEXT("ValidityPeriodUnits")
  105. #define wszREGPARENTCAMACHINE        TEXT("ParentCAMachine")
  106. #define wszREGPARENTCANAME           TEXT("ParentCAName")
  107. #define wszREGREQUESTFILENAME        TEXT("RequestFileName")
  108. #define wszREGREQUESTID              TEXT("RequestId")
  109. #define wszREGREQUESTKEYCONTAINER    TEXT("RequestKeyContainer")
  110. #define wszREGREQUESTKEYINDEX        TEXT("RequestKeyIndex")
  111. #define wszREGCASERVERNAME           TEXT("CAServerName")
  112. #define wszREGCACERTFILENAME         TEXT("CACertFileName")
  113. #define wszREGCASECURITY             TEXT("Security")
  114.  
  115. #define wszREGSETUPSTATUS            TEXT("SetupStatus")
  116.  
  117. #define wszPFXFILENAMEEXT         TEXT(".p12")
  118. #define wszDATFILENAMEEXT         TEXT(".dat")
  119. #define wszLOGFILENAMEEXT         TEXT(".log")
  120. #define wszPATFILENAMEEXT         TEXT(".pat")
  121. #define wszDBFILENAMEEXT         TEXT(".edb")
  122. #define szDBBASENAMEPARM         "edb"
  123. #define wszDBBASENAMEPARM         TEXT(szDBBASENAMEPARM)
  124. #define wszLOGPATH             TEXT("CertLog")
  125. #define wszDBBACKUPSUBDIR         TEXT("DataBase")
  126. #define wszDBBACKUPCERTBACKDAT         TEXT("certback.dat")
  127.  
  128.  
  129. #ifndef __ENUM_CATYPES__
  130. #define __ENUM_CATYPES__
  131.  
  132. // Values for wszREGCATYPE:
  133. typedef enum {
  134.     ENUM_ENTERPRISE_ROOTCA = 0,
  135.     ENUM_ENTERPRISE_SUBCA = 1,
  136.     //ENUM_UNUSED2 = 2,
  137.     ENUM_STANDALONE_ROOTCA = 3,
  138.     ENUM_STANDALONE_SUBCA = 4,
  139.     ENUM_UNKNOWN_CA = 5,
  140. } ENUM_CATYPES;
  141.  
  142. #endif __ENUM_CATYPES__
  143.  
  144. // Default value for wszREGCLOCKSKEWMINUTES
  145. #define CCLOCKSKEWMINUTESDEFAULT    10
  146.  
  147. // Values for wszREGLOGLEVEL:
  148. #define CERTLOG_MINIMAL        (DWORD) 0
  149. #define CERTLOG_TERSE        (DWORD) 1
  150. #define CERTLOG_ERROR        (DWORD) 2
  151. #define CERTLOG_WARNING        (DWORD) 3
  152. #define CERTLOG_VERBOSE        (DWORD) 4
  153.  
  154.  
  155. // Values for wszREGSETUPSTATUS:
  156. #define SETUP_SERVER_FLAG        0x00000001    // server installed
  157. #define SETUP_CLIENT_FLAG        0x00000002    // client installed
  158. #define SETUP_SUSPEND_FLAG        0x00000004    // incomplete install
  159. #define SETUP_REQUEST_FLAG        0x00000008    // new cert requested
  160. #define SETUP_ONLINE_FLAG        0x00000010    // requested online
  161. #define SETUP_DENIED_FLAG        0x00000020    // request denied
  162. #define SETUP_CREATEDB_FLAG        0x00000040    // create new DB
  163. #define SETUP_ATTEMPT_VROOT_CREATE    0x00000080    // try to create vroots
  164. #define SETUP_FORCECRL_FLAG        0x00000100    // force new CRL(s)
  165.  
  166.  
  167. //======================================================================
  168. // Keys Under "CertSvc\Configuration\<CAName>":
  169. #define wszREGKEYCSP            TEXT("CSP")
  170. #define wszREGKEYEXITMODULES        TEXT("ExitModules")
  171. #define wszREGKEYPOLICYMODULES            TEXT("PolicyModules")
  172. #define wszSECUREDATTRIBUTES        TEXT("SignedAttributes")
  173.  
  174. #define wszDEFAULTSIGNEDATTRIBUTES      TEXT("RequesterName\0") \
  175.                                         TEXT("RequesterAddress\0") \
  176.                                         TEXT("RequesterToken\0")
  177.  
  178. //======================================================================
  179. // Values Under "CertSvc\Configuration\RestoreInProgress":
  180. #define wszREGBACKUPLOGDIRECTORY    TEXT("BackupLogDirectory")
  181. #define wszREGCHECKPOINTFILE        TEXT("CheckPointFile")
  182. #define wszREGHIGHLOGNUMBER        TEXT("HighLogNumber")
  183. #define wszREGLOWLOGNUMBER        TEXT("LowLogNumber")
  184. #define wszREGLOGPATH            TEXT("LogPath")
  185. #define wszREGRESTOREMAPCOUNT        TEXT("RestoreMapCount")
  186. #define wszREGRESTOREMAP        TEXT("RestoreMap")
  187. #define wszREGDATABASERECOVERED        TEXT("DatabaseRecovered")
  188. #define wszREGRESTORESTATUS        TEXT("RestoreStatus")
  189.  
  190. // values under \Configuration\PolicyModules in nt5 beta 2
  191. #define wszREGB2ICERTMANAGEMODULE   TEXT("ICertManageModule")
  192. // values under \Configuration in nt4 sp4
  193. #define wszREGSP4DEFAULTCONFIGURATION  TEXT("DefaultConfiguration")
  194. // values under ca in nt4 sp4
  195. #define wszREGSP4KEYSETNAME            TEXT("KeySetName")
  196. #define wszREGSP4SUBJECTNAMESEPARATOR  TEXT("SubjectNameSeparator")
  197. #define wszREGSP4NAMES                 TEXT("Names")
  198. #define wszREGSP4QUERIES               TEXT("Queries")
  199. // both nt4 sp4 and nt5 beta 2
  200. #define wszREGNETSCAPECERTTYPE         TEXT("NetscapeCertType")
  201. #define wszNETSCAPEREVOCATIONTYPE      TEXT("Netscape")
  202.  
  203.  
  204. //======================================================================
  205. // Values Under "CertSvc\Configuration\<CAName>\CSP":
  206. #define wszREGPROVIDERTYPE    TEXT("ProviderType")
  207. #define wszREGPROVIDER        TEXT("Provider")
  208. #define wszHASHALGORITHM      TEXT("HashAlgorithm")
  209. #define wszMACHINEKEYSET      TEXT("MachineKeyset")
  210.  
  211.  
  212. //======================================================================
  213. // Value strings for "CertSvc\Configuration\<CAName>\SubjectNameSeparator":
  214. #define szNAMESEPARATORDEFAULT   "\n"
  215. #define wszNAMESEPARATORDEFAULT   TEXT(szNAMESEPARATORDEFAULT)
  216.  
  217.  
  218. //======================================================================
  219. // Value strings for "CertSvc\Configuration\<CAName>\ValidityPeriod":
  220. #define wszDURATIONUNITSYEARS    TEXT("Years")
  221. #define wszDURATIONUNITSMONTHS    TEXT("Months")
  222. #define wszDURATIONUNITSWEEKS    TEXT("Weeks")
  223. #define wszDURATIONUNITSDAYS    TEXT("Days")
  224. #define wszDURATIONUNITSHOURS    TEXT("Hours")
  225. #define wszDURATIONUNITSMINUTES    TEXT("Minutes")
  226. #define wszDURATIONUNITSSECONDS    TEXT("Seconds")
  227.  
  228. //======================================================================
  229. // Values Under "CertSvc\Configuration\<CAName>\PolicyModules\<ProgId>":
  230. #define wszREGISSUERCERTURLFLAGS    TEXT("IssuerCertURLFlags")
  231. #define wszREGEDITFLAGS            TEXT("EditFlags")
  232. #define wszREGSUBJECTALTNAME        TEXT("SubjectAltName")
  233. #define wszREGSUBJECTALTNAME2        TEXT("SubjectAltName2")
  234. #define wszREGREQUESTDISPOSITION    TEXT("RequestDisposition")
  235. #define wszREGCAPATHLENGTH        TEXT("CAPathLength")
  236. #define wszREGREVOCATIONTYPE        TEXT("RevocationType")
  237.  
  238. #define wszREGLDAPREVOCATIONCRLURL  TEXT("LDAPRevocationCRLURL")
  239. #define wszREGREVOCATIONCRLURL        TEXT("RevocationCRLURL")
  240. #define wszREGFTPREVOCATIONCRLURL   TEXT("FTPRevocationCRLURL")
  241. #define wszREGFILEREVOCATIONCRLURL  TEXT("FileRevocationCRLURL")
  242.  
  243. #define wszREGREVOCATIONURL        TEXT("RevocationURL")
  244.  
  245. #define wszREGLDAPISSUERCERTURL        TEXT("LDAPIssuerCertURL")
  246. #define wszREGISSUERCERTURL         TEXT("IssuerCertURL")
  247. #define wszREGFTPISSUERCERTURL      TEXT("FTPIssuerCertURL")
  248. #define wszREGFILEISSUERCERTURL     TEXT("FileIssuerCertURL")
  249.  
  250. #define wszREGENABLEREQUESTEXTENSIONLIST  TEXT("EnableRequestExtensionList")
  251. #define wszREGDISABLEEXTENSIONLIST  TEXT("DisableExtensionList")
  252.  
  253. // wszREGCAPATHLENGTH Values:
  254. #define CAPATHLENGTH_INFINITE        0xffffffff
  255.  
  256. // wszREGREQUESTDISPOSITION Values:
  257. #define REQDISP_PENDING            0x00000000
  258. #define REQDISP_ISSUE            0x00000001
  259. #define REQDISP_DENY            0x00000002
  260. #define REQDISP_USEREQUESTATTRIBUTE    0x00000003
  261. #define REQDISP_MASK            0x000000ff
  262. #define REQDISP_PENDINGFIRST        0x00000100
  263. #define REQDISP_DEFAULT_STANDALONE    (REQDISP_PENDINGFIRST | REQDISP_ISSUE)
  264. #define REQDISP_DEFAULT_ENTERPRISE    (REQDISP_ISSUE)
  265.  
  266. // wszREGREVOCATIONTYPE Values:
  267. #define REVEXT_CDPLDAPURL        0x00000001
  268. #define REVEXT_CDPHTTPURL        0x00000002
  269. #define REVEXT_CDPFTPURL        0x00000004
  270. #define REVEXT_CDPFILEURL        0x00000008
  271. #define REVEXT_CDPURLMASK        0x000000ff
  272. #define REVEXT_CDPENABLE        0x00000100
  273. #define REVEXT_ASPENABLE        0x00000200
  274. #define REVEXT_DEFAULT_NODS    (REVEXT_CDPENABLE | \
  275.                  REVEXT_CDPLDAPURL | \
  276.                  REVEXT_CDPHTTPURL | \
  277.                  REVEXT_CDPFILEURL)
  278.  
  279. // Suppress FILE URLs if a DS is available, as LDAP access within the
  280. // enterprise should suffice, and http: should work outside the enterprise.
  281. // Certs with too many URLs don't always fit on smart cards.
  282.  
  283. #define REVEXT_DEFAULT_DS    (REVEXT_CDPENABLE | \
  284.                  REVEXT_CDPLDAPURL | \
  285.                  REVEXT_CDPHTTPURL)
  286.  
  287. // wszREGISSUERCERTURLFLAGS Values:
  288. #define ISSCERT_LDAPURL            0x00000001
  289. #define ISSCERT_HTTPURL            0x00000002
  290. #define ISSCERT_FTPURL            0x00000004
  291. #define ISSCERT_FILEURL            0x00000008
  292. #define ISSCERT_URLMASK            0x000000ff
  293. #define ISSCERT_ENABLE            0x00000100
  294. #define ISSCERT_DEFAULT_NODS    (ISSCERT_ENABLE | \
  295.                  ISSCERT_LDAPURL | \
  296.                  ISSCERT_HTTPURL | \
  297.                  ISSCERT_FILEURL)
  298.  
  299. // Suppress FILE URLs if a DS is available, as LDAP access within the
  300. // enterprise should suffice, and http: should work outside the enterprise.
  301. // Certs with too many URLs don't always fit on smart cards.
  302.  
  303. #define ISSCERT_DEFAULT_DS    (ISSCERT_ENABLE | \
  304.                  ISSCERT_LDAPURL | \
  305.                  ISSCERT_HTTPURL)
  306.  
  307. // wszREGEDITFLAGS Values:                   Defaults:
  308. #define EDITF_ENABLEREQUESTEXTENSIONS    0x00000001    // neither
  309. #define EDITF_REQUESTEXTENSIONLIST    0x00000002    // Standalone
  310. #define EDITF_DISABLEEXTENSIONLIST    0x00000004    // both
  311. #define EDITF_ADDOLDKEYUSAGE        0x00000008    // both
  312. #define EDITF_ADDOLDCERTTYPE        0x00000010    // neither
  313. #define EDITF_ATTRIBUTEENDDATE        0x00000020    // Standalone
  314. #define EDITF_BASICCONSTRAINTSCRITICAL    0x00000040    // Standalone
  315. #define EDITF_BASICCONSTRAINTSCA    0x00000080    // Standalone
  316. #define EDITF_ENABLEAKIKEYID        0x00000100    // both
  317. #define EDITF_ATTRIBUTECA        0x00000200    // Standalone
  318. #define EDITF_IGNOREREQUESTERGROUP      0x00000400    // both
  319. #define EDITF_ENABLEAKIISSUERNAME    0x00000800    // both
  320. #define EDITF_ENABLEAKIISSUERSERIAL    0x00001000    // both
  321. #define EDITF_ENABLEAKICRITICAL        0x00002000    // both
  322.  
  323. #define EDITF_DEFAULT_STANDALONE    (EDITF_REQUESTEXTENSIONLIST | \
  324.                      EDITF_DISABLEEXTENSIONLIST | \
  325.                      EDITF_ADDOLDKEYUSAGE | \
  326.                      EDITF_ATTRIBUTEENDDATE | \
  327.                      EDITF_BASICCONSTRAINTSCRITICAL | \
  328.                      EDITF_BASICCONSTRAINTSCA | \
  329.                      EDITF_ENABLEAKIKEYID | \
  330.                      EDITF_ATTRIBUTECA | \
  331.                      EDITF_ENABLEAKIISSUERNAME | \
  332.                      EDITF_ENABLEAKIISSUERSERIAL)
  333.  
  334. #define EDITF_DEFAULT_ENTERPRISE    (EDITF_REQUESTEXTENSIONLIST | \
  335.                      EDITF_DISABLEEXTENSIONLIST | \
  336.                                          EDITF_BASICCONSTRAINTSCRITICAL | \
  337.                                          EDITF_ENABLEAKIKEYID | \
  338.                      EDITF_ADDOLDKEYUSAGE | \
  339.                      EDITF_ENABLEAKIISSUERNAME | \
  340.                      EDITF_ENABLEAKIISSUERSERIAL)
  341.  
  342.  
  343. //======================================================================
  344. // Values Under "CertSvc\Configuration\<CAName>\ExitModules\<ProgId>":
  345.  
  346. // LDAP based CRL and URL issuance
  347. #define wszREGLDAPREVOCATIONDN       TEXT("LDAPRevocationDN")
  348. #define wszREGLDAPREVOCATIONDNTEMPLATE       TEXT("LDAPRevocationDNTemplate")
  349. #define wszCRLPUBLISHRETRYCOUNT    TEXT("CRLPublishRetryCount")
  350. #define wszREGCERTPUBLISHFLAGS     TEXT("PublishCertFlags")
  351.  
  352. // wszREGCERTPUBLISHFLAGS Values:
  353. #define EXITPUB_FILE            0x00000001
  354. #define EXITPUB_ACTIVEDIRECTORY        0x00000002
  355. #define EXITPUB_EMAILNOTIFYALL        0x00000004
  356. #define EXITPUB_EMAILNOTIFYSMARTCARD    0x00000008
  357. #define EXITPUB_REMOVEOLDCERTS       0x00000010
  358.  
  359. #define EXITPUB_DEFAULT_ENTERPRISE    EXITPUB_ACTIVEDIRECTORY
  360.  
  361. #define EXITPUB_DEFAULT_STANDALONE    EXITPUB_FILE
  362.  
  363.  
  364. #define wszCLASS_CERTADMIN      TEXT("CertificateAuthority.Admin")
  365. #define wszCLASS_CERTCONFIG      TEXT("CertificateAuthority.Config")
  366. #define wszCLASS_CERTGETCONFIG      TEXT("CertificateAuthority.GetConfig")
  367. #define wszCLASS_CERTENCODE      TEXT("CertificateAuthority.Encode")
  368. #define wszCLASS_CERTREQUEST      TEXT("CertificateAuthority.Request")
  369. #define wszCLASS_CERTSERVEREXIT   TEXT("CertificateAuthority.ServerExit")
  370. #define wszCLASS_CERTSERVERPOLICY TEXT("CertificateAuthority.ServerPolicy")
  371. #define wszCLASS_CERTVIEW      TEXT("CertificateAuthority.View")
  372.  
  373. // class name templates
  374. #define wszMICROSOFTCERTMODULE_PREFIX  TEXT("CertificateAuthority_MicrosoftDefault") 
  375. #define wszCERTEXITMODULE_POSTFIX    TEXT(".Exit")
  376. #define wszCERTMANAGEEXIT_POSTFIX    TEXT(".ExitManage")
  377. #define wszCERTPOLICYMODULE_POSTFIX    TEXT(".Policy")
  378. #define wszCERTMANAGEPOLICY_POSTFIX    TEXT(".PolicyManage")
  379.  
  380. // actual policy/exit manage class names
  381. #define wszCLASS_CERTMANAGEEXITMODULE   wszMICROSOFTCERTMODULE_PREFIX wszCERTMANAGEEXIT_POSTFIX 
  382.  
  383. #define wszCLASS_CERTMANAGEPOLICYMODULE wszMICROSOFTCERTMODULE_PREFIX wszCERTMANAGEPOLICY_POSTFIX 
  384.  
  385. // actual policy/exit class names
  386. #define wszCLASS_CERTEXIT    wszMICROSOFTCERTMODULE_PREFIX wszCERTEXITMODULE_POSTFIX
  387.  
  388. #define wszCLASS_CERTPOLICY    wszMICROSOFTCERTMODULE_PREFIX wszCERTPOLICYMODULE_POSTFIX
  389.  
  390.  
  391.  
  392. //+--------------------------------------------------------------------------
  393. // Name properties:
  394.  
  395. #define wszPROPDISTINGUISHEDNAME   TEXT("DistinguishedName")
  396. #define wszPROPRAWNAME             TEXT("RawName")
  397. #define wszPROPNAMETYPE            TEXT("NameType")
  398.  
  399. #define wszPROPCOUNTRY             TEXT("Country")
  400. #define wszPROPORGANIZATION        TEXT("Organization")
  401. #define wszPROPORGUNIT             TEXT("OrgUnit")
  402. #define wszPROPCOMMONNAME          TEXT("CommonName")
  403. #define wszPROPLOCALITY            TEXT("Locality")
  404. #define wszPROPSTATE               TEXT("State")
  405. #define wszPROPTITLE               TEXT("Title")
  406. #define wszPROPGIVENNAME           TEXT("GivenName")
  407. #define wszPROPINITIALS            TEXT("Initials")
  408. #define wszPROPSURNAME             TEXT("SurName")
  409. #define wszPROPDOMAINCOMPONENT     TEXT("DomainComponent")
  410. #define wszPROPEMAIL               TEXT("EMail")
  411. #define wszPROPSTREETADDRESS       TEXT("StreetAddress")
  412. #define wszPROPUNSTRUCTUREDNAME    TEXT("UnstructuredName")
  413. #define wszPROPUNSTRUCTUREDADDRESS TEXT("UnstructuredAddress")
  414. #define wszPROPDEVICESERIALNUMBER  TEXT("DeviceSerialNumber")
  415.  
  416. //+--------------------------------------------------------------------------
  417. // Subject Name properties:
  418.  
  419. #define wszPROPSUBJECTDOT        TEXT("Subject.")
  420. #define wszPROPSUBJECTDISTINGUISHEDNAME \
  421.                     wszPROPSUBJECTDOT wszPROPDISTINGUISHEDNAME
  422. #define wszPROPSUBJECTRAWNAME       wszPROPSUBJECTDOT wszPROPRAWNAME
  423. #define wszPROPSUBJECTNAMETYPE      wszPROPSUBJECTDOT wszPROPNAMETYPE
  424.  
  425. #define wszPROPSUBJECTCOUNTRY       wszPROPSUBJECTDOT wszPROPCOUNTRY
  426. #define wszPROPSUBJECTORGANIZATION  wszPROPSUBJECTDOT wszPROPORGANIZATION
  427. #define wszPROPSUBJECTORGUNIT       wszPROPSUBJECTDOT wszPROPORGUNIT
  428. #define wszPROPSUBJECTCOMMONNAME    wszPROPSUBJECTDOT wszPROPCOMMONNAME
  429. #define wszPROPSUBJECTLOCALITY      wszPROPSUBJECTDOT wszPROPLOCALITY
  430. #define wszPROPSUBJECTSTATE         wszPROPSUBJECTDOT wszPROPSTATE
  431. #define wszPROPSUBJECTTITLE        wszPROPSUBJECTDOT wszPROPTITLE
  432. #define wszPROPSUBJECTGIVENNAME        wszPROPSUBJECTDOT wszPROPGIVENNAME
  433. #define wszPROPSUBJECTINITIALS        wszPROPSUBJECTDOT wszPROPINITIALS
  434. #define wszPROPSUBJECTSURNAME        wszPROPSUBJECTDOT wszPROPSURNAME
  435. #define wszPROPSUBJECTDOMAINCOMPONENT wszPROPSUBJECTDOT wszPROPDOMAINCOMPONENT
  436. #define wszPROPSUBJECTEMAIL        wszPROPSUBJECTDOT wszPROPEMAIL
  437. #define wszPROPSUBJECTSTREETADDRESS wszPROPSUBJECTDOT wszPROPSTREETADDRESS
  438. #define wszPROPSUBJECTUNSTRUCTUREDNAME wszPROPSUBJECTDOT wszPROPUNSTRUCTUREDNAME
  439. #define wszPROPSUBJECTUNSTRUCTUREDADDRESS wszPROPSUBJECTDOT wszPROPUNSTRUCTUREDADDRESS
  440. #define wszPROPSUBJECTDEVICESERIALNUMBER wszPROPSUBJECTDOT wszPROPDEVICESERIALNUMBER
  441.  
  442. #define wszPROPSUBJECTCOUNTRYOBJID \
  443.     wszPROPSUBJECTDOT TEXT(szOID_COUNTRY_NAME)
  444.  
  445. #define wszPROPSUBJECTORGANIZATIONOBJID \
  446.     wszPROPSUBJECTDOT TEXT(szOID_ORGANIZATION_NAME)
  447.  
  448. #define wszPROPSUBJECTORGUNITOBJID \
  449.     wszPROPSUBJECTDOT TEXT(szOID_ORGANIZATIONAL_UNIT_NAME)
  450.  
  451. #define wszPROPSUBJECTCOMMONNAMEOBJID \
  452.     wszPROPSUBJECTDOT TEXT(szOID_COMMON_NAME)
  453.  
  454. #define wszPROPSUBJECTLOCALITYOBJID \
  455.     wszPROPSUBJECTDOT TEXT(szOID_LOCALITY_NAME)
  456.  
  457. #define wszPROPSUBJECTSTATEOBJID \
  458.     wszPROPSUBJECTDOT TEXT(szOID_STATE_OR_PROVINCE_NAME)
  459.  
  460. #define wszPROPSUBJECTTITLEOBJID \
  461.     wszPROPSUBJECTDOT TEXT(szOID_TITLE)
  462.  
  463. #define wszPROPSUBJECTGIVENNAMEOBJID \
  464.     wszPROPSUBJECTDOT TEXT(szOID_GIVEN_NAME)
  465.  
  466. #define wszPROPSUBJECTINITIALSOBJID \
  467.     wszPROPSUBJECTDOT TEXT(szOID_INITIALS)
  468.  
  469. #define wszPROPSUBJECTSURNAMEOBJID \
  470.     wszPROPSUBJECTDOT TEXT(szOID_SUR_NAME)
  471.  
  472. #define wszPROPSUBJECTDOMAINCOMPONENTOBJID \
  473.     wszPROPSUBJECTDOT TEXT(szOID_DOMAIN_COMPONENT)
  474.  
  475. #define wszPROPSUBJECTEMAILOBJID \
  476.     wszPROPSUBJECTDOT TEXT(szOID_RSA_emailAddr)
  477.  
  478. #define wszPROPSUBJECTSTREETADDRESSOBJID \
  479.     wszPROPSUBJECTDOT TEXT(szOID_STREET_ADDRESS)
  480.  
  481. #define wszPROPSUBJECTUNSTRUCTUREDNAMEOBJID \
  482.     wszPROPSUBJECTDOT TEXT(szOID_RSA_unstructName)
  483.  
  484. #define wszPROPSUBJECTUNSTRUCTUREDADDRESSOBJID \
  485.     wszPROPSUBJECTDOT TEXT(szOID_RSA_unstructAddr)
  486.  
  487. #define wszPROPSUBJECTDEVICESERIALNUMBEROBJID \
  488.     wszPROPSUBJECTDOT TEXT(szOID_DEVICE_SERIAL_NUMBER)
  489.  
  490.  
  491.  
  492. //+--------------------------------------------------------------------------
  493. // Request properties:
  494. #define wszPROPREQUESTDOT                TEXT("Request.")
  495.  
  496. #define wszPROPREQUESTREQUESTID            TEXT("RequestID")
  497. #define wszPROPREQUESTRAWREQUEST        TEXT("RawRequest")
  498. #define wszPROPREQUESTRAWOLDCERTIFICATE        TEXT("RawOldCertificate")
  499. #define wszPROPREQUESTATTRIBUTES        TEXT("RequestAttributes")
  500. #define wszPROPREQUESTTYPE            TEXT("RequestType")
  501. #define wszPROPREQUESTFLAGS            TEXT("RequestFlags")
  502. #define wszPROPREQUESTSTATUSCODE        TEXT("StatusCode")
  503. #define wszPROPREQUESTDISPOSITION        TEXT("Disposition")
  504. #define wszPROPREQUESTDISPOSITIONMESSAGE    TEXT("DispositionMessage")
  505. #define wszPROPREQUESTSUBMITTEDWHEN        TEXT("SubmittedWhen")
  506. #define wszPROPREQUESTRESOLVEDWHEN        TEXT("ResolvedWhen")
  507. #define wszPROPREQUESTREVOKEDWHEN        TEXT("RevokedWhen")
  508. #define wszPROPREQUESTREVOKEDEFFECTIVEWHEN  TEXT("RevokedEffectiveWhen")
  509. #define wszPROPREQUESTREVOKEDREASON        TEXT("RevokedReason")
  510. #define wszPROPREQUESTERNAME            TEXT("RequesterName")
  511.  
  512. //+--------------------------------------------------------------------------
  513. // Request attribute properties:
  514.  
  515. #define wszPROPCHALLENGE        TEXT("Challenge")
  516. #define wszPROPEXPECTEDCHALLENGE    TEXT("ExpectedChallenge")
  517.  
  518. #define wszPROPDISPOSITION        TEXT("Disposition")
  519. #define wszPROPDISPOSITIONDENY        TEXT("Deny")
  520. #define wszPROPDISPOSITIONPENDING    TEXT("Pending")
  521.  
  522. #define wszPROPVALIDITYPERIOD        TEXT("ValidityPeriod")
  523. #define wszPROPVALIDITYPERIODUNITS    TEXT("ValidityPeriodUnits")
  524.  
  525. #define wszPROPCERTTYPE            TEXT("CertType")
  526. #define wszPROPCERTTEMPLATE        TEXT("CertificateTemplate")
  527.  
  528. #define wszPROPREQUESTOSVERSION        TEXT("RequestOSVersion")
  529. #define wszPROPREQUESTCSPPROVIDER       TEXT("RequestCSPProvider")
  530.  
  531. //+--------------------------------------------------------------------------
  532. // Hardcoded properties
  533. // ".#" means ".0", ".1", ".2" ... may be appended to the property name to
  534. // collect context specific values.  For some properties, the suffix selects
  535. // the CA certificate context.  For others, it selects the the CA CRL context.
  536.  
  537. #define wszPROPCATYPE                   TEXT("CAType")
  538. #define wszPROPSANITIZEDCANAME          TEXT("SanitizedCAName")
  539. #define wszPROPSANITIZEDSHORTNAME       TEXT("SanitizedShortName")
  540. #define wszPROPMACHINEDNSNAME           TEXT("MachineDNSName")
  541. #define wszPROPMODULEREGLOC             TEXT("ModuleRegistryLocation")
  542. #define wszPROPREQUESTERCAACCESS    TEXT("RequesterCAAccess")
  543. #define wszPROPUSEDS                    TEXT("fUseDS")
  544.  
  545. // CA Certificate properties: (all ".#" extensible except wszPROPCERTCOUNT)
  546.  
  547. #define wszPROPCERTCOUNT                TEXT("CertCount")
  548. #define wszPROPRAWCACERTIFICATE         TEXT("RawCACertificate")
  549. #define wszPROPCERTSTATE                TEXT("CertState")
  550. #define wszPROPCERTSUFFIX               TEXT("CertSuffix")
  551.  
  552. // CA CRL properties: (all ".#" extensible)
  553.  
  554. #define wszPROPRAWCRL                   TEXT("RawCRL")
  555. #define wszPROPCRLINDEX                 TEXT("CRLIndex")
  556. #define wszPROPCRLSTATE                 TEXT("CRLState")
  557. #define wszPROPCRLSUFFIX                TEXT("CRLSuffix")
  558.  
  559. // Values for wszPROPCERTSTATE (see certadm.h):
  560. //   CA_DISP_REVOKED    // This Cert has been revoked.
  561. //   CA_DISP_VALID      // This Cert is still valid
  562. //   CA_DISP_INVALID    // This Cert has expired.
  563. //   CA_DISP_ERROR      // Never returned.
  564.  
  565. // Values for wszPROPCRLSTATE (see certadm.h):
  566. //   CA_DISP_REVOKED    // All unexpired certs using this Cert's CRL have been
  567. //            // revoked.
  568. //   CA_DISP_VALID    // This Cert is still publishing CRLs as needed.
  569. //   CA_DISP_INVALID    // All certs using this Cert's CRL are expired.
  570. //   CA_DISP_ERROR      // This Cert's CRL is managed by another Cert.
  571.  
  572. //+--------------------------------------------------------------------------
  573. // Certificate properties:
  574.  
  575. #define wszPROPCERTIFICATEREQUESTID        TEXT("RequestID")
  576. #define wszPROPRAWCERTIFICATE            TEXT("RawCertificate")
  577. #define wszPROPCERTIFICATEHASH            TEXT("CertificateHash")
  578. #define wszPROPCERTIFICATETYPE            TEXT("CertificateType")
  579. #define wszPROPCERTIFICATESERIALNUMBER        TEXT("SerialNumber")
  580. #define wszPROPCERTIFICATENOTBEFOREDATE        TEXT("NotBefore")
  581. #define wszPROPCERTIFICATENOTAFTERDATE        TEXT("NotAfter")
  582. #define wszPROPCERTIFICATERAWPUBLICKEY        TEXT("RawPublicKey")
  583. #define wszPROPCERTIFICATEPUBLICKEYALGORITHM TEXT("PublicKeyAlgorithm")
  584. #define wszPROPCERTIFICATERAWPUBLICKEYALGORITHMPARAMETERS \
  585.     TEXT("RawPublicKeyAlgorithmParameters")
  586.  
  587. #define wszPROPCERTIFICATERAWSMIMECAPABILITIES TEXT("RawSMIMECapabilities")
  588.  
  589. //+--------------------------------------------------------------------------
  590. // Certificate extension properties:
  591.  
  592. #define EXTENSION_CRITICAL_FLAG          0x00000001
  593. #define EXTENSION_DISABLE_FLAG          0x00000002
  594. #define EXTENSION_POLICY_MASK          0x0000ffff // Settable by admin+policy
  595.  
  596. #define EXTENSION_ORIGIN_REQUEST      0x00010000
  597. #define EXTENSION_ORIGIN_POLICY          0x00020000
  598. #define EXTENSION_ORIGIN_ADMIN          0x00030000
  599. #define EXTENSION_ORIGIN_SERVER          0x00040000
  600. #define EXTENSION_ORIGIN_RENEWALCERT  0x00050000
  601. #define EXTENSION_ORIGIN_IMPORTEDCERT 0x00060000
  602. #define EXTENSION_ORIGIN_PKCS7          0x00070000
  603. #define EXTENSION_ORIGIN_MASK          0x000f0000
  604.  
  605. //+--------------------------------------------------------------------------
  606. // GetProperty/SetProperty Flags:
  607. //
  608. // Choose one Type
  609.  
  610. #define PROPTYPE_LONG         0x00000001    // Signed long
  611. #define PROPTYPE_DATE         0x00000002    // Date+Time
  612. #define PROPTYPE_BINARY         0x00000003    // Binary data
  613. #define PROPTYPE_STRING         0x00000004    // Unicode String
  614. #define PROPTYPE_MASK         0x000000ff
  615.  
  616. // Choose one Caller:
  617.  
  618. #define PROPCALLER_SERVER     0x00000100
  619. #define PROPCALLER_POLICY     0x00000200
  620. #define PROPCALLER_EXIT         0x00000300
  621. #define PROPCALLER_ADMIN     0x00000400
  622. #define PROPCALLER_REQUEST     0x00000500
  623. #define PROPCALLER_MASK         0x00000f00
  624.  
  625. // RequestFlags definitions:
  626.  
  627. #define CR_FLG_FORCETELETEX    0x00000001
  628. #define CR_FLG_RENEWAL        0x00000002
  629. #define CR_FLG_FORCEUTF8    0x00000004
  630.  
  631. // Disposition property values:
  632.  
  633. // Disposition values for requests in the queue:
  634. #define DB_DISP_ACTIVE            8    // being processed
  635. #define DB_DISP_PENDING        9    // taken under submission
  636. #define DB_DISP_QUEUE_MAX    9    // max disposition value for queue view
  637.  
  638. #define DB_DISP_CA_CERT        15    // CA cert
  639. #define DB_DISP_CA_CERT_CHAIN    16    // CA cert chain
  640.  
  641. // Disposition values for requests in the log:
  642. #define DB_DISP_LOG_MIN        20    // min disposition value for log view
  643. #define DB_DISP_ISSUED        20    // cert issued
  644. #define DB_DISP_REVOKED            21    // issued and revoked
  645.  
  646. // Disposition values for failed requests in the log:
  647. #define DB_DISP_LOG_FAILED_MIN    30    // min disposition value for log view
  648. #define DB_DISP_ERROR        30    // request failed
  649. #define DB_DISP_DENIED        31    // request denied
  650.  
  651.  
  652. // VerifyRequest() return values
  653.  
  654. #define VR_PENDING    0     // request will be accepted or denied later
  655. #define VR_INSTANT_OK    1     // request was accepted
  656. #define VR_INSTANT_BAD    2     // request was rejected
  657.  
  658.  
  659. //+--------------------------------------------------------------------------
  660. // Known request Attribute names and Value strings
  661.  
  662. // RequestType attribute name:
  663. #define wszCERT_TYPE        L"RequestType"    // attribute name
  664.  
  665. // RequestType attribute values:
  666. // Not specified:                 // Non-specific certificate
  667. #define wszCERT_TYPE_CLIENT    L"Client"    // Client authentication cert
  668. #define wszCERT_TYPE_SERVER    L"Server"    // Server authentication cert
  669. #define wszCERT_TYPE_CODESIGN    L"CodeSign"    // Code signing certificate
  670. #define wszCERT_TYPE_CUSTOMER    L"SetCustomer"    // SET Customer certificate
  671. #define wszCERT_TYPE_MERCHANT    L"SetMerchant"    // SET Merchant certificate
  672. #define wszCERT_TYPE_PAYMENT    L"SetPayment"    // SET Payment certificate
  673.  
  674.  
  675. // Version attribute name:
  676. #define wszCERT_VERSION        L"Version"    // attribute name
  677.  
  678. // Version attribute values:
  679. // Not specified:                 // Whetever is current
  680. #define wszCERT_VERSION_1    L"1"        // Version one certificate
  681. #define wszCERT_VERSION_2    L"2"        // Version two certificate
  682. #define wszCERT_VERSION_3    L"3"        // Version three certificate
  683.  
  684. #pragma option pop /*P_O_Pop*/
  685. #endif // _CERTSRV_H_
  686.