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.

532 lines
23 KiB

  1. //+----------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992-1999.
  5. //
  6. // File: cryptuiapi.h
  7. //
  8. // Contents: Cryptographic UI API Prototypes and Definitions
  9. //
  10. //-----------------------------------------------------------------------------
  11. #ifndef __CRYPTUIAPI_H__
  12. #define __CRYPTUIAPI_H__
  13. #if defined (_MSC_VER) && (_MSC_VER >= 1020)
  14. #pragma once
  15. #endif
  16. #include <wincrypt.h>
  17. #ifdef __cplusplus
  18. extern "C" {
  19. #endif
  20. #include <pshpack8.h>
  21. //+----------------------------------------------------------------------------
  22. // Dialog viewer of a certificate, CTL or CRL context.
  23. //
  24. // dwContextType and associated pvContext's
  25. // CERT_STORE_CERTIFICATE_CONTEXT PCCERT_CONTEXT
  26. // CERT_STORE_CRL_CONTEXT PCCRL_CONTEXT
  27. // CERT_STORE_CTL_CONTEXT PCCTL_CONTEXT
  28. //
  29. // dwFlags currently isn't used and should be set to 0.
  30. //-----------------------------------------------------------------------------
  31. BOOL
  32. WINAPI
  33. CryptUIDlgViewContext(
  34. IN DWORD dwContextType,
  35. IN const void *pvContext,
  36. IN OPTIONAL HWND hwnd, // Defaults to the desktop window
  37. IN OPTIONAL LPCWSTR pwszTitle, // Defaults to the context type title
  38. IN DWORD dwFlags,
  39. IN void *pvReserved
  40. );
  41. //+----------------------------------------------------------------------------
  42. // Dialog to select a certificate from the specified store.
  43. //
  44. // Returns the selected certificate context. If no certificate was
  45. // selected, NULL is returned.
  46. //
  47. // pwszTitle is either NULL or the title to be used for the dialog.
  48. // If NULL, the default title is used. The default title is
  49. // "Select Certificate".
  50. //
  51. // pwszDisplayString is either NULL or the text statement in the selection
  52. // dialog. If NULL, the default phrase
  53. // "Select a certificate you wish to use" is used in the dialog.
  54. //
  55. // dwDontUseColumn can be set to exclude columns from the selection
  56. // dialog. See the CRYPTDLG_SELECTCERT_*_COLUMN definitions below.
  57. //
  58. // dwFlags currently isn't used and should be set to 0.
  59. //-----------------------------------------------------------------------------
  60. PCCERT_CONTEXT
  61. WINAPI
  62. CryptUIDlgSelectCertificateFromStore(
  63. IN HCERTSTORE hCertStore,
  64. IN OPTIONAL HWND hwnd, // Defaults to the desktop window
  65. IN OPTIONAL LPCWSTR pwszTitle,
  66. IN OPTIONAL LPCWSTR pwszDisplayString,
  67. IN DWORD dwDontUseColumn,
  68. IN DWORD dwFlags,
  69. IN void *pvReserved
  70. );
  71. // flags for dwDontUseColumn
  72. #define CRYPTUI_SELECT_ISSUEDTO_COLUMN 0x000000001
  73. #define CRYPTUI_SELECT_ISSUEDBY_COLUMN 0x000000002
  74. #define CRYPTUI_SELECT_INTENDEDUSE_COLUMN 0x000000004
  75. #define CRYPTUI_SELECT_FRIENDLYNAME_COLUMN 0x000000008
  76. #define CRYPTUI_SELECT_LOCATION_COLUMN 0x000000010
  77. #define CRYPTUI_SELECT_EXPIRATION_COLUMN 0x000000020
  78. //+----------------------------------------------------------------------------
  79. //
  80. // The select cert dialog can be passed a filter proc to reduce the set of
  81. // certificates displayed. Return TRUE to display the certificate and FALSE to
  82. // hide it. If TRUE is returned then optionally the pfInitialSelectedCert
  83. // boolean may be set to TRUE to indicate to the dialog that this cert should
  84. // be the initially selected cert. Note that the most recent cert that had the
  85. // pfInitialSelectedCert boolean set during the callback will be the initially
  86. // selected cert.
  87. //
  88. //-----------------------------------------------------------------------------
  89. typedef BOOL (WINAPI * PFNCFILTERPROC) (
  90. PCCERT_CONTEXT pCertContext,
  91. BOOL *pfInitialSelectedCert,
  92. void *pvCallbackData
  93. );
  94. //+----------------------------------------------------------------------------
  95. // Valid values for dwFlags in CRYPTUI_CERT_MGR_STRUCT struct.
  96. //-----------------------------------------------------------------------------
  97. #define CRYPTUI_CERT_MGR_TAB_MASK 0x0000000F
  98. #define CRYPTUI_CERT_MGR_PUBLISHER_TAB 0x00000004
  99. #define CRYPTUI_CERT_MGR_SINGLE_TAB_FLAG 0x00008000
  100. //+----------------------------------------------------------------------------
  101. //
  102. // CRYPTUI_CERT_MGR_STRUCT
  103. //
  104. // dwSize IN Required: Should be set to
  105. // sizeof(CRYPTUI_CERT_MGR_STRUCT)
  106. //
  107. // hwndParent IN Optional: Parent of this dialog.
  108. //
  109. // dwFlags IN Optional: Personal is the default initially selected
  110. // tab.
  111. //
  112. // CRYPTUI_CERT_MGR_PUBLISHER_TAB may be set
  113. // to select Trusted Publishers as the
  114. // initially selected tab.
  115. //
  116. // CRYPTUI_CERT_MGR_SINGLE_TAB_FLAG may also
  117. // be set to only display the Trusted
  118. // Publishers tab.
  119. //
  120. // pwszTitle IN Optional: Title of the dialog.
  121. //
  122. // pszInitUsageOID IN Optional: The enhanced key usage object identifier
  123. // (OID). Certificates with this OID will
  124. // initially be shown as a default. User
  125. // can then choose different OIDs. NULL
  126. // means all certificates will be shown
  127. // initially.
  128. //
  129. //-----------------------------------------------------------------------------
  130. typedef struct _CRYPTUI_CERT_MGR_STRUCT
  131. {
  132. DWORD dwSize;
  133. HWND hwndParent;
  134. DWORD dwFlags;
  135. LPCWSTR pwszTitle;
  136. LPCSTR pszInitUsageOID;
  137. } CRYPTUI_CERT_MGR_STRUCT, *PCRYPTUI_CERT_MGR_STRUCT;
  138. typedef const CRYPTUI_CERT_MGR_STRUCT *PCCRYPTUI_CERT_MGR_STRUCT;
  139. //+----------------------------------------------------------------------------
  140. //
  141. // CryptUIDlgCertMgr
  142. //
  143. // The wizard to manage certificates in store.
  144. //
  145. // pCryptUICertMgr IN Required: Poitner to CRYPTUI_CERT_MGR_STRUCT
  146. // structure.
  147. //
  148. //-----------------------------------------------------------------------------
  149. BOOL
  150. WINAPI
  151. CryptUIDlgCertMgr(
  152. IN PCCRYPTUI_CERT_MGR_STRUCT pCryptUICertMgr
  153. );
  154. //+----------------------------------------------------------------------------
  155. //
  156. // CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO
  157. //
  158. // dwSize IN Required: Should be set to
  159. // sizeof(CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO)
  160. //
  161. // pGuidSubject IN Required: Idenfity the sip functions to load
  162. //
  163. // cbBlob IN Required: The size of blob, in bytes
  164. //
  165. // pwszDispalyName IN Optional: The display name of the blob to sign
  166. //
  167. //-----------------------------------------------------------------------------
  168. typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO
  169. {
  170. DWORD dwSize;
  171. GUID *pGuidSubject;
  172. DWORD cbBlob;
  173. BYTE *pbBlob;
  174. LPCWSTR pwszDisplayName;
  175. } CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO, *PCRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO;
  176. typedef const CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO *PCCRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO;
  177. //+----------------------------------------------------------------------------
  178. //
  179. // CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO
  180. //
  181. // dwSize IN Required: Should be set to
  182. // sizeof(CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO)
  183. //
  184. // cCertStore IN Required: The acount of certificate store array that
  185. // includes potentical sining certs
  186. //
  187. // rghCertStore IN Required: The certificate store array that includes
  188. // potential signing certs
  189. //
  190. // pFilterCallback IN Optional: The filter call back function for display
  191. // the certificate
  192. //
  193. // pvCallbackData IN Optional: The call back data
  194. //
  195. //-----------------------------------------------------------------------------
  196. typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO
  197. {
  198. DWORD dwSize;
  199. DWORD cCertStore;
  200. HCERTSTORE *rghCertStore;
  201. PFNCFILTERPROC pFilterCallback;
  202. void * pvCallbackData;
  203. } CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO, *PCRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO;
  204. typedef const CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO *PCCRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO;
  205. //+----------------------------------------------------------------------------
  206. //
  207. // CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO
  208. //
  209. // dwSize IN Required: Should be set to
  210. // sizeof(CRYPT_WIZ_DIGITAL_SIGN_PVK_FILE_INFO)
  211. //
  212. // pwszPvkFileName IN Required: The PVK file name
  213. //
  214. // pwszProvName IN Required: The provider name
  215. //
  216. // dwProvType IN Required: The provider type
  217. //
  218. //-----------------------------------------------------------------------------
  219. typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO
  220. {
  221. DWORD dwSize;
  222. LPWSTR pwszPvkFileName;
  223. LPWSTR pwszProvName;
  224. DWORD dwProvType;
  225. } CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO, *PCRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO;
  226. typedef const CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO *PCCRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO;
  227. //+----------------------------------------------------------------------------
  228. // Valid values for dwPvkChoice in CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO
  229. // struct.
  230. //-----------------------------------------------------------------------------
  231. #define CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE 0x01
  232. #define CRYPTUI_WIZ_DIGITAL_SIGN_PVK_PROV 0x02
  233. //+----------------------------------------------------------------------------
  234. //
  235. // CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO
  236. //
  237. // dwSize IN Required: Should be set to
  238. // sizeof(CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO)
  239. //
  240. // pwszSigningCertFileName IN Required: The file name that contains the
  241. // signing cert(s)
  242. //
  243. // dwPvkChoice IN Required: Indicate the private key type.
  244. // It can be one of the following:
  245. // CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE
  246. // CRYPTUI_WIZ_DIGITAL_SIGN_PVK_PROV
  247. //
  248. // pPvkFileInfo IN Required: If dwPvkChoice == CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE
  249. //
  250. // pPvkProvInfo IN Required: If dwPvkContainer == CRYPTUI_WIZ_DIGITAL_SIGN_PVK_PROV
  251. //
  252. //-----------------------------------------------------------------------------
  253. typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO
  254. {
  255. DWORD dwSize;
  256. LPWSTR pwszSigningCertFileName;
  257. DWORD dwPvkChoice;
  258. union
  259. {
  260. PCCRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO pPvkFileInfo;
  261. PCRYPT_KEY_PROV_INFO pPvkProvInfo;
  262. };
  263. } CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO, *PCRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO;
  264. typedef const CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO *PCCRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO;
  265. //+----------------------------------------------------------------------------
  266. // Valid values for dwAttrFlags in CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO
  267. // struct.
  268. //-----------------------------------------------------------------------------
  269. #define CRYPTUI_WIZ_DIGITAL_SIGN_COMMERCIAL 0x0001
  270. #define CRYPTUI_WIZ_DIGITAL_SIGN_INDIVIDUAL 0x0002
  271. //+----------------------------------------------------------------------------
  272. //
  273. // CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO
  274. //
  275. // dwSize IN Required: Should be set to
  276. // sizeof(CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO)
  277. //
  278. // dwAttrFlags IN Required: Flag to indicate signing options.
  279. // It can be one of the following:
  280. // CRYPTUI_WIZ_DIGITAL_SIGN_COMMERCIAL
  281. // CRYPTUI_WIZ_DIGITAL_SIGN_INDIVIDUAL
  282. //
  283. // pwszDescription IN Optional: The description of the signing
  284. // subject.
  285. // pwszMoreInfoLocation IN Optional: The localtion to get more
  286. // information about file this
  287. // information will be shown upon
  288. // download time.
  289. //
  290. // pszHashAlg IN Optional: The hashing algorithm for the
  291. // signature. NULL means using SHA1
  292. // hashing algorithm.
  293. //
  294. // pwszSigningCertDisplayString IN Optional: The display string to be
  295. // displayed on the signing
  296. // certificate wizard page. The
  297. // string should prompt user to
  298. // select a certificate for a
  299. // particular purpose.
  300. //
  301. // hAddtionalCertStores IN Optional: The addtional cert store to add to
  302. // the signature.
  303. //
  304. // psAuthenticated IN Optional: User supplied authenticated
  305. // attributes added to the signature.
  306. //
  307. // psUnauthenticated IN Optional: User supplied unauthenticated
  308. // attributes added to the signature.
  309. //
  310. //-----------------------------------------------------------------------------
  311. typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO
  312. {
  313. DWORD dwSize;
  314. DWORD dwAttrFlags;
  315. LPCWSTR pwszDescription;
  316. LPCWSTR pwszMoreInfoLocation;
  317. LPCSTR pszHashAlg;
  318. LPCWSTR pwszSigningCertDisplayString;
  319. HCERTSTORE hAdditionalCertStore;
  320. PCRYPT_ATTRIBUTES psAuthenticated;
  321. PCRYPT_ATTRIBUTES psUnauthenticated;
  322. } CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO, *PCRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO;
  323. typedef const CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO *PCCRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO;
  324. //+----------------------------------------------------------------------------
  325. // Valid values for dwSubjectChoice in CRYPTUI_WIZ_DIGITAL_SIGN_INFO struct.
  326. //-----------------------------------------------------------------------------
  327. #define CRYPTUI_WIZ_DIGITAL_SIGN_SUBJECT_FILE 0x01
  328. #define CRYPTUI_WIZ_DIGITAL_SIGN_SUBJECT_BLOB 0x02
  329. //+----------------------------------------------------------------------------
  330. // Valid values for dwSigningCertChoice in CRYPTUI_WIZ_DIGITAL_SIGN_INFO
  331. // struct.
  332. //-----------------------------------------------------------------------------
  333. #define CRYPTUI_WIZ_DIGITAL_SIGN_CERT 0x01
  334. #define CRYPTUI_WIZ_DIGITAL_SIGN_STORE 0x02
  335. #define CRYPTUI_WIZ_DIGITAL_SIGN_PVK 0x03
  336. //+----------------------------------------------------------------------------
  337. // Valid values for dwAddtionalCertChoice in CRYPTUI_WIZ_DIGITAL_SIGN_INFO
  338. // struct.
  339. //-----------------------------------------------------------------------------
  340. #define CRYPTUI_WIZ_DIGITAL_SIGN_ADD_CHAIN 0x00000001
  341. #define CRYPTUI_WIZ_DIGITAL_SIGN_ADD_CHAIN_NO_ROOT 0x00000002
  342. //+----------------------------------------------------------------------------
  343. //
  344. // CRYPTUI_WIZ_DIGITAL_SIGN_INFO
  345. //
  346. // dwSize IN Required: Should be set to
  347. // sizeof(CRYPTUI_WIZ_DIGITAL_SIGN_INFO)
  348. //
  349. // dwSubjectChoice IN Required: If CRYPTUI_WIZ_NO_UI is set in dwFlags
  350. // of the CryptUIWizDigitalSign call.
  351. //
  352. // Optional: If CRYPTUI_WIZ_NO_UI is not set in
  353. // dwFlags of the CryptUIWizDigitalSign
  354. // call.
  355. //
  356. // Indicate whether to sign a file or to
  357. // sign a memory blob. 0 means promting
  358. // user for the file to sign.
  359. //
  360. // It can be one of the following:
  361. // CRYPTUI_WIZ_DIGITAL_SIGN_SUBJECT_FILE
  362. // CRYPTUI_WIZ_DIGITAL_SIGN_SUBJECT_BLOB
  363. //
  364. // pwszFileName IN Required: If dwSubjectChoice == CRYPTUI_WIZ_DIGITAL_SIGN_SUBJECT_FILE
  365. //
  366. // pSignBlobInfo IN Required: If dwSubhectChoice == CRYPTUI_WIZ_DIGITAL_SIGN_SUBJECT_BLOB
  367. //
  368. // dwSigningCertChoice IN Optional: Indicate the signing certificate.
  369. // 0 means using the certificates in
  370. // "My" store".
  371. //
  372. // It can be one of the following choices:
  373. // CRYPTUI_WIZ_DIGITAL_SIGN_CERT
  374. // CRYPTUI_WIZ_DIGITAL_SIGN_STORE
  375. // CRYPTUI_WIZ_DIGITAL_SIGN_PVK
  376. //
  377. // If CRYPTUI_WIZ_NO_UI is set in dwFlags
  378. // of the CryptUIWizDigitalSign call,
  379. // dwSigningCertChoice has to be
  380. // CRYPTUI_WIZ_DIGITAL_SIGN_CERT or
  381. // CRYPTUI_WIZ_DIGITAL_SIGN_PVK
  382. //
  383. // pSigningCertContext IN Required: If dwSigningCertChoice == CRYPTUI_WIZ_DIGITAL_SIGN_CERT
  384. //
  385. // pSigningCertStore IN Required: If dwSigningCertChoice == CRYPTUI_WIZ_DIGITAL_SIGN_STORE
  386. //
  387. // pSigningCertPvkInfo IN Required: If dwSigningCertChoise == CRYPTUI_WIZ_DIGITAL_SIGN_PVK
  388. //
  389. // pwszTimestampURL IN Optional: The timestamp URL address.
  390. //
  391. // dwAdditionalCertChoice IN Optional: Indicate additional certificates to be
  392. // included in the signature. 0 means no
  393. // addtional certificates will be added.
  394. //
  395. // The following flags are mutually
  396. // exclusive.
  397. // Only one of them can be set:
  398. // CRYPTUI_WIZ_DIGITAL_SIGN_ADD_CHAIN
  399. // CRYPTUI_WIZ_DIGITAL_SIGN_ADD_CHAIN_NO_ROOT
  400. //
  401. // pSignExtInfo IN Optional: The extended information for signing.
  402. //
  403. //-----------------------------------------------------------------------------
  404. typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_INFO
  405. {
  406. DWORD dwSize;
  407. DWORD dwSubjectChoice;
  408. union
  409. {
  410. LPCWSTR pwszFileName;
  411. PCCRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO pSignBlobInfo;
  412. };
  413. DWORD dwSigningCertChoice;
  414. union
  415. {
  416. PCCERT_CONTEXT pSigningCertContext;
  417. PCCRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO pSigningCertStore;
  418. PCCRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO pSigningCertPvkInfo;
  419. };
  420. LPCWSTR pwszTimestampURL;
  421. DWORD dwAdditionalCertChoice;
  422. PCCRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO pSignExtInfo;
  423. } CRYPTUI_WIZ_DIGITAL_SIGN_INFO, *PCRYPTUI_WIZ_DIGITAL_SIGN_INFO;
  424. typedef const CRYPTUI_WIZ_DIGITAL_SIGN_INFO *PCCRYPTUI_WIZ_DIGITAL_SIGN_INFO;
  425. //+----------------------------------------------------------------------------
  426. //
  427. // CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT
  428. //
  429. // dwSize IN Required: Should be set to
  430. // sizeof(CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT)
  431. //
  432. // cbBlob IN Required: The size of pbBlob in bytes.
  433. //
  434. // pbBlob IN Required: The signed blob.
  435. //
  436. //-----------------------------------------------------------------------------
  437. typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT
  438. {
  439. DWORD dwSize;
  440. DWORD cbBlob;
  441. BYTE *pbBlob;
  442. } CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT, *PCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT;
  443. typedef const CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT *PCCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT;
  444. //+----------------------------------------------------------------------------
  445. // Valid values for dwFlags parameter to CryptUIWizDigitalSign.
  446. //-----------------------------------------------------------------------------
  447. #define CRYPTUI_WIZ_NO_UI 0x0001
  448. //+----------------------------------------------------------------------------
  449. //
  450. // CryptUIWizDigitalSign
  451. //
  452. // The wizard to digitally sign a document or a blob.
  453. //
  454. // If CRYPTUI_WIZ_NO_UI is set in dwFlags, no UI will be shown. Otherwise,
  455. // user will be prompted for input through a wizard.
  456. //
  457. // dwFlags IN Required: See dwFlags values above.
  458. //
  459. // hwndParent IN Optional: The parent window handle.
  460. //
  461. // pwszWizardTitle IN Optional: The title of the wizard.
  462. //
  463. // pDigitalSignInfo IN Required: The information about the signing process.
  464. //
  465. // ppSignContext OUT Optional: The context pointer points to the signed
  466. // blob.
  467. //
  468. //-----------------------------------------------------------------------------
  469. BOOL
  470. WINAPI
  471. CryptUIWizDigitalSign(
  472. IN DWORD dwFlags,
  473. IN OPTIONAL HWND hwndParent,
  474. IN OPTIONAL LPCWSTR pwszWizardTitle,
  475. IN PCCRYPTUI_WIZ_DIGITAL_SIGN_INFO pDigitalSignInfo,
  476. OUT OPTIONAL PCCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT *ppSignContext
  477. );
  478. BOOL
  479. WINAPI
  480. CryptUIWizFreeDigitalSignContext(
  481. IN PCCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT pSignContext
  482. );
  483. #include <poppack.h>
  484. #ifdef __cplusplus
  485. } // Balance extern "C" above
  486. #endif
  487. #endif // _CRYPTUIAPI_H_