1 /* 2 * XML Security Library (http://www.aleksey.com/xmlsec). 3 * 4 * This is free software; see Copyright file in the source 5 * distribution for preciese wording. 6 * 7 * Copyright (C) 2003 Cordys R&D BV, All rights reserved. 8 */ 9 #ifndef __XMLSEC_MSCRYPTO_CRYPTO_H__ 10 #define __XMLSEC_MSCRYPTO_CRYPTO_H__ 11 12 #include <windows.h> 13 #include <wincrypt.h> 14 15 #include <xmlsec/xmlsec.h> 16 #include <xmlsec/keys.h> 17 #include <xmlsec/transforms.h> 18 #include <xmlsec/dl.h> 19 20 #ifdef __cplusplus 21 extern "C" { 22 #endif /* __cplusplus */ 23 24 XMLSEC_CRYPTO_EXPORT xmlSecCryptoDLFunctionsPtr xmlSecCryptoGetFunctions_mscrypto(void); 25 26 /******************************************************************** 27 * 28 * Init shutdown 29 * 30 ********************************************************************/ 31 XMLSEC_CRYPTO_EXPORT int xmlSecMSCryptoInit (void); 32 XMLSEC_CRYPTO_EXPORT int xmlSecMSCryptoShutdown (void); 33 34 XMLSEC_CRYPTO_EXPORT int xmlSecMSCryptoKeysMngrInit (xmlSecKeysMngrPtr mngr); 35 XMLSEC_CRYPTO_EXPORT int xmlSecMSCryptoGenerateRandom (xmlSecBufferPtr buffer, 36 xmlSecSize size); 37 38 XMLSEC_CRYPTO_EXPORT void xmlSecMSCryptoErrorsDefaultCallback(const char* file, 39 int line, 40 const char* func, 41 const char* errorObject, 42 const char* errorSubject, 43 int reason, 44 const char* msg); 45 46 /****************************************************************************** 47 * 48 * String encoding conversion utils 49 * 50 ******************************************************************************/ 51 XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT LPWSTR xmlSecMSCryptoConvertLocaleToUnicode(const char* str); 52 53 XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT LPWSTR xmlSecMSCryptoConvertUtf8ToUnicode (const xmlChar* str); 54 XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT xmlChar* xmlSecMSCryptoConvertUnicodeToUtf8 (LPCWSTR str); 55 56 XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT xmlChar* xmlSecMSCryptoConvertLocaleToUtf8 (const char* str); 57 XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT char* xmlSecMSCryptoConvertUtf8ToLocale (const xmlChar* str); 58 59 XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT xmlChar* xmlSecMSCryptoConvertTstrToUtf8 (LPCTSTR str); 60 XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT LPTSTR xmlSecMSCryptoConvertUtf8ToTstr (const xmlChar* str); 61 62 63 /******************************************************************** 64 * 65 * DSA transform 66 * 67 *******************************************************************/ 68 #ifndef XMLSEC_NO_DSA 69 70 /** 71 * xmlSecMSCryptoKeyDataDsaId: 72 * 73 * The DSA key klass. 74 */ 75 #define xmlSecMSCryptoKeyDataDsaId \ 76 xmlSecMSCryptoKeyDataDsaGetKlass() 77 XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCryptoKeyDataDsaGetKlass (void); 78 79 /** 80 * xmlSecMSCryptoTransformDsaSha1Id: 81 * 82 * The DSA SHA1 signature transform klass. 83 */ 84 #define xmlSecMSCryptoTransformDsaSha1Id \ 85 xmlSecMSCryptoTransformDsaSha1GetKlass() 86 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformDsaSha1GetKlass(void); 87 88 #endif /* XMLSEC_NO_DSA */ 89 90 /******************************************************************** 91 * 92 * GOST2001 transform 93 * 94 *******************************************************************/ 95 #ifndef XMLSEC_NO_GOST 96 97 /** 98 * xmlSecMSCryptoKeyDataGost2001Id: 99 * 100 * The GOST2001 key klass. 101 */ 102 #define xmlSecMSCryptoKeyDataGost2001Id \ 103 xmlSecMSCryptoKeyDataGost2001GetKlass() 104 XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCryptoKeyDataGost2001GetKlass (void); 105 106 /** 107 * xmlSecMSCryptoTransformGost2001GostR3411_94Id: 108 * 109 * The GOST2001 GOSTR3411_94 signature transform klass. 110 */ 111 #define xmlSecMSCryptoTransformGost2001GostR3411_94Id \ 112 xmlSecMSCryptoTransformGost2001GostR3411_94GetKlass() 113 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformGost2001GostR3411_94GetKlass(void); 114 115 #endif /* XMLSEC_NO_GOST */ 116 117 #ifndef XMLSEC_NO_GOST2012 118 119 /******************************************************************** 120 * 121 * GOST R 34.10-2012 transform 122 * 123 *******************************************************************/ 124 125 /** 126 * xmlSecMSCryptoKeyDataGost2012_256Id: 127 * 128 * The GOST R 34.10-2012 256 key klass 129 */ 130 #define xmlSecMSCryptoKeyDataGost2012_256Id \ 131 xmlSecMSCryptoKeyDataGost2012_256GetKlass() 132 XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCryptoKeyDataGost2012_256GetKlass (void); 133 134 /** 135 * xmlSecMSCryptoKeyDataGost2012_512Id: 136 * 137 * The GOST R 34.10-2012 512 key klass 138 */ 139 #define xmlSecMSCryptoKeyDataGost2012_512Id \ 140 xmlSecMSCryptoKeyDataGost2012_512GetKlass() 141 XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCryptoKeyDataGost2012_512GetKlass (void); 142 143 /** 144 * xmlSecMSCryptoTransformGost2012_256Id: 145 * 146 * The GOST R 34.10-2012 - GOST R 3411-2012 256 bit signature transform klass. 147 */ 148 #define xmlSecMSCryptoTransformGost2012_256Id \ 149 xmlSecMSCryptoTransformGost2012_256GetKlass() 150 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformGost2012_256GetKlass(void); 151 152 /** 153 * xmlSecMSCryptoTransformGost2012_512Id: 154 * 155 * The GOST R 34.10-2012 - GOST R 3411-2012 512 bit signature transform klass. 156 */ 157 #define xmlSecMSCryptoTransformGost2012_512Id \ 158 xmlSecMSCryptoTransformGost2012_512GetKlass() 159 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformGost2012_512GetKlass(void); 160 161 #endif /* XMLSEC_NO_GOST2012 */ 162 163 /******************************************************************** 164 * 165 * RSA transforms 166 * 167 *******************************************************************/ 168 #ifndef XMLSEC_NO_RSA 169 170 /** 171 * xmlSecMSCryptoKeyDataRsaId: 172 * 173 * The RSA key klass. 174 */ 175 #define xmlSecMSCryptoKeyDataRsaId \ 176 xmlSecMSCryptoKeyDataRsaGetKlass() 177 XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCryptoKeyDataRsaGetKlass(void); 178 179 #ifndef XMLSEC_NO_MD5 180 /** 181 * xmlSecMSCryptoTransformRsaMd5Id: 182 * 183 * The RSA-MD5 signature transform klass. 184 */ 185 #define xmlSecMSCryptoTransformRsaMd5Id \ 186 xmlSecMSCryptoTransformRsaMd5GetKlass() 187 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformRsaMd5GetKlass(void); 188 #endif /* XMLSEC_NO_MD5 */ 189 190 #ifndef XMLSEC_NO_SHA1 191 /** 192 * xmlSecMSCryptoTransformRsaSha1Id: 193 * 194 * The RSA-SHA1 signature transform klass. 195 */ 196 #define xmlSecMSCryptoTransformRsaSha1Id \ 197 xmlSecMSCryptoTransformRsaSha1GetKlass() 198 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformRsaSha1GetKlass(void); 199 #endif /* XMLSEC_NO_SHA1 */ 200 201 #ifndef XMLSEC_NO_SHA256 202 /** 203 * xmlSecMSCryptoTransformRsaSha256Id: 204 * 205 * The RSA-SHA256 signature transform klass. 206 */ 207 #define xmlSecMSCryptoTransformRsaSha256Id \ 208 xmlSecMSCryptoTransformRsaSha256GetKlass() 209 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformRsaSha256GetKlass(void); 210 #endif /* XMLSEC_NO_SHA256 */ 211 212 #ifndef XMLSEC_NO_SHA384 213 /** 214 * xmlSecMSCryptoTransformRsaSha384Id: 215 * 216 * The RSA-SHA384 signature transform klass. 217 */ 218 #define xmlSecMSCryptoTransformRsaSha384Id \ 219 xmlSecMSCryptoTransformRsaSha384GetKlass() 220 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformRsaSha384GetKlass(void); 221 #endif /* XMLSEC_NO_SHA384 */ 222 223 #ifndef XMLSEC_NO_SHA512 224 /** 225 * xmlSecMSCryptoTransformRsaSha512Id: 226 * 227 * The RSA-SHA512 signature transform klass. 228 */ 229 #define xmlSecMSCryptoTransformRsaSha512Id \ 230 xmlSecMSCryptoTransformRsaSha512GetKlass() 231 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformRsaSha512GetKlass(void); 232 #endif /* XMLSEC_NO_SHA512 */ 233 234 /** 235 * xmlSecMSCryptoTransformRsaPkcs1Id: 236 * 237 * The RSA PKCS1 key transport transform klass. 238 */ 239 #define xmlSecMSCryptoTransformRsaPkcs1Id \ 240 xmlSecMSCryptoTransformRsaPkcs1GetKlass() 241 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformRsaPkcs1GetKlass(void); 242 243 /** 244 * xmlSecMSCryptoTransformRsaOaepId: 245 * 246 * The RSA OAEP key transport transform klass. 247 */ 248 #define xmlSecMSCryptoTransformRsaOaepId \ 249 xmlSecMSCryptoTransformRsaOaepGetKlass() 250 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformRsaOaepGetKlass(void); 251 252 /** 253 * xmlSecMSCryptoTransformRsaOaepId: 254 * 255 * The RSA PKCS1 key transport transform klass. 256 */ 257 /* 258 #define xmlSecMSCryptoTransformRsaOaepId \ 259 xmlSecMSCryptoTransformRsaOaepGetKlass() 260 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformRsaOaepGetKlass(void); 261 */ 262 #endif /* XMLSEC_NO_RSA */ 263 264 /******************************************************************** 265 * 266 * Md5 transforms 267 * 268 *******************************************************************/ 269 #ifndef XMLSEC_NO_MD5 270 /** 271 * xmlSecMSCryptoTransformMd5Id: 272 * 273 * The MD5 digest transform klass. 274 */ 275 #define xmlSecMSCryptoTransformMd5Id \ 276 xmlSecMSCryptoTransformMd5GetKlass() 277 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformMd5GetKlass(void); 278 #endif /* XMLSEC_NO_MD5 */ 279 280 281 /******************************************************************** 282 * 283 * SHA1 transform 284 * 285 *******************************************************************/ 286 #ifndef XMLSEC_NO_SHA1 287 288 /** 289 * xmlSecMSCryptoTransformSha1Id: 290 * 291 * The SHA1 digest transform klass. 292 */ 293 #define xmlSecMSCryptoTransformSha1Id \ 294 xmlSecMSCryptoTransformSha1GetKlass() 295 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformSha1GetKlass(void); 296 #endif /* XMLSEC_NO_SHA1 */ 297 298 /******************************************************************** 299 * 300 * SHA256 transform 301 * 302 *******************************************************************/ 303 #ifndef XMLSEC_NO_SHA256 304 305 /** 306 * xmlSecMSCryptoTransformSha256Id: 307 * 308 * The SHA256 digest transform klass. 309 */ 310 #define xmlSecMSCryptoTransformSha256Id \ 311 xmlSecMSCryptoTransformSha256GetKlass() 312 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformSha256GetKlass(void); 313 #endif /* XMLSEC_NO_SHA256 */ 314 315 /******************************************************************** 316 * 317 * SHA384 transform 318 * 319 *******************************************************************/ 320 #ifndef XMLSEC_NO_SHA384 321 322 /** 323 * xmlSecMSCryptoTransformSha384Id: 324 * 325 * The SHA384 digest transform klass. 326 */ 327 #define xmlSecMSCryptoTransformSha384Id \ 328 xmlSecMSCryptoTransformSha384GetKlass() 329 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformSha384GetKlass(void); 330 #endif /* XMLSEC_NO_SHA384 */ 331 332 /******************************************************************** 333 * 334 * SHA512 transform 335 * 336 *******************************************************************/ 337 #ifndef XMLSEC_NO_SHA512 338 339 /** 340 * xmlSecMSCryptoTransformSha512Id: 341 * 342 * The SHA512 digest transform klass. 343 */ 344 #define xmlSecMSCryptoTransformSha512Id \ 345 xmlSecMSCryptoTransformSha512GetKlass() 346 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformSha512GetKlass(void); 347 #endif /* XMLSEC_NO_SHA512 */ 348 349 /******************************************************************** 350 * 351 * GOSTR3411_94 transform 352 * 353 *******************************************************************/ 354 #ifndef XMLSEC_NO_GOST 355 356 /** 357 * xmlSecMSCryptoTransformGostR3411_94Id: 358 * 359 * The GOSTR3411_94 digest transform klass. 360 */ 361 #define xmlSecMSCryptoTransformGostR3411_94Id \ 362 xmlSecMSCryptoTransformGostR3411_94GetKlass() 363 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformGostR3411_94GetKlass(void); 364 365 #endif /* XMLSEC_NO_GOST */ 366 367 #ifndef XMLSEC_NO_GOST2012 368 369 /******************************************************************** 370 * 371 * GOST R 34.10-2012 256 and 512-bit digests 372 * 373 *******************************************************************/ 374 375 /** 376 * xmlSecMSCryptoTransformGostR3411_2012_256Id: 377 * 378 * The GOST R 34.11-2012 256 digest transform klass. 379 */ 380 #define xmlSecMSCryptoTransformGostR3411_2012_256Id \ 381 xmlSecMSCryptoTransformGostR3411_2012_256GetKlass() 382 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformGostR3411_2012_256GetKlass(void); 383 384 /** 385 * xmlSecMSCryptoTransformGostR3411_2012_512Id: 386 * 387 * The GOST R 34.11-2012 512 digest transform klass. 388 */ 389 #define xmlSecMSCryptoTransformGostR3411_2012_512Id \ 390 xmlSecMSCryptoTransformGostR3411_2012_512GetKlass() 391 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformGostR3411_2012_512GetKlass(void); 392 393 #endif /* XMLSEC_NO_GOST2012 */ 394 395 396 /******************************************************************** 397 * 398 * AES transforms 399 * 400 *******************************************************************/ 401 #ifndef XMLSEC_NO_AES 402 /** 403 * xmlSecMSCryptoKeyDataAesId: 404 * 405 * The AES key data klass. 406 */ 407 #define xmlSecMSCryptoKeyDataAesId \ 408 xmlSecMSCryptoKeyDataAesGetKlass() 409 XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCryptoKeyDataAesGetKlass(void); 410 XMLSEC_CRYPTO_EXPORT int xmlSecMSCryptoKeyDataAesSet (xmlSecKeyDataPtr data, 411 const xmlSecByte* buf, 412 xmlSecSize bufSize); 413 /** 414 * xmlSecMSCryptoTransformAes128CbcId: 415 * 416 * The AES128 CBC cipher transform klass. 417 */ 418 #define xmlSecMSCryptoTransformAes128CbcId \ 419 xmlSecMSCryptoTransformAes128CbcGetKlass() 420 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformAes128CbcGetKlass(void); 421 422 /** 423 * xmlSecMSCryptoTransformAes192CbcId: 424 * 425 * The AES192 CBC cipher transform klass. 426 */ 427 #define xmlSecMSCryptoTransformAes192CbcId \ 428 xmlSecMSCryptoTransformAes192CbcGetKlass() 429 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformAes192CbcGetKlass(void); 430 431 /** 432 * xmlSecMSCryptoTransformAes256CbcId: 433 * 434 * The AES256 CBC cipher transform klass. 435 */ 436 #define xmlSecMSCryptoTransformAes256CbcId \ 437 xmlSecMSCryptoTransformAes256CbcGetKlass() 438 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformAes256CbcGetKlass(void); 439 440 /** 441 * xmlSecMSCryptoTransformKWAes128Id: 442 * 443 * The AES 128 key wrap transform klass. 444 */ 445 #define xmlSecMSCryptoTransformKWAes128Id \ 446 xmlSecMSCryptoTransformKWAes128GetKlass() 447 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformKWAes128GetKlass(void); 448 449 /** 450 * xmlSecMSCryptoTransformKWAes192Id: 451 * 452 * The AES 192 key wrap transform klass. 453 */ 454 #define xmlSecMSCryptoTransformKWAes192Id \ 455 xmlSecMSCryptoTransformKWAes192GetKlass() 456 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformKWAes192GetKlass(void); 457 458 /** 459 * xmlSecMSCryptoTransformKWAes256Id: 460 * 461 * The AES 256 key wrap transform klass. 462 */ 463 #define xmlSecMSCryptoTransformKWAes256Id \ 464 xmlSecMSCryptoTransformKWAes256GetKlass() 465 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformKWAes256GetKlass(void); 466 467 #endif /* XMLSEC_NO_AES */ 468 469 470 /******************************************************************** 471 * 472 * DES transform 473 * 474 *******************************************************************/ 475 #ifndef XMLSEC_NO_DES 476 477 /** 478 * xmlSecMSCryptoKeyDataDesId: 479 * 480 * The DES key data klass. 481 */ 482 #define xmlSecMSCryptoKeyDataDesId \ 483 xmlSecMSCryptoKeyDataDesGetKlass() 484 XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCryptoKeyDataDesGetKlass(void); 485 486 /** 487 * xmlSecMSCryptoTransformDes3CbcId: 488 * 489 * The DES3 CBC cipher transform klass. 490 */ 491 #define xmlSecMSCryptoTransformDes3CbcId \ 492 xmlSecMSCryptoTransformDes3CbcGetKlass() 493 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformDes3CbcGetKlass(void); 494 495 /** 496 * xmlSecMSCryptoTransformKWDes3Id: 497 * 498 * The DES3 KW transform klass. 499 */ 500 #define xmlSecMSCryptoTransformKWDes3Id \ 501 xmlSecMSCryptoTransformKWDes3GetKlass() 502 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformKWDes3GetKlass(void); 503 504 #endif /* XMLSEC_NO_DES */ 505 506 507 /******************************************************************** 508 * 509 * HMAC transforms 510 * 511 *******************************************************************/ 512 #ifndef XMLSEC_NO_HMAC 513 514 XMLSEC_CRYPTO_EXPORT int xmlSecMSCryptoHmacGetMinOutputLength(void); 515 XMLSEC_CRYPTO_EXPORT void xmlSecMSCryptoHmacSetMinOutputLength(int min_length); 516 517 /** 518 * xmlSecMSCryptoKeyDataHmacId: 519 * 520 * The DHMAC key klass. 521 */ 522 #define xmlSecMSCryptoKeyDataHmacId \ 523 xmlSecMSCryptoKeyDataHmacGetKlass() 524 XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCryptoKeyDataHmacGetKlass(void); 525 XMLSEC_CRYPTO_EXPORT int xmlSecMSCryptoKeyDataHmacSet (xmlSecKeyDataPtr data, 526 const xmlSecByte* buf, 527 xmlSecSize bufSize); 528 529 #ifndef XMLSEC_NO_MD5 530 /** 531 * xmlSecMSCryptoTransformHmacMd5Id: 532 * 533 * The HMAC with MD5 signature transform klass. 534 */ 535 #define xmlSecMSCryptoTransformHmacMd5Id \ 536 xmlSecMSCryptoTransformHmacMd5GetKlass() 537 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformHmacMd5GetKlass(void); 538 #endif /* XMLSEC_NO_MD5 */ 539 540 #ifndef XMLSEC_NO_SHA1 541 /** 542 * xmlSecMSCryptoTransformHmacSha1Id: 543 * 544 * The HMAC with SHA1 signature transform klass. 545 */ 546 #define xmlSecMSCryptoTransformHmacSha1Id \ 547 xmlSecMSCryptoTransformHmacSha1GetKlass() 548 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformHmacSha1GetKlass(void); 549 #endif /* XMLSEC_NO_SHA1 */ 550 551 #ifndef XMLSEC_NO_SHA256 552 /** 553 * xmlSecMSCryptoTransformHmacSha256Id: 554 * 555 * The HMAC with SHA256 signature transform klass. 556 */ 557 #define xmlSecMSCryptoTransformHmacSha256Id \ 558 xmlSecMSCryptoTransformHmacSha256GetKlass() 559 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformHmacSha256GetKlass(void); 560 #endif /* XMLSEC_NO_SHA256 */ 561 562 #ifndef XMLSEC_NO_SHA384 563 /** 564 * xmlSecMSCryptoTransformHmacSha384Id: 565 * 566 * The HMAC with SHA384 signature transform klass. 567 */ 568 #define xmlSecMSCryptoTransformHmacSha384Id \ 569 xmlSecMSCryptoTransformHmacSha384GetKlass() 570 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformHmacSha384GetKlass(void); 571 #endif /* XMLSEC_NO_SHA384 */ 572 573 #ifndef XMLSEC_NO_SHA512 574 /** 575 * xmlSecMSCryptoTransformHmacSha512Id: 576 * 577 * The HMAC with SHA512 signature transform klass. 578 */ 579 #define xmlSecMSCryptoTransformHmacSha512Id \ 580 xmlSecMSCryptoTransformHmacSha512GetKlass() 581 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformHmacSha512GetKlass(void); 582 #endif /* XMLSEC_NO_SHA512 */ 583 584 #endif /* XMLSEC_NO_HMAC */ 585 586 #ifdef __cplusplus 587 } 588 #endif /* __cplusplus */ 589 590 #endif /* __XMLSEC_MSCRYPTO_CRYPTO_H__ */ 591 592 #define __XMLSEC_MSCRYPTO_CRYPTO_H__ 593