Leaked source code of windows server 2003
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.

501 lines
18 KiB

  1. //+--------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1996 - 1999
  5. //
  6. // File: certcli.idl
  7. //
  8. // Contents: IDL source for certcli.dll
  9. //
  10. //---------------------------------------------------------------------------
  11. // This file will be processed by the MIDL tool to produce the type library
  12. // (certcli.tlb) and marshalling code.
  13. import "wtypes.idl";
  14. import "certif.idl";
  15. import "oaidl.idl";
  16. //+--------------------------------------------------------------------------
  17. // ICertGetConfig -- local COM interface, local implementation
  18. //+--------------------------------------------------------------------------
  19. [
  20. object,
  21. uuid(c7ea09c0-ce17-11d0-8833-00a0c903b83c),
  22. dual,
  23. helpstring("ICertGetConfig Interface"),
  24. pointer_default(unique)
  25. ]
  26. interface ICertGetConfig: IDispatch
  27. {
  28. HRESULT GetConfig(
  29. [in] LONG Flags,
  30. [out, retval] BSTR *pstrOut);
  31. };
  32. //+--------------------------------------------------------------------------
  33. // ICertConfig::GetField()
  34. // strFieldName parameter values:
  35. cpp_quote("#define wszCONFIG_COMMONNAME L\"CommonName\"")
  36. cpp_quote("#define wszCONFIG_ORGUNIT L\"OrgUnit\"")
  37. cpp_quote("#define wszCONFIG_ORGANIZATION L\"Organization\"")
  38. cpp_quote("#define wszCONFIG_LOCALITY L\"Locality\"")
  39. cpp_quote("#define wszCONFIG_STATE L\"State\"")
  40. cpp_quote("#define wszCONFIG_COUNTRY L\"Country\"")
  41. cpp_quote("#define wszCONFIG_CONFIG L\"Config\"")
  42. cpp_quote("#define wszCONFIG_EXCHANGECERTIFICATE L\"ExchangeCertificate\"")
  43. cpp_quote("#define wszCONFIG_SIGNATURECERTIFICATE L\"SignatureCertificate\"")
  44. cpp_quote("#define wszCONFIG_DESCRIPTION L\"Description\"")
  45. cpp_quote("#define wszCONFIG_COMMENT L\"Comment\" // obsolete: use Description")
  46. cpp_quote("#define wszCONFIG_SERVER L\"Server\"")
  47. cpp_quote("#define wszCONFIG_AUTHORITY L\"Authority\"")
  48. cpp_quote("#define wszCONFIG_SANITIZEDNAME L\"SanitizedName\"")
  49. cpp_quote("#define wszCONFIG_SHORTNAME L\"ShortName\"")
  50. cpp_quote("#define wszCONFIG_SANITIZEDSHORTNAME L\"SanitizedShortName\"")
  51. cpp_quote("#define wszCONFIG_FLAGS L\"Flags\"")
  52. // Flags setting
  53. const LONG CAIF_DSENTRY = 0x00000001; // bit set for CA from DS
  54. const LONG CAIF_SHAREDFOLDERENTRY = 0x00000002; // CA from shared folder
  55. const LONG CAIF_REGISTRY = 0x00000004; // CA from local registry
  56. const LONG CAIF_LOCAL = 0x00000008; // local CA
  57. const LONG CAIF_REGISTRYPARENT = 0x00000010; // CA parent from registry
  58. //+--------------------------------------------------------------------------
  59. // ICertConfig -- local COM interface, local implementation
  60. //+--------------------------------------------------------------------------
  61. [
  62. object,
  63. uuid(372fce34-4324-11d0-8810-00a0c903b83c),
  64. dual,
  65. helpstring("ICertConfig Interface"),
  66. pointer_default(unique)
  67. ]
  68. interface ICertConfig: IDispatch
  69. {
  70. HRESULT Reset(
  71. [in] LONG Index,
  72. [out, retval] LONG *pCount);
  73. HRESULT Next(
  74. [out, retval] LONG *pIndex);
  75. HRESULT GetField(
  76. [in] BSTR const strFieldName,
  77. [out, retval] BSTR *pstrOut);
  78. HRESULT GetConfig(
  79. [in] LONG Flags,
  80. [out, retval] BSTR *pstrOut);
  81. };
  82. //+--------------------------------------------------------------------------
  83. // ICertConfig2 -- local COM interface, local implementation
  84. //+--------------------------------------------------------------------------
  85. [
  86. object,
  87. uuid(7a18edde-7e78-4163-8ded-78e2c9cee924),
  88. dual,
  89. helpstring("ICertConfig2 Interface"),
  90. pointer_default(unique)
  91. ]
  92. interface ICertConfig2: ICertConfig
  93. {
  94. HRESULT SetSharedFolder(
  95. [in] BSTR const strSharedFolder);
  96. };
  97. //+--------------------------------------------------------------------------
  98. // ICertRequest::Submit()
  99. // Flags for request and attributes encoding and type:
  100. const LONG CR_IN_BASE64HEADER = 0x00000000; // BASE64 with begin/end
  101. const LONG CR_IN_BASE64 = 0x00000001; // BASE64 w/o begin/end
  102. const LONG CR_IN_BINARY = 0x00000002; // binary request
  103. const LONG CR_IN_ENCODEANY = 0x000000ff; // Could be any of the above
  104. const LONG CR_IN_ENCODEMASK = 0x000000ff; // request encoding mask
  105. const LONG CR_IN_FORMATANY = 0x00000000; // Could be any of the below
  106. const LONG CR_IN_PKCS10 = 0x00000100; // PKCS 10 request
  107. const LONG CR_IN_KEYGEN = 0x00000200; // Keygen request
  108. const LONG CR_IN_PKCS7 = 0x00000300; // PKCS 7 renewal request
  109. const LONG CR_IN_CMC = 0x00000400; // CMC request
  110. const LONG CR_IN_FORMATMASK = 0x0000ff00; // request format mask
  111. // Cert Server 1.0 obsolete encryption bits:
  112. //const LONG CR_IN_ENCRYPTED_REQUEST = 0x00010000; // request encrypted
  113. //const LONG CR_IN_ENCRYPTED_ATTRIBUTES = 0x00020000; // attributes encrypted
  114. const LONG CR_IN_RPC = 0x00020000; // Use RPC instead of DCOM
  115. const LONG CR_IN_FULLRESPONSE = 0x00040000; // Return CMC Full Response
  116. const LONG CR_IN_CRLS = 0x00080000; // include current CRLs
  117. // Flags for GetConfig flag
  118. const LONG CC_DEFAULTCONFIG = 0x00000000; // ask to get 1st pingable CA
  119. const LONG CC_UIPICKCONFIG = 0x00000001; // invoke UI to pick CA
  120. const LONG CC_FIRSTCONFIG = 0x00000002; // pick first CA
  121. const LONG CC_LOCALCONFIG = 0x00000003; // pick local CA
  122. const LONG CC_LOCALACTIVECONFIG = 0x00000004; // pick local pingable CA
  123. const LONG CC_UIPICKCONFIGSKIPLOCALCA = 0x00000005; // UI to pick non-local CA
  124. //+--------------------------------------------------------------------------
  125. // ICertRequest::Submit(), ICertRequest::RetrievePending() and
  126. // returned Disposition:
  127. const LONG CR_DISP_INCOMPLETE = 0x00000000; // request did not complete
  128. const LONG CR_DISP_ERROR = 0x00000001; // request failed
  129. const LONG CR_DISP_DENIED = 0x00000002; // request denied
  130. const LONG CR_DISP_ISSUED = 0x00000003; // cert issued
  131. const LONG CR_DISP_ISSUED_OUT_OF_BAND = 0x00000004; // cert issued separately
  132. const LONG CR_DISP_UNDER_SUBMISSION = 0x00000005; // taken under submission
  133. const LONG CR_DISP_REVOKED = 0x00000006; // issued and revoked
  134. //+--------------------------------------------------------------------------
  135. // ICertRequest::GetCACertificate(),
  136. // ICertRequest::GetCertificate(),
  137. // ICertAdmin::GetCRL(),
  138. // ICertRequest2::GetCAProperty(),
  139. // ICertAdmin2::GetCAProperty()
  140. // ICertRequest2::GetFullResponseProperty(),
  141. // Flags for certificate encoding:
  142. const LONG CR_OUT_BASE64HEADER = 0x00000000; // BASE64 with begin/end
  143. const LONG CR_OUT_BASE64 = 0x00000001; // BASE64 w/o begin/end
  144. const LONG CR_OUT_BINARY = 0x00000002; // binary certificate
  145. const LONG CR_OUT_ENCODEMASK = 0x000000ff; // certificate encoding mask
  146. const LONG CR_OUT_CHAIN = 0x00000100; // return certificate chain
  147. const LONG CR_OUT_CRLS = 0x00000200; // chain with current CRLs
  148. //+--------------------------------------------------------------------------
  149. // ICertRequest2::GetErrorMessageText() Flags
  150. const LONG CR_GEMT_HRESULT_STRING = 0x00000001; // Append "0xXX (Win32: DD)"
  151. //+--------------------------------------------------------------------------
  152. // ICertRequest2::GetCAProperty(), ICertAdmin2::GetCAProperty() PropId
  153. cpp_quote("#define CR_PROP_NONE 0 // Invalid")
  154. cpp_quote("#define CR_PROP_FILEVERSION 1 // String")
  155. cpp_quote("#define CR_PROP_PRODUCTVERSION 2 // String")
  156. cpp_quote("#define CR_PROP_EXITCOUNT 3 // Long")
  157. cpp_quote("")
  158. cpp_quote("// CR_PROP_EXITCOUNT Elements:")
  159. cpp_quote("#define CR_PROP_EXITDESCRIPTION 4 // String, Indexed")
  160. cpp_quote("")
  161. cpp_quote("#define CR_PROP_POLICYDESCRIPTION 5 // String")
  162. cpp_quote("#define CR_PROP_CANAME 6 // String")
  163. cpp_quote("#define CR_PROP_SANITIZEDCANAME 7 // String")
  164. cpp_quote("#define CR_PROP_SHAREDFOLDER 8 // String")
  165. cpp_quote("#define CR_PROP_PARENTCA 9 // String")
  166. cpp_quote("#define CR_PROP_CATYPE 10 // Long")
  167. cpp_quote("#define CR_PROP_CASIGCERTCOUNT 11 // Long")
  168. cpp_quote("")
  169. cpp_quote("// CR_PROP_CASIGCERTCOUNT Elements:")
  170. cpp_quote("#define CR_PROP_CASIGCERT 12 // Binary, Indexed")
  171. cpp_quote("")
  172. cpp_quote("// CR_PROP_CASIGCERTCOUNT Elements:")
  173. cpp_quote("#define CR_PROP_CASIGCERTCHAIN 13 // Binary, Indexed")
  174. cpp_quote("")
  175. cpp_quote("#define CR_PROP_CAXCHGCERTCOUNT 14 // Long")
  176. cpp_quote("")
  177. cpp_quote("// CR_PROP_CAXCHGCERTCOUNT Elements:")
  178. cpp_quote("#define CR_PROP_CAXCHGCERT 15 // Binary, Indexed")
  179. cpp_quote("")
  180. cpp_quote("// CR_PROP_CAXCHGCERTCOUNT Elements:")
  181. cpp_quote("#define CR_PROP_CAXCHGCERTCHAIN 16 // Binary, Indexed")
  182. cpp_quote("")
  183. cpp_quote("// CR_PROP_CASIGCERTCOUNT Elements:")
  184. cpp_quote("// Fetch only if CR_PROP_CRLSTATE[i] == CA_DISP_VALID")
  185. cpp_quote("// May also be available if CR_PROP_CRLSTATE[i] == CA_DISP_INVALID")
  186. cpp_quote("#define CR_PROP_BASECRL 17 // Binary, Indexed")
  187. cpp_quote("")
  188. cpp_quote("// CR_PROP_CASIGCERTCOUNT Elements:")
  189. cpp_quote("// Fetch only if Delta CRLs enabled && CR_PROP_CRLSTATE[i] == CA_DISP_VALID")
  190. cpp_quote("// May also be available if CR_PROP_CRLSTATE[i] == CA_DISP_INVALID")
  191. cpp_quote("#define CR_PROP_DELTACRL 18 // Binary, Indexed")
  192. cpp_quote("")
  193. cpp_quote("// CR_PROP_CASIGCERTCOUNT Elements:")
  194. cpp_quote("#define CR_PROP_CACERTSTATE 19 // Long, Indexed")
  195. cpp_quote("")
  196. cpp_quote("// CR_PROP_CASIGCERTCOUNT Elements:")
  197. cpp_quote("#define CR_PROP_CRLSTATE 20 // Long, Indexed")
  198. cpp_quote("")
  199. cpp_quote("#define CR_PROP_CAPROPIDMAX 21 // Long")
  200. cpp_quote("#define CR_PROP_DNSNAME 22 // String")
  201. cpp_quote("#define CR_PROP_ROLESEPARATIONENABLED 23 // Long")
  202. cpp_quote("#define CR_PROP_KRACERTUSEDCOUNT 24 // Long")
  203. cpp_quote("#define CR_PROP_KRACERTCOUNT 25 // Long")
  204. cpp_quote("")
  205. cpp_quote("// CR_PROP_KRACERTCOUNT Elements:")
  206. cpp_quote("#define CR_PROP_KRACERT 26 // Binary, Indexed")
  207. cpp_quote("")
  208. cpp_quote("// CR_PROP_KRACERTCOUNT Elements:")
  209. cpp_quote("#define CR_PROP_KRACERTSTATE 27 // Long, Indexed")
  210. cpp_quote("")
  211. cpp_quote("#define CR_PROP_ADVANCEDSERVER 28 // Long")
  212. cpp_quote("#define CR_PROP_TEMPLATES 29 // String")
  213. cpp_quote("")
  214. cpp_quote("// CR_PROP_CASIGCERTCOUNT Elements:")
  215. cpp_quote("// Fetch only if CR_PROP_CRLSTATE[i] == CA_DISP_VALID")
  216. cpp_quote("#define CR_PROP_BASECRLPUBLISHSTATUS 30 // Long, Indexed")
  217. cpp_quote("")
  218. cpp_quote("// CR_PROP_CASIGCERTCOUNT Elements:")
  219. cpp_quote("// Fetch only if Delta CRLs enabled && CR_PROP_CRLSTATE[i] == CA_DISP_VALID")
  220. cpp_quote("#define CR_PROP_DELTACRLPUBLISHSTATUS 31 // Long, Indexed")
  221. cpp_quote("")
  222. cpp_quote("// CR_PROP_CASIGCERTCOUNT Elements:")
  223. cpp_quote("#define CR_PROP_CASIGCERTCRLCHAIN 32 // Binary, Indexed")
  224. cpp_quote("")
  225. cpp_quote("// CR_PROP_CAXCHGCERTCOUNT Elements:")
  226. cpp_quote("#define CR_PROP_CAXCHGCERTCRLCHAIN 33 // Binary, Indexed")
  227. cpp_quote("")
  228. cpp_quote("// CR_PROP_CASIGCERTCOUNT Elements:")
  229. cpp_quote("#define CR_PROP_CACERTSTATUSCODE 34 // Long, Indexed")
  230. cpp_quote("")
  231. cpp_quote("// CR_PROP_CASIGCERTCOUNT Elements:")
  232. cpp_quote("#define CR_PROP_CAFORWARDCROSSCERT 35 // Binary, Indexed")
  233. cpp_quote("")
  234. cpp_quote("// CR_PROP_CASIGCERTCOUNT Elements:")
  235. cpp_quote("#define CR_PROP_CABACKWARDCROSSCERT 36 // Binary, Indexed")
  236. cpp_quote("")
  237. cpp_quote("// CR_PROP_CASIGCERTCOUNT Elements:")
  238. cpp_quote("#define CR_PROP_CAFORWARDCROSSCERTSTATE 37 // Long, Indexed")
  239. cpp_quote("")
  240. cpp_quote("// CR_PROP_CASIGCERTCOUNT Elements:")
  241. cpp_quote("#define CR_PROP_CABACKWARDCROSSCERTSTATE 38 // Long, Indexed")
  242. cpp_quote("")
  243. cpp_quote("// CR_PROP_CASIGCERTCOUNT Elements:")
  244. cpp_quote("#define CR_PROP_CACERTVERSION 39 // Long, Indexed")
  245. cpp_quote("#define CR_PROP_SANITIZEDCASHORTNAME 40 // String")
  246. //+--------------------------------------------------------------------------
  247. // ICertRequest2::GetFullResponseProperty() PropId
  248. cpp_quote("")
  249. cpp_quote("")
  250. cpp_quote("#define FR_PROP_NONE 0 // Invalid")
  251. cpp_quote("#define FR_PROP_FULLRESPONSE 1 // Binary")
  252. cpp_quote("#define FR_PROP_STATUSINFOCOUNT 2 // Long")
  253. cpp_quote("")
  254. cpp_quote("// FR_PROP_STATUSINFOCOUNT Elements:")
  255. cpp_quote("#define FR_PROP_BODYPARTSTRING 3 // String, Indexed")
  256. cpp_quote("")
  257. cpp_quote("// FR_PROP_STATUSINFOCOUNT Elements:")
  258. cpp_quote("#define FR_PROP_STATUS 4 // Long, Indexed")
  259. cpp_quote("")
  260. cpp_quote("// FR_PROP_STATUSINFOCOUNT Elements:")
  261. cpp_quote("#define FR_PROP_STATUSSTRING 5 // String, Indexed")
  262. cpp_quote("")
  263. cpp_quote("// FR_PROP_STATUSINFOCOUNT Elements:")
  264. cpp_quote("#define FR_PROP_OTHERINFOCHOICE 6 // Long, Indexed")
  265. cpp_quote("")
  266. cpp_quote("// FR_PROP_STATUSINFOCOUNT Elements:")
  267. cpp_quote("#define FR_PROP_FAILINFO 7 // Long, Indexed")
  268. cpp_quote("")
  269. cpp_quote("// FR_PROP_STATUSINFOCOUNT Elements:")
  270. cpp_quote("#define FR_PROP_PENDINFOTOKEN 8 // Binary, Indexed")
  271. cpp_quote("")
  272. cpp_quote("// FR_PROP_STATUSINFOCOUNT Elements:")
  273. cpp_quote("#define FR_PROP_PENDINFOTIME 9 // Date, Indexed")
  274. cpp_quote("")
  275. cpp_quote("// FR_PROP_STATUSINFOCOUNT Elements:")
  276. cpp_quote("#define FR_PROP_ISSUEDCERTIFICATEHASH 10 // Binary, Indexed")
  277. cpp_quote("")
  278. cpp_quote("// FR_PROP_STATUSINFOCOUNT Elements:")
  279. cpp_quote("#define FR_PROP_ISSUEDCERTIFICATE 11 // Binary, Indexed")
  280. cpp_quote("")
  281. cpp_quote("// FR_PROP_STATUSINFOCOUNT Elements:")
  282. cpp_quote("#define FR_PROP_ISSUEDCERTIFICATECHAIN 12 // Binary, Indexed")
  283. cpp_quote("")
  284. cpp_quote("// FR_PROP_STATUSINFOCOUNT Elements:")
  285. cpp_quote("#define FR_PROP_ISSUEDCERTIFICATECRLCHAIN 13 // Binary, Indexed")
  286. cpp_quote("")
  287. cpp_quote("// FR_PROP_STATUSINFOCOUNT Elements:")
  288. cpp_quote("#define FR_PROP_ENCRYPTEDKEYHASH 14 // Binary, Indexed")
  289. cpp_quote("")
  290. cpp_quote("#define FR_PROP_FULLRESPONSENOPKCS7 15 // Binary")
  291. //+--------------------------------------------------------------------------
  292. // ICertRequest -- local COM interface, implementation uses DCOM
  293. //+--------------------------------------------------------------------------
  294. [
  295. object,
  296. uuid(014e4840-5523-11d0-8812-00a0c903b83c),
  297. dual,
  298. helpstring("ICertRequest Interface"),
  299. pointer_default(unique)
  300. ]
  301. interface ICertRequest: IDispatch
  302. {
  303. HRESULT Submit(
  304. [in] LONG Flags,
  305. [in] BSTR const strRequest,
  306. [in] BSTR const strAttributes,
  307. [in] BSTR const strConfig,
  308. [out, retval] LONG *pDisposition);
  309. HRESULT RetrievePending(
  310. [in] LONG RequestId,
  311. [in] BSTR const strConfig,
  312. [out, retval] LONG *pDisposition);
  313. HRESULT GetLastStatus(
  314. [out, retval] LONG *pStatus);
  315. HRESULT GetRequestId(
  316. [out, retval] LONG *pRequestId);
  317. HRESULT GetDispositionMessage(
  318. [out, retval] BSTR *pstrDispositionMessage);
  319. HRESULT GetCACertificate(
  320. [in] LONG fExchangeCertificate,
  321. [in] BSTR const strConfig,
  322. [in] LONG Flags, // CR_OUT_*
  323. [out, retval] BSTR *pstrCertificate);
  324. HRESULT GetCertificate(
  325. [in] LONG Flags, // CR_OUT_*
  326. [out, retval] BSTR *pstrCertificate);
  327. };
  328. //+--------------------------------------------------------------------------
  329. // ICertRequest2 -- local COM interface, implementation uses DCOM
  330. //+--------------------------------------------------------------------------
  331. [
  332. object,
  333. uuid(a4772988-4a85-4fa9-824e-b5cf5c16405a),
  334. dual,
  335. helpstring("ICertRequest2 Interface"),
  336. pointer_default(unique)
  337. ]
  338. interface ICertRequest2: ICertRequest
  339. {
  340. HRESULT GetIssuedCertificate(
  341. [in] BSTR const strConfig,
  342. [in] LONG RequestId, // -1: use strSerialNumber
  343. [in] BSTR const strSerialNumber, // OPTIONAL
  344. [out, retval] LONG *pDisposition);
  345. HRESULT GetErrorMessageText(
  346. [in] LONG hrMessage,
  347. [in] LONG Flags,
  348. [out, retval] BSTR *pstrErrorMessageText);
  349. HRESULT GetCAProperty(
  350. [in] BSTR const strConfig,
  351. [in] LONG PropId, // CR_PROP_*
  352. [in] LONG PropIndex,
  353. [in] LONG PropType, // PROPTYPE_*
  354. [in] LONG Flags, // CR_OUT_*
  355. [out, retval] VARIANT *pvarPropertyValue);
  356. HRESULT GetCAPropertyFlags(
  357. [in] BSTR const strConfig,
  358. [in] LONG PropId, // CR_PROP_*
  359. [out, retval] LONG *pPropFlags); // PROPTYPE_* | PROPFLAGS_*
  360. HRESULT GetCAPropertyDisplayName(
  361. [in] BSTR const strConfig,
  362. [in] LONG PropId, // CR_PROP_*
  363. [out, retval] BSTR *pstrDisplayName);
  364. HRESULT GetFullResponseProperty(
  365. [in] LONG PropId, // FR_PROP_*
  366. [in] LONG PropIndex,
  367. [in] LONG PropType, // PROPTYPE_*
  368. [in] LONG Flags, // CR_OUT_*
  369. [out, retval] VARIANT *pvarPropertyValue);
  370. };
  371. //+--------------------------------------------------------------------------
  372. // certcli Type library
  373. //+--------------------------------------------------------------------------
  374. [
  375. uuid(372fce32-4324-11d0-8810-00a0c903b83c),
  376. version(1.0),
  377. helpstring("CertCli 1.0 Type Library")
  378. ]
  379. library CERTCLIENTLib
  380. {
  381. importlib("stdole2.tlb");
  382. //------------------------------------------------
  383. // CCertGetConfig
  384. [
  385. uuid(c6cc49b0-ce17-11d0-8833-00a0c903b83c),
  386. helpstring("CertGetConfig Class")
  387. ]
  388. coclass CCertGetConfig
  389. {
  390. [default] interface ICertGetConfig;
  391. };
  392. //------------------------------------------------
  393. // CCertConfig
  394. [
  395. uuid(372fce38-4324-11d0-8810-00a0c903b83c),
  396. helpstring("CertConfig Class")
  397. ]
  398. coclass CCertConfig
  399. {
  400. [default] interface ICertConfig2;
  401. };
  402. //------------------------------------------------
  403. // CCertRequest
  404. [
  405. uuid(98aff3f0-5524-11d0-8812-00a0c903b83c),
  406. helpstring("CertRequest Class")
  407. ]
  408. coclass CCertRequest
  409. {
  410. [default] interface ICertRequest2;
  411. };
  412. //------------------------------------------------
  413. // CCertServerPolicy
  414. [
  415. uuid(aa000926-ffbe-11cf-8800-00a0c903b83c),
  416. helpstring("CertServerPolicy Class")
  417. ]
  418. coclass CCertServerPolicy
  419. {
  420. [default] interface ICertServerPolicy;
  421. };
  422. //------------------------------------------------
  423. // CCertServerExit
  424. [
  425. uuid(4c4a5e40-732c-11d0-8816-00a0c903b83c),
  426. helpstring("CertServerExit Class")
  427. ]
  428. coclass CCertServerExit
  429. {
  430. [default] interface ICertServerExit;
  431. };
  432. };