home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / certsrv.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  13KB  |  338 lines

  1. //+---------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright (C) Microsoft Corporation, 1992-1997.
  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. #define _CERTSRV_H_
  14.  
  15. #include <certadm.h>
  16. #include <certcli.h>
  17. #include <certenc.h>
  18. #include <certexit.h>
  19. #include <certif.h>
  20. #include <certpol.h>
  21.  
  22. #ifndef DBG_CERTSRV
  23. # if defined(_DEBUG)
  24. #  define DBG_CERTSRV     1
  25. # elif defined(DBG)
  26. #  define DBG_CERTSRV     DBG
  27. # else
  28. #  define DBG_CERTSRV     0
  29. # endif
  30. #endif
  31.  
  32.  
  33. #define wszSERVICE_NAME        TEXT("CertSvc")
  34.  
  35. #define wszREGKEYBASE        TEXT("SYSTEM\\CurrentControlSet\\Services\\") \
  36.                 wszSERVICE_NAME
  37.  
  38. //======================================================================
  39. // Full path to "CertSvc\Configuration\":
  40. #define wszREGKEYCONFIGCANAME    wszREGKEYBASE TEXT("\\") \
  41.                 wszREGKEYCONFIG TEXT("\\")
  42.  
  43. //======================================================================
  44. // Key Under "CertSvc":
  45. #define wszREGKEYCONFIG        TEXT("Configuration")
  46.  
  47.  
  48. //======================================================================
  49. // Values Under "CertSvc\Configuration":
  50. #define wszREGKEYDIRECTORY    TEXT("ConfigurationDirectory")
  51. #define wszREGKEYDEFAULTCONFIG    TEXT("DefaultConfiguration")
  52.  
  53.  
  54. //======================================================================
  55. // Values Under "CertSvc\Configuration\<CAName>":
  56. #define wszREGCERTENROLLCOMPATIBLE TEXT("CertEnrollCompatible")
  57. #define wszREGKEYENABLED    TEXT("Enabled")
  58. #define wszREGCONTAINERNAME     TEXT("KeySetName")
  59. #define wszREGNAMESEPARATOR     TEXT("SubjectNameSeparator")
  60. #define wszREGPOLICYFLAGS    TEXT("PolicyFlags")
  61. #define wszREGSUBJECTTEMPLATE    TEXT("SubjectTemplate")
  62. #define wszREGSUBJECTALTNAME    TEXT("SubjectAltName")
  63. #define wszREGSUBJECTALTNAME2    TEXT("SubjectAltName2")
  64. #define wszREGREVOCATIONCRLURL    TEXT("RevocationCRLURL")
  65. #define wszREGREVOCATIONTYPE    TEXT("RevocationType")
  66. #define wszREGREVOCATIONURL    TEXT("RevocationURL")
  67. #define wszREGNETSCAPECERTTYPE  TEXT("NetscapeCertType")
  68. #define wszREGDURATIONPERIOD    TEXT("ValidityPeriod")
  69. #define wszREGDURATIONUNITS    TEXT("ValidityPeriodUnits")
  70.  
  71. #define szREGDBDSN        "DBDSN"
  72. #define szREGDBUSER        "DBUser"
  73. #define szREGDBPASSWORD        "DBPassword"
  74.  
  75. #define wszREGDBDSN        TEXT(szREGDBDSN)
  76. #define wszREGDBUSER        TEXT(szREGDBUSER)
  77. #define wszREGDBPASSWORD    TEXT(szREGDBPASSWORD)
  78.  
  79.  
  80. //======================================================================
  81. // Keys Under "CertSvc\Configuration\<CAName>":
  82. #define wszREGKEYNAMES        TEXT("Names")
  83. #define wszREGCSP        TEXT("CSP")
  84.  
  85.  
  86. //======================================================================
  87. // Values Under "CertSvc\Configuration\<CAName>\Names":
  88. #define wszREGNAMEDEFAULT    TEXT("*")
  89.  
  90.  
  91. //======================================================================
  92. // Values Under "CertSvc\Configuration\<CAName>\CSP":
  93. #define wszREGPROVIDERTYPE    TEXT("ProviderType");
  94. #define wszREGPROVIDER        TEXT("Provider");
  95. #define wszHASHALGORITHM      TEXT("HashAlgorithm");
  96. #define wszMACHINEKEYSET      TEXT("MachineKeyset");
  97.  
  98.  
  99. //======================================================================
  100. // Value strings for "CertSvc\Configuration\<CAName>\SubjectNameSeparator":
  101. #define szNAMESEPARATORDEFAULT   ","
  102. #define wszNAMESEPARATORDEFAULT   TEXT(szNAMESEPARATORDEFAULT)
  103.  
  104.  
  105. //======================================================================
  106. // Value strings for "CertSvc\Configuration\<CAName>\RevocationType":
  107. #define wszREVTYPE_CRL        TEXT("CRL")
  108. #define wszREVTYPE_NETSCAPE    TEXT("Netscape")
  109.  
  110.  
  111. //======================================================================
  112. // Value strings for "CertSvc\Configuration\<CAName>\ValidityPeriod":
  113. #define wszDURATIONUNITSYEARS    TEXT("Years")
  114. #define wszDURATIONUNITSMONTHS    TEXT("Months")
  115. #define wszDURATIONUNITSWEEKS    TEXT("Weeks")
  116. #define wszDURATIONUNITSDAYS    TEXT("Days")
  117. #define wszDURATIONUNITSHOURS    TEXT("Hours")
  118. #define wszDURATIONUNITSMINUTES    TEXT("Minutes")
  119. #define wszDURATIONUNITSSECONDS    TEXT("Seconds")
  120.  
  121. //======================================================================
  122. // Value strings for "CertSvc\Configuration\<CAName>\HierFileName":
  123. #define wszRegHierFileName        TEXT("HierFileName")
  124.  
  125.  
  126. #define wszCLASS_CERTADMIN      TEXT("CertificateAuthority.Admin")
  127. #define wszCLASS_CERTCONFIG      TEXT("CertificateAuthority.Config")
  128. #define wszCLASS_CERTGETCONFIG      TEXT("CertificateAuthority.GetConfig")
  129. #define wszCLASS_CERTENCODE      TEXT("CertificateAuthority.Encode")
  130. #define wszCLASS_CERTEXIT      TEXT("CertificateAuthority.Exit")
  131. #define wszCLASS_CERTPOLICY      TEXT("CertificateAuthority.Policy")
  132. #define wszCLASS_CERTREQUEST      TEXT("CertificateAuthority.Request")
  133. #define wszCLASS_CERTSERVEREXIT      TEXT("CertificateAuthority.ServerExit")
  134. #define wszCLASS_CERTSERVERPOLICY TEXT("CertificateAuthority.ServerPolicy")
  135.  
  136.  
  137. //+--------------------------------------------------------------------------
  138. // Name properties:
  139.  
  140. #define wszPROPDISTINGUISHEDNAME TEXT("DistinguishedName")
  141. #define wszPROPRAWNAME           TEXT("RawName")
  142. #define wszPROPNAMETYPE          TEXT("NameType")
  143. #define wszPROPCOUNTRY           TEXT("Country")
  144. #define wszPROPORGANIZATION      TEXT("Organization")
  145. #define wszPROPORGUNIT           TEXT("OrgUnit")
  146. #define wszPROPCOMMONNAME        TEXT("CommonName")
  147. #define wszPROPLOCALITY          TEXT("Locality")
  148. #define wszPROPSTATE             TEXT("State")
  149. #define wszPROPTITLE             TEXT("Title")
  150. #define wszPROPGIVENNAME         TEXT("GivenName")
  151. #define wszPROPINITIALS          TEXT("Initials")
  152. #define wszPROPSURNAME           TEXT("SurName")
  153. #define wszPROPDOMAINCOMPONENT   TEXT("DomainComponent")
  154. #define wszPROPEMAIL             TEXT("EMail")
  155.  
  156. //+--------------------------------------------------------------------------
  157. // Subject Name properties:
  158.  
  159. #define wszPROPSUBJECTDOT        TEXT("Subject.")
  160. #define wszPROPSUBJECTDISTINGUISHEDNAME \
  161.                     wszPROPSUBJECTDOT wszPROPDISTINGUISHEDNAME
  162. #define wszPROPSUBJECTRAWNAME       wszPROPSUBJECTDOT wszPROPRAWNAME
  163. #define wszPROPSUBJECTNAMETYPE      wszPROPSUBJECTDOT wszPROPNAMETYPE
  164. #define wszPROPSUBJECTCOUNTRY       wszPROPSUBJECTDOT wszPROPCOUNTRY
  165. #define wszPROPSUBJECTORGANIZATION  wszPROPSUBJECTDOT wszPROPORGANIZATION
  166. #define wszPROPSUBJECTORGUNIT       wszPROPSUBJECTDOT wszPROPORGUNIT
  167. #define wszPROPSUBJECTCOMMONNAME    wszPROPSUBJECTDOT wszPROPCOMMONNAME
  168. #define wszPROPSUBJECTLOCALITY      wszPROPSUBJECTDOT wszPROPLOCALITY
  169. #define wszPROPSUBJECTSTATE         wszPROPSUBJECTDOT wszPROPSTATE
  170. #define wszPROPSUBJECTTITLE        wszPROPSUBJECTDOT wszPROPTITLE
  171. #define wszPROPSUBJECTGIVENNAME        wszPROPSUBJECTDOT wszPROPGIVENNAME
  172. #define wszPROPSUBJECTINITIALS        wszPROPSUBJECTDOT wszPROPINITIALS
  173. #define wszPROPSUBJECTSURNAME        wszPROPSUBJECTDOT wszPROPSURNAME
  174. #define wszPROPSUBJECTDOMAINCOMPONENT wszPROPSUBJECTDOT wszPROPDOMAINCOMPONENT
  175. #define wszPROPSUBJECTEMAIL        wszPROPSUBJECTDOT wszPROPEMAIL
  176.  
  177. #define wszPROPSUBJECTCOUNTRYOBJID \
  178.     wszPROPSUBJECTDOT TEXT(szOID_COUNTRY_NAME)
  179.  
  180. #define wszPROPSUBJECTORGANIZATIONOBJID \
  181.     wszPROPSUBJECTDOT TEXT(szOID_ORGANIZATION_NAME)
  182.  
  183. #define wszPROPSUBJECTORGUNITOBJID \
  184.     wszPROPSUBJECTDOT TEXT(szOID_ORGANIZATIONAL_UNIT_NAME)
  185.  
  186. #define wszPROPSUBJECTCOMMONNAMEOBJID \
  187.     wszPROPSUBJECTDOT TEXT(szOID_COMMON_NAME)
  188.  
  189. #define wszPROPSUBJECTLOCALITYOBJID \
  190.     wszPROPSUBJECTDOT TEXT(szOID_LOCALITY_NAME)
  191.  
  192. #define wszPROPSUBJECTSTATEOBJID \
  193.     wszPROPSUBJECTDOT TEXT(szOID_STATE_OR_PROVINCE_NAME)
  194.  
  195. #define wszPROPSUBJECTTITLEOBJID \
  196.     wszPROPSUBJECTDOT TEXT(szOID_TITLE)
  197.  
  198. #define wszPROPSUBJECTGIVENNAMEOBJID \
  199.     wszPROPSUBJECTDOT TEXT(szOID_GIVEN_NAME)
  200.  
  201. #define wszPROPSUBJECTINITIALSOBJID \
  202.     wszPROPSUBJECTDOT TEXT(szOID_INITIALS)
  203.  
  204. #define wszPROPSUBJECTSURNAMEOBJID \
  205.     wszPROPSUBJECTDOT TEXT(szOID_SUR_NAME)
  206.  
  207.  
  208. //+--------------------------------------------------------------------------
  209. // For mapping request attribute names to internal property names:
  210.  
  211. // Map to wszPROPSUBJECTCOMMONNAME:
  212. #define wszATTRCOMMONNAME1        TEXT("CN")
  213. #define wszATTRCOMMONNAME2        TEXT("CommonName")
  214.  
  215. // Map to wszPROPSUBJECTLOCALITY:
  216. #define wszATTRLOCALITY1        TEXT("L")
  217. #define wszATTRLOCALITY2        TEXT("Locality")
  218.  
  219. // Map to wszPROPSUBJECTSTATE:
  220. #define wszATTRSTATE1            TEXT("S")
  221. #define wszATTRSTATE2            TEXT("State")
  222.  
  223. // Map to wszPROPSUBJECTCOUNTRY:
  224. #define wszATTRCOUNTRY1            TEXT("C")
  225. #define wszATTRCOUNTRY2            TEXT("Country")
  226.  
  227. // Map to wszPROPSUBJECTORGANIZATION:
  228. #define wszATTRORG1            TEXT("O")
  229. #define wszATTRORG2            TEXT("Org")
  230. #define wszATTRORG3            TEXT("Organization")
  231.  
  232. // Map to wszPROPSUBJECTORGUNIT:
  233. #define wszATTRORGUNIT1            TEXT("OU")
  234. #define wszATTRORGUNIT2            TEXT("OrgUnit")
  235. #define wszATTRORGUNIT3            TEXT("OrganizationUnit")
  236. #define wszATTRORGUNIT4            TEXT("OrganizationalUnit")
  237.  
  238. // Map to wszPROPSUBJECTDOMAINCOMPONENT:
  239. #define wszATTRDOMAINCOMPONENT1        TEXT("DC")
  240. #define wszATTRDOMAINCOMPONENT2        TEXT("DomainComponent")
  241.  
  242. // Map to wszPROPSUBJECTEMAIL:
  243. #define wszATTREMAIL1            TEXT("E")
  244. #define wszATTREMAIL2            TEXT("EMail")
  245.  
  246.  
  247. //+--------------------------------------------------------------------------
  248. // Request properties:
  249.  
  250. #define wszPROPREQUESTREQUESTID            TEXT("RequestID")
  251. #define wszPROPREQUESTRAWREQUEST        TEXT("RawRequest")
  252. #define wszPROPREQUESTATTRIBUTES        TEXT("RequestAttributes")
  253. #define wszPROPREQUESTTYPE            TEXT("RequestType")
  254. #define wszPROPREQUESTFLAGS            TEXT("RequestFlags")
  255. #define wszPROPREQUESTSTATUS            TEXT("Status")
  256. #define wszPROPREQUESTSTATUSCODE        TEXT("StatusCode")
  257. #define wszPROPREQUESTDISPOSITION        TEXT("Disposition")
  258. #define wszPROPREQUESTDISPOSITIONMESSAGE    TEXT("DispositionMessage")
  259. #define wszPROPREQUESTSUBMITTEDWHEN        TEXT("SubmittedWhen")
  260. #define wszPROPREQUESTRESOLVEDWHEN        TEXT("ResolvedWhen")
  261. #define wszPROPREQUESTREVOKEDWHEN        TEXT("RevokedWhen")
  262. #define wszPROPREQUESTREVOKEDEFFECTIVEWHEN  TEXT("RevokedEffectiveWhen")
  263. #define wszPROPREQUESTREVOKEDREASON          TEXT("RevokedReason")
  264. #define wszPROPREQUESTERNAME            TEXT("RequesterName")
  265.  
  266.  
  267. //+--------------------------------------------------------------------------
  268. // Request attribute properties:
  269.  
  270. #define wszPROPCHALLENGE        TEXT("Challenge")
  271. #define wszPROPEXPECTEDCHALLENGE    TEXT("ExpectedChallenge")
  272.  
  273.  
  274. //+--------------------------------------------------------------------------
  275. // Certificate properties:
  276.  
  277. #define wszPROPCERTIFICATEREQUESTID        TEXT("RequestID")
  278. #define wszPROPRAWCERTIFICATE            TEXT("RawCertificate")
  279. #define wszPROPCERTIFICATETYPE            TEXT("CertificateType")
  280. #define wszPROPCERTIFICATESERIALNUMBER        TEXT("SerialNumber")
  281. #define wszPROPCERTIFICATENOTBEFOREDATE        TEXT("NotBefore")
  282. #define wszPROPCERTIFICATENOTAFTERDATE        TEXT("NotAfter")
  283. #define wszPROPCERTIFICATERAWPUBLICKEY        TEXT("RawPublicKey")
  284. #define wszPROPCERTIFICATEPUBLICKEYALGORITHM TEXT("PublicKeyAlgorithm")
  285. #define wszPROPCERTIFICATERAWPUBLICKEYALGORITHMPARAMETERS \
  286.     TEXT("RawPublicKeyAlgorithmParameters")
  287.  
  288.  
  289. //+--------------------------------------------------------------------------
  290. // Certificate extension properties:
  291.  
  292. #define EXTENSION_CRITICAL_FLAG     0x00000001
  293. #define EXTENSION_DISABLE_FLAG     0x00000002
  294. #define EXTENSION_POLICY_MASK     0x0000ffff    // Settable by admin+policy
  295.  
  296. #define EXTENSION_ORIGIN_REQUEST 0x00010000
  297. #define EXTENSION_ORIGIN_POLICY     0x00020000
  298. #define EXTENSION_ORIGIN_ADMIN     0x00030000
  299. #define EXTENSION_ORIGIN_SERVER     0x00040000
  300. #define EXTENSION_ORIGIN_MASK     0x000f0000
  301.  
  302.  
  303. //+--------------------------------------------------------------------------
  304. // GetProperty/SetProperty Flags:
  305. //
  306. // Choose one Type
  307.  
  308. #define PROPTYPE_LONG         0x00000001    // Signed long
  309. #define PROPTYPE_DATE         0x00000002    // Date+Time
  310. #define PROPTYPE_BINARY         0x00000003    // Binary data
  311. #define PROPTYPE_STRING         0x00000004    // Unicode String
  312.  
  313.  
  314. // Request Status property values:
  315.  
  316. #define REQSTATUS_ACTIVE    1
  317. #define REQSTATUS_ACCEPTED    2
  318. #define REQSTATUS_DENIED    3
  319. #define REQSTATUS_PENDING    4
  320. #define REQSTATUS_ERROR        5
  321.  
  322.  
  323. // VerifyRequest() return values
  324.  
  325. #define VR_PENDING    0     // request will be accepted or denied later
  326. #define VR_INSTANT_OK    1     // request was accepted
  327. #define VR_INSTANT_BAD    2     // request was rejected
  328.  
  329.  
  330. #ifndef szOID_CRL_DIST_POINTS
  331. # define szOID_CRL_DIST_POINTS           "2.5.29.31"
  332. # define CERT_ALT_NAME_URL                7
  333. # define szOID_NETSCAPE_REVOCATION_URL   "2.16.840.1.113730.1.3"
  334. #endif
  335.  
  336.  
  337. #endif // _CERTSRV_H_
  338.