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 11 extern "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*/ 25 typedef 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*/ 31 typedef LPVOID BCRYPT_KEY_HANDLE; 32 #endif /*__BCRYPT_KEY_HANDLE_DEFINED__*/ 33 34 typedef HANDLE HCRYPTXML; 35 36 #if (_WIN32_WINNT >= 0x0601) 37 38 typedef 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 45 typedef 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 51 typedef 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 60 typedef 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 68 typedef struct _CRYPT_XML_ALGORITHM { 69 ULONG cbSize; 70 LPCWSTR wszAlgorithm; 71 CRYPT_XML_BLOB Encoded; 72 } CRYPT_XML_ALGORITHM, *PCRYPT_XML_ALGORITHM; 73 74 typedef 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 90 typedef HRESULT (CALLBACK *PFN_CRYPT_XML_WRITE_CALLBACK)( 91 void *pvCallbackState, 92 BYTE pbData, 93 ULONG cbData 94 ); 95 96 typedef 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 103 typedef HANDLE CRYPT_XML_DIGEST; 104 105 typedef HRESULT ( WINAPI *CryptXmlDllCreateDigest )( 106 const CRYPT_XML_ALGORITHM *pDigestMethod, 107 ULONG *pcbSize, 108 CRYPT_XML_DIGEST *phDigest 109 ); 110 111 typedef HRESULT ( WINAPI *CryptXmlDllDigestData )( 112 CRYPT_XML_DIGEST hDigest, 113 BYTE *pbData, 114 ULONG cbDigest 115 ); 116 117 typedef HRESULT ( WINAPI *CryptXmlDllFinalizeDigest )( 118 CRYPT_XML_DIGEST hDigest, 119 BYTE *pbDigest, 120 ULONG cbDigest 121 ); 122 123 typedef HRESULT ( WINAPI *CryptXmlDllCloseDigest )( 124 CRYPT_XML_DIGEST hDigest 125 ); 126 127 typedef 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 138 typedef 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 148 typedef HRESULT ( WINAPI *CryptXmlDllCreateKey )( 149 CRYPT_XML_BLOB *pEncoded, 150 const BCRYPT_KEY_HANDLE *phKey 151 ); 152 153 typedef 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 160 typedef 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 172 typedef HRESULT ( WINAPI *CryptXmlDllGetInterface )( 173 DWORD dwFlags, 174 const CRYPT_XML_ALGORITHM_INFO *pMethod, 175 CRYPT_XML_CRYPTOGRAPHIC_INTERFACE *pInterface 176 ); 177 178 typedef struct _CRYPT_XML_DATA_BLOB { 179 ULONG cbData; 180 BYTE *pbData; 181 } CRYPT_XML_DATA_BLOB, *PCRYPT_XML_DATA_BLOB; 182 183 typedef HRESULT (CALLBACK *PFN_CRYPT_XML_DATA_PROVIDER_READ)( 184 void *pvCallbackState, 185 BYTE *pbData, 186 ULONG cbData, 187 ULONG *pcbRead 188 ); 189 190 typedef HRESULT (CALLBACK *PFN_CRYPT_XML_DATA_PROVIDER_CLOSE)( 191 void *pvCallbackState 192 ); 193 194 typedef 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 201 typedef 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 207 typedef 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 219 typedef 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 225 typedef 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 237 typedef struct _CRYPT_XML_REFERENCES { 238 ULONG cReference; 239 PCRYPT_XML_REFERENCE *rgpReference; 240 } CRYPT_XML_REFERENCES, *PCRYPT_XML_REFERENCES; 241 242 typedef 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 252 typedef struct _CRYPT_XML_ISSUER_SERIAL { 253 LPCWSTR wszIssuer ; 254 LPCWSTR wszSerial; 255 } CRYPT_XML_ISSUER_SERIAL; 256 257 typedef 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 276 typedef struct _CRYPT_XML_X509DATA { 277 UINT cX509Data; 278 CRYPT_XML_X509DATA_ITEM *rgX509Data; 279 } CRYPT_XML_X509DATA, *PCRYPT_XML_X509DATA; 280 281 typedef 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 298 typedef 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 308 typedef 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 313 typedef 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 320 typedef 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 335 typedef 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 343 typedef 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 353 typedef 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 364 typedef 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 372 typedef 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 383 typedef 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 389 typedef 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 409 CRYPTXMLAPI 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 418 CRYPTXMLAPI HRESULT WINAPI CryptXmlClose( 419 HCRYPTXML hCryptXml 420 ); 421 422 CRYPTXMLAPI 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 436 CRYPTXMLAPI 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 444 CRYPTXMLAPI 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 453 CRYPTXMLAPI HRESULT WINAPI CryptXmlGetAlgorithmInfo( 454 const CRYPT_XML_ALGORITHM *pXmlAlgorithm, 455 DWORD dwFlags, 456 CRYPT_XML_ALGORITHM_INFO **ppAlgInfo 457 ); 458 459 CRYPTXMLAPI HRESULT WINAPI CryptXmlGetDocContext( 460 HCRYPTXML hCryptXml, 461 const CRYPT_XML_DOC_CTXT **ppStruct 462 ); 463 464 CRYPTXMLAPI HRESULT WINAPI CryptXmlGetReference( 465 HCRYPTXML HCRYPTXML, 466 const CRYPT_XML_REFERENCE **ppStruct 467 ); 468 469 CRYPTXMLAPI HRESULT WINAPI CryptXmlGetSignature( 470 HCRYPTXML hCryptXml, 471 const PCRYPT_XML_SIGNATURE **ppStruct 472 ); 473 474 CRYPTXMLAPI HRESULT WINAPI CryptXmlGetStatus( 475 HCRYPTXML hCryptXml, 476 CRYPT_XML_STATUS *pStatus 477 ); 478 479 CRYPTXMLAPI HRESULT WINAPI CryptXmlGetTransforms( 480 PCRYPT_XML_TRANSFORM_CHAIN_CONFIG **pConfig 481 ); 482 483 CRYPTXMLAPI 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 491 CRYPTXMLAPI 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 503 CRYPTXMLAPI 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 516 CRYPTXMLAPI HRESULT WINAPI CryptXmlSetHMACSecret( 517 HCRYPTXML hSignature, 518 const BYTE *pbSecret, 519 ULONG cbSecret 520 ); 521 522 CRYPTXMLAPI 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 540 CRYPTXMLAPI 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