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 #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*/ 29 typedef 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*/ 35 typedef LPVOID BCRYPT_KEY_HANDLE; 36 #endif /*__BCRYPT_KEY_HANDLE_DEFINED__*/ 37 38 typedef HANDLE HCRYPTXML; 39 40 #if (_WIN32_WINNT >= 0x0601) 41 42 typedef 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 49 typedef 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 55 typedef 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 64 typedef 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 72 typedef struct _CRYPT_XML_ALGORITHM { 73 ULONG cbSize; 74 LPCWSTR wszAlgorithm; 75 CRYPT_XML_BLOB Encoded; 76 } CRYPT_XML_ALGORITHM, *PCRYPT_XML_ALGORITHM; 77 78 typedef 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 94 typedef HRESULT (CALLBACK *PFN_CRYPT_XML_WRITE_CALLBACK)( 95 void *pvCallbackState, 96 BYTE pbData, 97 ULONG cbData 98 ); 99 100 typedef 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 107 typedef HANDLE CRYPT_XML_DIGEST; 108 109 typedef HRESULT ( WINAPI *CryptXmlDllCreateDigest )( 110 const CRYPT_XML_ALGORITHM *pDigestMethod, 111 ULONG *pcbSize, 112 CRYPT_XML_DIGEST *phDigest 113 ); 114 115 typedef HRESULT ( WINAPI *CryptXmlDllDigestData )( 116 CRYPT_XML_DIGEST hDigest, 117 BYTE *pbData, 118 ULONG cbDigest 119 ); 120 121 typedef HRESULT ( WINAPI *CryptXmlDllFinalizeDigest )( 122 CRYPT_XML_DIGEST hDigest, 123 BYTE *pbDigest, 124 ULONG cbDigest 125 ); 126 127 typedef HRESULT ( WINAPI *CryptXmlDllCloseDigest )( 128 CRYPT_XML_DIGEST hDigest 129 ); 130 131 typedef 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 142 typedef 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 152 typedef HRESULT ( WINAPI *CryptXmlDllCreateKey )( 153 CRYPT_XML_BLOB *pEncoded, 154 const BCRYPT_KEY_HANDLE *phKey 155 ); 156 157 typedef 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 164 typedef 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 176 typedef HRESULT ( WINAPI *CryptXmlDllGetInterface )( 177 DWORD dwFlags, 178 const CRYPT_XML_ALGORITHM_INFO *pMethod, 179 CRYPT_XML_CRYPTOGRAPHIC_INTERFACE *pInterface 180 ); 181 182 typedef struct _CRYPT_XML_DATA_BLOB { 183 ULONG cbData; 184 BYTE *pbData; 185 } CRYPT_XML_DATA_BLOB, *PCRYPT_XML_DATA_BLOB; 186 187 typedef HRESULT (CALLBACK *PFN_CRYPT_XML_DATA_PROVIDER_READ)( 188 void *pvCallbackState, 189 BYTE *pbData, 190 ULONG cbData, 191 ULONG *pcbRead 192 ); 193 194 typedef HRESULT (CALLBACK *PFN_CRYPT_XML_DATA_PROVIDER_CLOSE)( 195 void *pvCallbackState 196 ); 197 198 typedef 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 205 typedef 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 211 typedef 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 223 typedef 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 229 typedef 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 241 typedef struct _CRYPT_XML_REFERENCES { 242 ULONG cReference; 243 PCRYPT_XML_REFERENCE *rgpReference; 244 } CRYPT_XML_REFERENCES, *PCRYPT_XML_REFERENCES; 245 246 typedef 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 256 typedef struct _CRYPT_XML_ISSUER_SERIAL { 257 LPCWSTR wszIssuer ; 258 LPCWSTR wszSerial; 259 } CRYPT_XML_ISSUER_SERIAL; 260 261 typedef 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 280 typedef struct _CRYPT_XML_X509DATA { 281 UINT cX509Data; 282 CRYPT_XML_X509DATA_ITEM *rgX509Data; 283 } CRYPT_XML_X509DATA, *PCRYPT_XML_X509DATA; 284 285 typedef 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 302 typedef 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 312 typedef 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 317 typedef 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 324 typedef 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 339 typedef 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 347 typedef 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 357 typedef 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 368 typedef 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 376 typedef 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 387 typedef 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 393 typedef 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 413 CRYPTXMLAPI 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 422 CRYPTXMLAPI HRESULT WINAPI CryptXmlClose( 423 HCRYPTXML hCryptXml 424 ); 425 426 CRYPTXMLAPI 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 440 CRYPTXMLAPI 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 448 CRYPTXMLAPI 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 457 CRYPTXMLAPI HRESULT WINAPI CryptXmlGetAlgorithmInfo( 458 const CRYPT_XML_ALGORITHM *pXmlAlgorithm, 459 DWORD dwFlags, 460 CRYPT_XML_ALGORITHM_INFO **ppAlgInfo 461 ); 462 463 CRYPTXMLAPI HRESULT WINAPI CryptXmlGetDocContext( 464 HCRYPTXML hCryptXml, 465 const CRYPT_XML_DOC_CTXT **ppStruct 466 ); 467 468 CRYPTXMLAPI HRESULT WINAPI CryptXmlGetReference( 469 HCRYPTXML HCRYPTXML, 470 const CRYPT_XML_REFERENCE **ppStruct 471 ); 472 473 CRYPTXMLAPI HRESULT WINAPI CryptXmlGetSignature( 474 HCRYPTXML hCryptXml, 475 const PCRYPT_XML_SIGNATURE **ppStruct 476 ); 477 478 CRYPTXMLAPI HRESULT WINAPI CryptXmlGetStatus( 479 HCRYPTXML hCryptXml, 480 CRYPT_XML_STATUS *pStatus 481 ); 482 483 CRYPTXMLAPI HRESULT WINAPI CryptXmlGetTransforms( 484 PCRYPT_XML_TRANSFORM_CHAIN_CONFIG **pConfig 485 ); 486 487 CRYPTXMLAPI 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 495 CRYPTXMLAPI 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 507 CRYPTXMLAPI 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 520 CRYPTXMLAPI HRESULT WINAPI CryptXmlSetHMACSecret( 521 HCRYPTXML hSignature, 522 const BYTE *pbSecret, 523 ULONG cbSecret 524 ); 525 526 CRYPTXMLAPI 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 544 CRYPTXMLAPI 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