1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6
7#ifndef _INC_CRYPTXML
8#define _INC_CRYPTXML
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14#ifndef DECLSPEC_IMPORT
15#ifndef __WIDL__
16#define DECLSPEC_IMPORT __declspec(dllimport)
17#else
18#define DECLSPEC_IMPORT
19#endif
20#endif
21
22#ifndef CRYPTXMLAPI
23#define CRYPTXMLAPI DECLSPEC_IMPORT
24#endif
25
26#ifndef __HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_DEFINED__
27#define __HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_DEFINED__
28/*Also in wincrypth*/
29typedef ULONG_PTR HCRYPTPROV_OR_NCRYPT_KEY_HANDLE;
30#endif /*__HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_DEFINED__*/
31
32#ifndef __BCRYPT_KEY_HANDLE_DEFINED__
33#define __BCRYPT_KEY_HANDLE_DEFINED__
34/*also in bcrypt.h*/
35typedef LPVOID BCRYPT_KEY_HANDLE;
36#endif /*__BCRYPT_KEY_HANDLE_DEFINED__*/
37
38typedef HANDLE HCRYPTXML;
39
40#if (_WIN32_WINNT >= 0x0601)
41
42typedef enum tagCRYPT_XML_CHARSET {
43  CRYPT_XML_CHARSET_AUTO      = 0,
44  CRYPT_XML_CHARSET_UTF8      = 1,
45  CRYPT_XML_CHARSET_UTF16LE   = 2,
46  CRYPT_XML_CHARSET_UTF16BE   = 3
47} CRYPT_XML_CHARSET;
48
49typedef enum tagCRYPT_XML_KEYINFO_SPEC {
50  CRYPT_XML_KEYINFO_SPEC_NONE      = 0,
51  CRYPT_XML_KEYINFO_SPEC_ENCODED   = 1,
52  CRYPT_XML_KEYINFO_SPEC_PARAM     = 2
53} CRYPT_XML_KEYINFO_SPEC;
54
55typedef enum tagCRYPT_XML_PROPERTY_ID {
56  CRYPT_XML_PROPERTY_MAX_HEAP_SIZE        = 1,
57  CRYPT_XML_PROPERTY_SIGNATURE_LOCATION   = 2,
58  CRYPT_XML_PROPERTY_MAX_SIGNATURES       = 3,
59  CRYPT_XML_PROPERTY_DOC_DECLARATION      = 4,
60  CRYPT_XML_PROPERTY_XML_OUTPUT_CHARSET   = 5,
61  CRYPT_XML_PROPERTY_HMAC_OUTPUT_LENGTH   = 6
62} CRYPT_XML_PROPERTY_ID;
63
64typedef struct _CRYPT_XML_BLOB {
65  CRYPT_XML_CHARSET dwCharset;
66  ULONG             cbData;
67  BYTE              *pbData;
68} CRYPT_XML_BLOB, *PCRYPT_XML_BLOB;
69
70#define CRYPT_XML_BLOB_MAX 0x7FFFFFF8
71
72typedef struct _CRYPT_XML_ALGORITHM {
73  ULONG          cbSize;
74  LPCWSTR        wszAlgorithm;
75  CRYPT_XML_BLOB Encoded;
76} CRYPT_XML_ALGORITHM, *PCRYPT_XML_ALGORITHM;
77
78typedef struct _CRYPT_XML_ALGORITHM_INFO {
79  DWORD cbSize;
80  WCHAR *wszAlgorithmURI;
81  WCHAR *wszName;
82  DWORD dwGroupId;
83  WCHAR *wszCNGAlgid;
84  WCHAR wszCNGExtraAlgid;
85  DWORD dwSignFlags;
86  DWORD dwVerifyFlags;
87  void  pvPaddingInfo;
88  void  pvExtraInfo;
89} CRYPT_XML_ALGORITHM_INFO, *PCRYPT_XML_ALGORITHM_INFO;
90
91#define CRYPT_XML_GROUP_ID_HASH 1
92#define CRYPT_XML_GROUP_ID_SIGN 2
93
94typedef HRESULT (CALLBACK *PFN_CRYPT_XML_WRITE_CALLBACK)(
95  void *pvCallbackState,
96  BYTE pbData,
97  ULONG cbData
98);
99
100typedef HRESULT ( WINAPI *CryptXmlDllEncodeAlgorithm )(
101  CRYPT_XML_ALGORITHM_INFO *pAlgInfo,
102  CRYPT_XML_CHARSET dwCharset,
103  void *pvCallbackState,
104  PFN_CRYPT_XML_WRITE_CALLBACK pfnWrite
105);
106
107typedef HANDLE CRYPT_XML_DIGEST;
108
109typedef HRESULT ( WINAPI *CryptXmlDllCreateDigest )(
110  const CRYPT_XML_ALGORITHM *pDigestMethod,
111  ULONG *pcbSize,
112  CRYPT_XML_DIGEST *phDigest
113);
114
115typedef HRESULT ( WINAPI *CryptXmlDllDigestData )(
116    CRYPT_XML_DIGEST hDigest,
117    BYTE *pbData,
118    ULONG cbDigest
119);
120
121typedef HRESULT ( WINAPI *CryptXmlDllFinalizeDigest )(
122  CRYPT_XML_DIGEST hDigest,
123  BYTE *pbDigest,
124  ULONG cbDigest
125);
126
127typedef HRESULT ( WINAPI *CryptXmlDllCloseDigest )(
128  CRYPT_XML_DIGEST hDigest
129);
130
131typedef HRESULT ( WINAPI *CryptXmlDllSignData )(
132  const CRYPT_XML_ALGORITHM *pSignatureMethod,
133  HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
134  DWORD dwKeySpec,
135  const BYTE *pbInput,
136  ULONG cbInput,
137  BYTE *pbOutput,
138  ULONG cbOutput,
139  ULONG *pcbResult
140);
141
142typedef HRESULT ( WINAPI *CryptXmlDllVerifySignature )(
143  const CRYPT_XML_ALGORITHM *pSignatureMethod,
144  HCRYPTXML_PROV hCryptProv,
145  HCRYPTXML_KEY hKey,
146  const BYTE *pbInput,
147  ULONG cbInput,
148  const BYTE *pbSignature,
149  ULONG cbSignature
150);
151
152typedef HRESULT ( WINAPI *CryptXmlDllCreateKey )(
153  CRYPT_XML_BLOB *pEncoded,
154  const BCRYPT_KEY_HANDLE *phKey
155);
156
157typedef HRESULT ( WINAPI *CryptXmlDllEncodeKeyValue )(
158  NCRYPT_KEY_HANDLE hKey,
159  CRYPT_XML_CHARSET dwCharset,
160  void *pvCallbackState,
161  PFN_CRYPT_XML_WRITE_CALLBACK pfnWrite
162);
163
164typedef struct _CRYPT_XML_CRYPTOGRAPHIC_INTERFACE {
165  ULONG                       cbSize;
166  CryptXmlDllEncodeAlgorithm  fpCryptXmlEncodeAlgorithm;
167  CryptXmlDllCreateDigest     fpCryptXmlCreateDigest;
168  CryptXmlDllDigestData       fpCryptXmlDigestData;
169  CryptXmlDllFinalizeDigest   fpCryptXmlFinalizeDigest;
170  CryptXmlDllCloseDigest      fpCryptXmlCloseDigest;
171  CryptXmlDllSignData         fpCryptXmlSignData;
172  CryptXmlDllVerifySignature  fpCryptXmlVerifySignature;
173  CryptXmlDllGetAlgorithmInfo fpCryptXmlGetAlgorithmInfo;
174} CRYPT_XML_CRYPTOGRAPHIC_INTERFACE, *PCRYPT_XML_CRYPTOGRAPHIC_INTERFACE;
175
176typedef HRESULT ( WINAPI *CryptXmlDllGetInterface )(
177  DWORD dwFlags,
178  const CRYPT_XML_ALGORITHM_INFO *pMethod,
179  CRYPT_XML_CRYPTOGRAPHIC_INTERFACE *pInterface
180);
181
182typedef struct _CRYPT_XML_DATA_BLOB {
183  ULONG cbData;
184  BYTE  *pbData;
185} CRYPT_XML_DATA_BLOB, *PCRYPT_XML_DATA_BLOB;
186
187typedef HRESULT (CALLBACK *PFN_CRYPT_XML_DATA_PROVIDER_READ)(
188  void *pvCallbackState,
189  BYTE *pbData,
190  ULONG cbData,
191  ULONG *pcbRead
192);
193
194typedef HRESULT (CALLBACK *PFN_CRYPT_XML_DATA_PROVIDER_CLOSE)(
195  void *pvCallbackState
196);
197
198typedef struct _CRYPT_XML_DATA_PROVIDER {
199  void                              *pvCallbackState;
200  ULONG                             cbBufferSize;
201  PFN_CRYPT_XML_DATA_PROVIDER_READ  pfnRead;
202  PFN_CRYPT_XML_DATA_PROVIDER_CLOSE pfnClose;
203} CRYPT_XML_DATA_PROVIDER, *PCRYPT_XML_DATA_PROVIDER;
204
205typedef HRESULT (CALLBACK *PFN_CRYPT_XML_CREATE_TRANSFORM)(
206  const CRYPT_XML_ALGORITHM *pTransform,
207  CRYPT_XML_DATA_PROVIDER *pProviderIn,
208  CRYPT_XML_DATA_PROVIDER *pProviderOut
209);
210
211typedef struct _CRYPT_XML_TRANSFORM_INFO {
212  ULONG                          cbSize;
213  LPCWSTR                        wszAlgorithm;
214  ULONG                          cbBufferSize;
215  DWORD                          dwFlags;
216  PFN_CRYPT_XML_CREATE_TRANSFORM pfnCreateTransform;
217} CRYPT_XML_TRANSFORM_INFO, *PCRYPT_XML_TRANSFORM_INFO;
218
219#define CRYPT_XML_TRANSFORM_ON_STREAM 0x00000001
220#define CRYPT_XML_TRANSFORM_ON_NODESET 0x00000002
221#define CRYPT_XML_TRANSFORM_URI_QUERY_STRING 0x00000003
222
223typedef struct _CRYPT_XML_TRANSFORM_CHAIN_CONFIG {
224  ULONG                     cbSize;
225  ULONG                     cTransformInfo;
226  PCRYPT_XML_TRANSFORM_INFO *rgpTransformInfo;
227} CRYPT_XML_TRANSFORM_CHAIN_CONFIG, *PCRYPT_XML_TRANSFORM_CHAIN_CONFIG;
228
229typedef struct _CRYPT_XML_REFERENCE {
230  ULONG               cbSize;
231  HCRYPTXML           hReference;
232  LPCWSTR             wszId;
233  LPCWSTR             wszUri;
234  LPCWSTR             wszType;
235  CRYPT_XML_ALGORITHM DigestMethod;
236  CRYPT_DATA_BLOB     DigestValue;
237  ULONG               cTransform;
238  CRYPT_XML_ALGORITHM *rgTransform;
239} CRYPT_XML_REFERENCE, *PCRYPT_XML_REFERENCE;
240
241typedef struct _CRYPT_XML_REFERENCES {
242  ULONG                cReference;
243  PCRYPT_XML_REFERENCE *rgpReference;
244} CRYPT_XML_REFERENCES, *PCRYPT_XML_REFERENCES;
245
246typedef struct _CRYPT_XML_SIGNED_INFO {
247  ULONG                cbSize;
248  LPCWSTR              wszId;
249  CRYPT_XML_ALGORITHM  Canonicalization;
250  CRYPT_XML_ALGORITHM  SignatureMethod;
251  ULONG                cReference;
252  PCRYPT_XML_REFERENCE *rgpReference;
253  CRYPT_XML_BLOB       Encoded;
254} CRYPT_XML_SIGNED_INFO, *PCRYPT_XML_SIGNED_INFO;
255
256typedef struct _CRYPT_XML_ISSUER_SERIAL {
257  LPCWSTR wszIssuer ;
258  LPCWSTR wszSerial;
259} CRYPT_XML_ISSUER_SERIAL;
260
261typedef struct _CRYPT_XML_X509DATA_ITEM {
262  DWORD dwType;
263  __C89_NAMELESS union {
264    CRYPT_XML_ISSUER_SERIAL IssuerSerial;
265    CRYPT_XML_DATA_BLOB     SKI;
266    LPCWSTR                 wszSubjectName;
267    CRYPT_XML_DATA_BLOB     Certificate;
268    CRYPT_XML_DATA_BLOB     CRL;
269    CRYPT_XML_BLOB          Custom;
270  } ;
271} CRYPT_XML_X509DATA_ITEM;
272
273#define CRYPT_XML_X509DATA_TYPE_ISSUER_SERIAL 0x00000001
274#define CRYPT_XML_X509DATA_TYPE_SKI 0x00000002
275#define CRYPT_XML_X509DATA_TYPE_SUBJECT_NAME 0x00000003
276#define CRYPT_XML_X509DATA_TYPE_CERTIFICATE 0x00000004
277#define CRYPT_XML_X509DATA_TYPE_CRL 0x00000005
278#define CRYPT_XML_X509DATA_TYPE_CUSTOM 0x00000006
279
280typedef struct _CRYPT_XML_X509DATA {
281  UINT                    cX509Data;
282  CRYPT_XML_X509DATA_ITEM *rgX509Data;
283} CRYPT_XML_X509DATA, *PCRYPT_XML_X509DATA;
284
285typedef struct _CRYPT_XML_KEY_INFO_ITEM {
286  DWORD dwType;
287  __C89_NAMELESS union {
288    LPCWSTR             wszKeyName;
289    CRYPT_XML_KEY_VALUE KeyValue;
290    CRYPT_XML_BLOB      RetrievalMethod;
291    CRYPT_XML_X509DATA  X509Data;
292    CRYPT_XML_BLOB      Custom;
293  } ;
294} CRYPT_XML_KEY_INFO_ITEM;
295
296#define CRYPT_XML_KEYINFO_TYPE_KEYNAME 0x00000001
297#define CRYPT_XML_KEYINFO_TYPE_KEYVALUE 0x00000002
298#define CRYPT_XML_KEYINFO_TYPE_RETRIEVAL 0x00000003
299#define CRYPT_XML_KEYINFO_TYPE_X509DATA 0x00000004
300#define CRYPT_XML_KEYINFO_TYPE_CUSTOM 0x00000005
301
302typedef struct _CRYPT_XML_KEY_DSA_KEY_VALUE {
303  CRYPT_XML_DATA_BLOB P;
304  CRYPT_XML_DATA_BLOB Q;
305  CRYPT_XML_DATA_BLOB G;
306  CRYPT_XML_DATA_BLOB Y;
307  CRYPT_XML_DATA_BLOB J;
308  CRYPT_XML_DATA_BLOB Seed;
309  CRYPT_XML_DATA_BLOB Counter;
310} CRYPT_XML_KEY_DSA_KEY_VALUE;
311
312typedef struct _CRYPT_XML_KEY_RSA_KEY_VALUE {
313  CRYPT_XML_DATA_BLOB Modulus;
314  CRYPT_XML_DATA_BLOB Exponent;
315} CRYPT_XML_KEY_RSA_KEY_VALUE;
316
317typedef struct _CRYPT_XML_KEY_ECDSA_KEY_VALUE {
318  LPCWSTR                  wszNamedCurve;
319  CRYPT_XML_DATA_BLOB      X;
320  CRYPT_XML_DATA_BLOB      Y;
321  CRYPT_XML_BLOB           ExplicitPara;
322} CRYPT_XML_KEY_ECDSA_KEY_VALUE;
323
324typedef struct _CRYPT_XML_KEY_VALUE {
325  DWORD dwType;
326  __C89_NAMELESS union {
327    CRYPT_XML_KEY_DSA_KEY_VALUE   DSAKeyValue;
328    CRYPT_XML_KEY_RSA_KEY_VALUE   RSAKeyValue;
329    CRYPT_XML_KEY_ECDSA_KEY_VALUE ECDSAKeyValue;
330    CRYPT_XML_BLOB                Custom;
331  } ;
332} CRYPT_XML_KEY_VALUE;
333
334#define CRYPT_XML_KEY_VALUE_TYPE_DSA 0x00000001
335#define CRYPT_XML_KEY_VALUE_TYPE_RSA 0x00000002
336#define CRYPT_XML_KEY_VALUE_TYPE_ECDSA 0x00000003
337#define CRYPT_XML_KEY_VALUE_TYPE_CUSTOM 0x00000004
338
339typedef struct _CRYPT_XML_KEY_INFO {
340  ULONG                   cbSize;
341  LPCWSTR                 wszId;
342  UINT                    cKeyInfo;
343  CRYPT_XML_KEY_INFO_ITEM *rgKeyInfo;
344  BCRYPT_KEY_HANDLE       hVerifyKey;
345} CRYPT_XML_KEY_INFO;
346
347typedef struct _CRYPT_XML_OBJECT {
348  ULONG                cbSize;
349  HCRYPTXML            hObject;
350  LPCWSTR              wszId;
351  LPCWSTR              wszMimeType;
352  LPCWSTR              wszEncoding;
353  CRYPT_XML_REFERENCES Manifest;
354  CRYPT_XML_BLOB       Encoded;
355} CRYPT_XML_OBJECT, *PCRYPT_XML_OBJECT;
356
357typedef struct _CRYPT_XML_SIGNATURE {
358  ULONG                 cbSize;
359  HCRYPTXML             hSignature;
360  LPCWSTR               wszId;
361  CRYPT_XML_SIGNED_INFO SignedInfo;
362  CRYPT_DATA_BLOB       SignatureValue;
363  CRYPT_XML_KEY_INFO    *pKeyInfo;
364  ULONG                 cObject;
365  PCRYPT_XML_OBJECT     *rgpObject;
366} CRYPT_XML_SIGNATURE, *PCRYPT_XML_SIGNATURE;
367
368typedef struct _CRYPT_XML_DOC_CTXT {
369  ULONG                            cbSize;
370  HCRYPTXML                        hDocCtxt;
371  CRYPT_XML_TRANSFORM_CHAIN_CONFIG *pTransformsConfig;
372  ULONG                            cSignature;
373  PCRYPT_XML_SIGNATURE             *rgpSignature;
374} CRYPT_XML_DOC_CTXT, *PCRYPT_XML_DOC_CTXT;
375
376typedef struct _CRYPT_XML_KEYINFO_PARAM {
377  LPCWSTR   wszId;
378  LPCWSTR   wszKeyName;
379  CERT_BLOB SKI;
380  LPCWSTR   wszSubjectName;
381  ULONG     cCertificate;
382  CERT_BLOB *rgCertificate;
383  ULONG     cCRL;
384  CERT_BLOB *rgCRL;
385} CRYPT_XML_KEYINFO_PARAM;
386
387typedef struct _CRYPT_XML_PROPERTY {
388  CRYPT_XML_PROPERTY_ID dwPropId;
389  const void            *pvValue;
390  ULONG                 cbValue;
391} CRYPT_XML_PROPERTY, *PCRYPT_XML_PROPERTY;
392
393typedef struct _CRYPT_XML_STATUS {
394  ULONG cbSize;
395  DWORD dwErrorStatus;
396  DWORD dwInfoStatus;
397} CRYPT_XML_STATUS, *PCRYPT_XML_STATUS;
398
399#define CRYPT_XML_STATUS_ERROR_NOT_RESOLVED 0x00000001
400#define CRYPT_XML_STATUS_ERROR_DIGEST_INVALID 0x00000002
401#define CRYPT_XML_STATUS_ERROR_NOT_SUPPORTED_ALGORITHM 0x00000005
402#define CRYPT_XML_STATUS_ERROR_NOT_SUPPORTED_TRANSFORM 0x00000008
403#define CRYPT_XML_STATUS_ERROR_SIGNATURE_INVALID 0x00010000
404#define CRYPT_XML_STATUS_ERROR_KEYINFO_NOT_PARSED 0x00020000
405
406#define CRYPT_XML_STATUS_INTERNAL_REFERENCE 0x00000001
407#define CRYPT_XML_STATUS_KEY_AVAILABLE 0x00000002
408#define CRYPT_XML_STATUS_DIGESTING 0x00000004
409#define CRYPT_XML_STATUS_DIGEST_VALID 0x00000008
410#define CRYPT_XML_STATUS_SIGNATURE_VALID 0x00010000
411#define CRYPT_XML_STATUS_OPENED_TO_ENCODE 0x80000000
412
413CRYPTXMLAPI HRESULT WINAPI CryptXmlAddObject(
414  HCRYPTXML hSignatureOrObject,
415  DWORD dwFlags,
416  const CRYPT_XML_PROPERTY *rgProperty,
417  ULONG cProperty,
418  const PCRYPT_XML_BLOB pEncoded,
419  const CRYPT_XML_OBJECT **ppObject
420);
421
422CRYPTXMLAPI HRESULT WINAPI CryptXmlClose(
423  HCRYPTXML hCryptXml
424);
425
426CRYPTXMLAPI HRESULT WINAPI CryptXmlCreateReference(
427  HCRYPTXML hCryptXml,
428  DWORD dwFlags,
429  LPCWSTR wszId,
430  LPCWSTR wszURI,
431  LPCWSTR wszType,
432  const CRYPT_XML_ALGORITHM *pDigestMethod,
433  ULONG cTransform,
434  const CRYPT_XML_ALGORITHM *rgTransform,
435  HCRYPTXML *phReference
436);
437
438#define CRYPT_XML_FLAG_CREATE_REFERENCE_AS_OBJECT 0x00000001
439
440CRYPTXMLAPI HRESULT WINAPI CryptXmlDigestReference(
441  HCRYPTXML hReference,
442  DWORD dwFlags,
443  CRYPT_XML_DATA_PROVIDER *pDataProviderIn
444);
445
446#define CRYPT_XML_REFERENCE_DATA_TRANSFORMED 0x00000001
447
448CRYPTXMLAPI HRESULT WINAPI CryptXmlEncode(
449  HCRYPTXML hCryptXml,
450  CRYPT_XML_CHARSET dwCharset,
451  const CRYPT_XML_PROPERTY *rgProperty,
452  ULONG cProperty,
453  void *pvCallbackState,
454  PFN_CRYPT_XML_WRITE_CALLBACK pfnWrite
455);
456
457CRYPTXMLAPI HRESULT WINAPI CryptXmlGetAlgorithmInfo(
458  const CRYPT_XML_ALGORITHM *pXmlAlgorithm,
459  DWORD dwFlags,
460  CRYPT_XML_ALGORITHM_INFO **ppAlgInfo
461);
462
463CRYPTXMLAPI HRESULT WINAPI CryptXmlGetDocContext(
464  HCRYPTXML hCryptXml,
465  const CRYPT_XML_DOC_CTXT **ppStruct
466);
467
468CRYPTXMLAPI HRESULT WINAPI CryptXmlGetReference(
469  HCRYPTXML HCRYPTXML,
470  const CRYPT_XML_REFERENCE **ppStruct
471);
472
473CRYPTXMLAPI HRESULT WINAPI CryptXmlGetSignature(
474  HCRYPTXML hCryptXml,
475  const PCRYPT_XML_SIGNATURE **ppStruct
476);
477
478CRYPTXMLAPI HRESULT WINAPI CryptXmlGetStatus(
479  HCRYPTXML hCryptXml,
480  CRYPT_XML_STATUS *pStatus
481);
482
483CRYPTXMLAPI HRESULT WINAPI CryptXmlGetTransforms(
484  PCRYPT_XML_TRANSFORM_CHAIN_CONFIG **pConfig
485);
486
487CRYPTXMLAPI HRESULT WINAPI CryptXmlImportPublicKey(
488  DWORD dwFlags,
489  CRYPT_XML_KEY_VALUE *pKeyValue,
490  BCRYPT_KEY_HANDLE *phKey
491);
492
493#define CRYPT_XML_FLAG_DISABLE_EXTENSIONS 0x10000000
494
495CRYPTXMLAPI HRESULT WINAPI CryptXmlOpenToDecode(
496  CRYPT_XML_TRANSFORM_CHAIN_CONFIG *pConfig,
497  DWORD dwFlags,
498  const CRYPT_XML_PROPERTY *rgProperty,
499  ULONG cProperty,
500  const CRYPT_XML_BLOB *pEncoded,
501  HCRYPTXML phCryptXml
502);
503
504#define CRYPT_XML_FLAG_NO_SERIALIZE 0x80000000
505#define CRYPT_XML_FLAG_DISABLE_EXTENSION 0x10000000
506
507CRYPTXMLAPI HRESULT WINAPI CryptXmlOpenToEncode(
508  CRYPT_XML_TRANSFORM_CHAIN_CONFIG *pConfig,
509  DWORD dwFlags,
510  LPCWSTR wszId,
511  CRYPT_XML_PROPERTY *rgProperty,
512  ULONG cProperty,
513  CRYPT_XML_BLOB *pEncoded,
514  HCRYPTXML *phSignature
515);
516
517#define CRYPT_XML_FLAG_NO_SERIALIZE 0x80000000
518#define CRYPT_XML_FLAG_DISABLE_EXTENSIONS 0x10000000
519
520CRYPTXMLAPI HRESULT WINAPI CryptXmlSetHMACSecret(
521  HCRYPTXML hSignature,
522  const BYTE *pbSecret,
523  ULONG cbSecret
524);
525
526CRYPTXMLAPI HRESULT WINAPI CryptXmlSign(
527  HCRYPTXML hSignature,
528  HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hKey,
529  DWORD dwKeySpec,
530  DWORD dwFlags,
531  CRYPT_XML_KEYINFO_SPEC dwKeyInfoSpec,
532  const void pvKeyInfoSpec,
533  const CRYPT_XML_ALGORITHM pSignatureMethod,
534  const CRYPT_XML_ALGORITHM pCanonicalization
535);
536
537#define AT_KEYEXCHANGE 1
538#define AT_SIGNATURE 2
539#define CERT_NCRYPT_KEY_SPEC 0xFFFFFFFF
540
541#define CRYPT_XML_SIGN_ADD_KEYVALUE 0x00000001
542#define CRYPT_XML_FLAG_DISABLE_EXTENSIONS 0x10000000
543
544CRYPTXMLAPI HRESULT WINAPI CryptXmlVerifySignature(
545  HCRYPTXML hSignature,
546  BCRYPT_KEY_HANDLE hKey,
547  DWORD dwFlags
548);
549
550#endif /*(_WIN32_WINNT >= 0x0601)*/
551
552#ifdef __cplusplus
553}
554#endif
555#endif /*_INC_CRYPTXML*/
556