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