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