ReactOS 0.4.17-dev-1005-g171e1de
aes-default.c
Go to the documentation of this file.
1//
2// aes-default.c code for AES implementation
3//
4// Copyright (c) Microsoft Corporation. Licensed under the MIT license.
5//
6// This is the interface for the default AES implementation.
7// On each platform, this is the fastest AES implementation irrespective of code size.
8// It uses assembler, XMM, or any other trick.
9//
10
11
12#include "precomp.h"
13
14//
15// Virtual table for generic functions
16// This allows us to default to generic implementations for some modes without pulling in all the
17// dedicated functions.
18// We use this when we cannot use the optimized implementations for some reason.
19//
22#if SYMCRYPT_CPU_AMD64 | SYMCRYPT_CPU_X86 | SYMCRYPT_CPU_ARM
25#else
28#endif
29 NULL,
30 NULL,
31 NULL,
32 NULL,
33 NULL,
34 NULL,
35 NULL,
36 NULL,
37
40};
41
42VOID
45{
46#if SYMCRYPT_CPU_X86 | SYMCRYPT_CPU_AMD64
47 if( UseSimd )
48 {
49 SymCryptAes4SboxXmm( pIn, pOut );
50 } else {
51 SymCryptAes4SboxC( pIn, pOut );
52 }
53#elif SYMCRYPT_CPU_ARM64
54 if( UseSimd )
55 {
56 SymCryptAes4SboxNeon( pIn, pOut );
57 } else {
58 SymCryptAes4SboxC( pIn, pOut );
59 }
60#else
61 UNREFERENCED_PARAMETER( UseSimd );
62 SymCryptAes4SboxC( pIn, pOut ); // never use XMM on SaveXmm arch, save/restore overhead is too large.
63#endif
64}
65
66VOID
69 _In_reads_(16) PCBYTE pEncryptionRoundKey,
70 _Out_writes_(16) PBYTE pDecryptionRoundKey,
71 BOOL UseSimd )
72{
73#if SYMCRYPT_CPU_X86 | SYMCRYPT_CPU_AMD64
74 if( UseSimd )
75 {
76 SymCryptAesCreateDecryptionRoundKeyXmm( pEncryptionRoundKey, pDecryptionRoundKey );
77 } else {
78 SymCryptAesCreateDecryptionRoundKeyC( pEncryptionRoundKey, pDecryptionRoundKey );
79 }
80#elif SYMCRYPT_CPU_ARM64
81 if( UseSimd )
82 {
83 SymCryptAesCreateDecryptionRoundKeyNeon( pEncryptionRoundKey, pDecryptionRoundKey );
84 } else {
85 SymCryptAesCreateDecryptionRoundKeyC( pEncryptionRoundKey, pDecryptionRoundKey );
86 }
87#else
88 UNREFERENCED_PARAMETER( UseSimd );
89 SymCryptAesCreateDecryptionRoundKeyC( pEncryptionRoundKey, pDecryptionRoundKey ); // never use XMM on SaveXmm arch, save/restore overhead is too large.
90#endif
91}
92
93VOID
99{
100#if SYMCRYPT_CPU_AMD64
102 {
104 } else {
106 }
107#elif SYMCRYPT_CPU_X86
108 SYMCRYPT_EXTENDED_SAVE_DATA SaveData;
109
111 SymCryptSaveXmm( &SaveData ) == SYMCRYPT_NO_ERROR )
112 {
114 SymCryptRestoreXmm( &SaveData );
115 } else {
117 }
118#elif SYMCRYPT_CPU_ARM
120#elif SYMCRYPT_CPU_ARM64
121 if( SYMCRYPT_CPU_FEATURES_PRESENT( SYMCRYPT_CPU_FEATURE_NEON_AES ) )
122 {
124 } else {
126 }
127#else
129#endif
130}
131
132VOID
138{
139#if SYMCRYPT_CPU_AMD64
141 {
143 } else {
145 }
146#elif SYMCRYPT_CPU_X86
147 SYMCRYPT_EXTENDED_SAVE_DATA SaveData;
148
150 SymCryptSaveXmm( &SaveData ) == SYMCRYPT_NO_ERROR )
151 {
153 SymCryptRestoreXmm( &SaveData );
154 } else {
156 }
157#elif SYMCRYPT_CPU_ARM
159#elif SYMCRYPT_CPU_ARM64
160 if( SYMCRYPT_CPU_FEATURES_PRESENT( SYMCRYPT_CPU_FEATURE_NEON_AES ) )
161 {
163 } else {
165 }
166#else
168#endif
169}
170
171VOID
178 SIZE_T cbData )
179{
180#if SYMCRYPT_CPU_AMD64
182 {
184 } else {
186 }
187#elif SYMCRYPT_CPU_X86
188 SYMCRYPT_EXTENDED_SAVE_DATA SaveData;
189
191 SymCryptSaveXmm( &SaveData ) == SYMCRYPT_NO_ERROR )
192 {
194 SymCryptRestoreXmm( &SaveData );
195 } else {
197 }
198#elif SYMCRYPT_CPU_ARM
200#elif SYMCRYPT_CPU_ARM64
201 if( SYMCRYPT_CPU_FEATURES_PRESENT( SYMCRYPT_CPU_FEATURE_NEON_AES ) )
202 {
204 } else {
206 }
207#else
209#endif
210}
211
212VOID
219 SIZE_T cbData )
220{
221#if SYMCRYPT_CPU_AMD64
223 {
225 } else {
227 }
228#elif SYMCRYPT_CPU_X86
229 SYMCRYPT_EXTENDED_SAVE_DATA SaveData;
230
232 SymCryptSaveXmm( &SaveData ) == SYMCRYPT_NO_ERROR )
233 {
235 SymCryptRestoreXmm( &SaveData );
236 } else {
238 }
239#elif SYMCRYPT_CPU_ARM
241#elif SYMCRYPT_CPU_ARM64
242 if( SYMCRYPT_CPU_FEATURES_PRESENT( SYMCRYPT_CPU_FEATURE_NEON_AES ) )
243 {
245 } else {
247 }
248#else
250#endif
251}
252
253VOID
259 SIZE_T cbData )
260{
261#if SYMCRYPT_CPU_AMD64
263 {
265 } else {
267 }
268#elif SYMCRYPT_CPU_X86
269 SYMCRYPT_EXTENDED_SAVE_DATA SaveData;
270
272 SymCryptSaveXmm( &SaveData ) == SYMCRYPT_NO_ERROR )
273 {
275 SymCryptRestoreXmm( &SaveData );
276 } else {
278 }
279#elif SYMCRYPT_CPU_ARM
281#elif SYMCRYPT_CPU_ARM64
282 if( SYMCRYPT_CPU_FEATURES_PRESENT( SYMCRYPT_CPU_FEATURE_NEON_AES ) )
283 {
285 } else {
287 }
288#else
290#endif
291}
292
293//
294// NOTE: There is no reason that SymCryptAesEcbDecrypt could not have unrolled versions similar to
295// SymCryptAesEcbEncrypt if a real use case requiring large scale Ecb decryption is found.
296// For now just decrypt 1 block at a time to reduce code size.
297//
298VOID
304 SIZE_T cbData )
305{
307 {
312 }
313}
314
315VOID
321 SIZE_T cbData )
322{
323#if SYMCRYPT_CPU_AMD64
325 {
327 } else {
330 }
331#elif SYMCRYPT_CPU_X86
332 SYMCRYPT_EXTENDED_SAVE_DATA SaveData;
333
335 SymCryptSaveXmm( &SaveData ) == SYMCRYPT_NO_ERROR )
336 {
338 SymCryptRestoreXmm( &SaveData );
339 } else {
342 }
343#elif SYMCRYPT_CPU_ARM64
344 if( SYMCRYPT_CPU_FEATURES_PRESENT( SYMCRYPT_CPU_FEATURE_NEON_AES ) )
345 {
347 } else {
350 }
351#else
354#endif
355}
356
357VOID
364 SIZE_T cbData )
365{
366#if SYMCRYPT_CPU_AMD64
368 {
370 } else {
371 SYMCRYPT_ASSERT( SymCryptAesBlockCipherNoOpt.blockSize == SYMCRYPT_AES_BLOCK_SIZE ); // keep Prefast happy
373 }
374
375#elif SYMCRYPT_CPU_X86
376 SYMCRYPT_EXTENDED_SAVE_DATA SaveData;
377
379 SymCryptSaveXmm( &SaveData ) == SYMCRYPT_NO_ERROR )
380 {
382 SymCryptRestoreXmm( &SaveData );
383 } else {
384 SYMCRYPT_ASSERT( SymCryptAesBlockCipherNoOpt.blockSize == SYMCRYPT_AES_BLOCK_SIZE ); // keep Prefast happy
386 }
387
388#elif SYMCRYPT_CPU_ARM64
389 if( SYMCRYPT_CPU_FEATURES_PRESENT( SYMCRYPT_CPU_FEATURE_NEON_AES ) )
390 {
392 } else {
394 }
395
396#else
397 SYMCRYPT_ASSERT( SymCryptAesBlockCipherNoOpt.blockSize == SYMCRYPT_AES_BLOCK_SIZE ); // keep Prefast happy
399#endif
400}
401
402VOID
409 SIZE_T cbData )
410{
411#if SYMCRYPT_CPU_AMD64
413 {
415 } else {
417 }
418
419#elif SYMCRYPT_CPU_X86
420 SYMCRYPT_EXTENDED_SAVE_DATA SaveData;
421
423 SymCryptSaveXmm( &SaveData ) == SYMCRYPT_NO_ERROR )
424 {
426 SymCryptRestoreXmm( &SaveData );
427 } else {
429 }
430
431#elif SYMCRYPT_CPU_ARM
433
434#elif SYMCRYPT_CPU_ARM64
435 if( SYMCRYPT_CPU_FEATURES_PRESENT( SYMCRYPT_CPU_FEATURE_NEON_AES ) )
436 {
438 } else {
440 }
441
442#else
443 SYMCRYPT_ASSERT( SymCryptAesBlockCipherNoOpt.blockSize == SYMCRYPT_AES_BLOCK_SIZE ); // keep Prefast happy
445#endif
446}
447
448VOID
454 SIZE_T cbData )
455{
456 SIZE_T bytesToProcess;
457#if SYMCRYPT_CPU_AMD64
458 SYMCRYPT_EXTENDED_SAVE_DATA SaveData;
459#endif
460
461 //
462 // We have entered the encrypt phase, the AAD has been padded to be a multiple of block size
463 // We know that the bytes still to use in the key stream buffer and the bytes left to fill the
464 // macBlock will be the same in the context of this function
465 //
466 SYMCRYPT_ASSERT( (pState->cbData & SYMCRYPT_GCM_BLOCK_MOD_MASK) == pState->bytesInMacBlock );
467
468 //
469 // We update pState->cbData once before we modify cbData.
470 // pState->cbData is not used in the rest of this function
471 //
473 pState->cbData += cbData;
474
475 if( pState->bytesInMacBlock > 0 )
476 {
477 bytesToProcess = SYMCRYPT_MIN( cbData, SYMCRYPT_GCM_BLOCK_SIZE - pState->bytesInMacBlock );
479 pbSrc,
480 &pState->keystreamBlock[pState->bytesInMacBlock],
481 &pState->macBlock[pState->bytesInMacBlock],
482 bytesToProcess );
483 memcpy( pbDst, &pState->macBlock[pState->bytesInMacBlock], bytesToProcess );
484 pbSrc += bytesToProcess;
485 pbDst += bytesToProcess;
486 cbData -= bytesToProcess;
487 pState->bytesInMacBlock += bytesToProcess;
488
489 if( pState->bytesInMacBlock == SYMCRYPT_GCM_BLOCK_SIZE )
490 {
491 SymCryptGHashAppendData( &pState->pKey->ghashKey,
492 &pState->ghashState,
493 &pState->macBlock[0],
495 pState->bytesInMacBlock = 0;
496 }
497
498 //
499 // If there are bytes left in the key stream buffer, then cbData == 0 and we're done.
500 // If we used up all the bytes, then we are fine, no need to compute the next key stream block
501 //
502 }
503
505 {
506 bytesToProcess = cbData & SYMCRYPT_GCM_BLOCK_ROUND_MASK;
507
508 //
509 // We use a Gcm function that increments the CTR by 64 bits, rather than the 32 bits that GCM requires.
510 // As we only support 12-byte nonces, the 32-bit counter never overflows, and we can safely use
511 // the 64-bit incrementing primitive.
512 // If we ever support other nonce sizes this is going to be a big problem.
513 // You can't fake a 32-bit counter using a 64-bit counter function without side-channels that expose
514 // information about the current counter value.
515 // With other nonce sizes the actual counter value itself is not public, so we can't expose that.
516 // We can do two things:
517 // - create SymCryptAesGcmEncryptXXX32
518 // - Accept that we leak information about the counter value; after all it is not treated as a
519 // secret when the nonce is 12 bytes.
520 //
521 SYMCRYPT_ASSERT( pState->pKey->pBlockCipher->blockSize == SYMCRYPT_GCM_BLOCK_SIZE );
522
523#if SYMCRYPT_CPU_AMD64
525 (bytesToProcess >= GCM_YMM_MINBLOCKS * SYMCRYPT_GCM_BLOCK_SIZE) &&
526 SymCryptSaveYmm( &SaveData ) == SYMCRYPT_NO_ERROR )
527 {
529 &pState->pKey->blockcipherKey.aes,
530 &pState->counterBlock[0],
531 &pState->pKey->ghashKey.table[0],
532 &pState->ghashState,
533 pbSrc,
534 pbDst,
535 bytesToProcess );
536
537 SymCryptRestoreYmm( &SaveData );
538 } else {
540 &pState->pKey->blockcipherKey.aes,
541 &pState->counterBlock[0],
542 &pState->pKey->ghashKey.table[0],
543 &pState->ghashState,
544 pbSrc,
545 pbDst,
546 bytesToProcess );
547 }
548
549#elif SYMCRYPT_CPU_X86
551 &pState->pKey->blockcipherKey.aes,
552 &pState->counterBlock[0],
553 (PSYMCRYPT_GF128_ELEMENT)&pState->pKey->ghashKey.tableSpace[pState->pKey->ghashKey.tableOffset],
554 &pState->ghashState,
555 pbSrc,
556 pbDst,
557 bytesToProcess );
558
559#elif SYMCRYPT_CPU_ARM64
561 &pState->pKey->blockcipherKey.aes,
562 &pState->counterBlock[0],
563 &pState->pKey->ghashKey.table[0],
564 &pState->ghashState,
565 pbSrc,
566 pbDst,
567 bytesToProcess );
568
569#else
570 SymCryptAesCtrMsb32(&pState->pKey->blockcipherKey.aes,
571 &pState->counterBlock[0],
572 pbSrc,
573 pbDst,
574 cbData );
575 //
576 // We break the read-once/write once rule here by reading the pbDst data back.
577 // In this particular situation this is safe, and avoiding it is expensive as it
578 // requires an extra copy and an extra memory buffer.
579 // The first write exposes the GCM key stream, independent of the underlying data that
580 // we are processing. From an attacking point of view we can think of this as literally
581 // handing over the key stream. So encryption consists of two steps:
582 // - hand over the key stream
583 // - MAC some ciphertext
584 // In this view (which has equivalent security properties to GCM) is obviously doesn't
585 // matter that we read pbDst back.
586 //
587 SymCryptGHashAppendData(&pState->pKey->ghashKey,
588 &pState->ghashState,
589 pbDst,
590 cbData );
591
592#endif
593
594 pbSrc += bytesToProcess;
595 pbDst += bytesToProcess;
596 cbData -= bytesToProcess;
597 }
598
599 if( cbData > 0 )
600 {
602
603 SYMCRYPT_ASSERT( pState->pKey->pBlockCipher->blockSize == SYMCRYPT_GCM_BLOCK_SIZE );
604 SymCryptAesCtrMsb32(&pState->pKey->blockcipherKey.aes,
605 &pState->counterBlock[0],
606 &pState->keystreamBlock[0],
607 &pState->keystreamBlock[0],
609
610 SymCryptXorBytes( &pState->keystreamBlock[0], pbSrc, &pState->macBlock[0], cbData );
611 memcpy( pbDst, &pState->macBlock[0], cbData );
612 pState->bytesInMacBlock = cbData;
613
614 //
615 // pState->cbData contains the data length after this call already, so it knows how many
616 // bytes are left in the keystream block
617 //
618 }
619}
620
621VOID
627 SIZE_T cbData )
628{
629 SIZE_T bytesToProcess;
630#if SYMCRYPT_CPU_AMD64
631 SYMCRYPT_EXTENDED_SAVE_DATA SaveData;
632#endif
633
634 //
635 // We have entered the decrypt phase, the AAD has been padded to be a multiple of block size
636 // We know that the bytes still to use in the key stream buffer and the bytes left to fill the
637 // macBlock will be the same in the context of this function
638 //
639 SYMCRYPT_ASSERT( (pState->cbData & SYMCRYPT_GCM_BLOCK_MOD_MASK) == pState->bytesInMacBlock );
640
641 //
642 // We update pState->cbData once before we modify cbData.
643 // pState->cbData is not used in the rest of this function
644 //
646 pState->cbData += cbData;
647
648 if( pState->bytesInMacBlock > 0 )
649 {
650 bytesToProcess = SYMCRYPT_MIN( cbData, SYMCRYPT_GCM_BLOCK_SIZE - pState->bytesInMacBlock );
651 memcpy( &pState->macBlock[pState->bytesInMacBlock], pbSrc, bytesToProcess );
653 &pState->keystreamBlock[pState->bytesInMacBlock],
654 &pState->macBlock[pState->bytesInMacBlock],
655 pbDst,
656 bytesToProcess );
657
658 pbSrc += bytesToProcess;
659 pbDst += bytesToProcess;
660 cbData -= bytesToProcess;
661 pState->bytesInMacBlock += bytesToProcess;
662
663 if( pState->bytesInMacBlock == SYMCRYPT_GCM_BLOCK_SIZE )
664 {
665 SymCryptGHashAppendData( &pState->pKey->ghashKey,
666 &pState->ghashState,
667 &pState->macBlock[0],
669 pState->bytesInMacBlock = 0;
670 }
671
672 //
673 // If there are bytes left in the key stream buffer, then cbData == 0 and we're done.
674 // If we used up all the bytes, then we are fine, no need to compute the next key stream block
675 //
676 }
677
679 {
680 bytesToProcess = cbData & SYMCRYPT_GCM_BLOCK_ROUND_MASK;
681
682 //
683 // We use a Gcm function that increments the CTR by 64 bits, rather than the 32 bits that GCM requires.
684 // As we only support 12-byte nonces, the 32-bit counter never overflows, and we can safely use
685 // the 64-bit incrementing primitive.
686 // If we ever support other nonce sizes this is going to be a big problem.
687 // You can't fake a 32-bit counter using a 64-bit counter function without side-channels that expose
688 // information about the current counter value.
689 // With other nonce sizes the actual counter value itself is not public, so we can't expose that.
690 // We can do two things:
691 // - create SymCryptAesGcmDecryptXXX32
692 // - Accept that we leak information about the counter value; after all it is not treated as a
693 // secret when the nonce is 12 bytes.
694 //
695 SYMCRYPT_ASSERT( pState->pKey->pBlockCipher->blockSize == SYMCRYPT_GCM_BLOCK_SIZE );
696
697#if SYMCRYPT_CPU_AMD64
699 (bytesToProcess >= GCM_YMM_MINBLOCKS * SYMCRYPT_GCM_BLOCK_SIZE) &&
700 SymCryptSaveYmm( &SaveData ) == SYMCRYPT_NO_ERROR )
701 {
703 &pState->pKey->blockcipherKey.aes,
704 &pState->counterBlock[0],
705 &pState->pKey->ghashKey.table[0],
706 &pState->ghashState,
707 pbSrc,
708 pbDst,
709 bytesToProcess );
710
711 SymCryptRestoreYmm( &SaveData );
712 } else {
714 &pState->pKey->blockcipherKey.aes,
715 &pState->counterBlock[0],
716 &pState->pKey->ghashKey.table[0],
717 &pState->ghashState,
718 pbSrc,
719 pbDst,
720 bytesToProcess );
721 }
722
723#elif SYMCRYPT_CPU_X86
725 &pState->pKey->blockcipherKey.aes,
726 &pState->counterBlock[0],
727 (PSYMCRYPT_GF128_ELEMENT)&pState->pKey->ghashKey.tableSpace[pState->pKey->ghashKey.tableOffset],
728 &pState->ghashState,
729 pbSrc,
730 pbDst,
731 bytesToProcess );
732
733#elif SYMCRYPT_CPU_ARM64
735 &pState->pKey->blockcipherKey.aes,
736 &pState->counterBlock[0],
737 &pState->pKey->ghashKey.table[0],
738 &pState->ghashState,
739 pbSrc,
740 pbDst,
741 bytesToProcess );
742
743#else
744 SymCryptGHashAppendData(&pState->pKey->ghashKey,
745 &pState->ghashState,
746 pbSrc,
747 cbData );
748 //
749 // Do the actual decryption
750 // This violates the read-once rule, but it is safe for the same reasons as above
751 // in the encryption case.
752 //
753 SymCryptAesCtrMsb32(&pState->pKey->blockcipherKey.aes,
754 &pState->counterBlock[0],
755 pbSrc,
756 pbDst,
757 cbData );
758
759#endif
760 pbSrc += bytesToProcess;
761 pbDst += bytesToProcess;
762 cbData -= bytesToProcess;
763 }
764
765 if( cbData > 0 )
766 {
768
769 SYMCRYPT_ASSERT( pState->pKey->pBlockCipher->blockSize == SYMCRYPT_GCM_BLOCK_SIZE );
770 SymCryptAesCtrMsb32(&pState->pKey->blockcipherKey.aes,
771 &pState->counterBlock[0],
772 &pState->keystreamBlock[0],
773 &pState->keystreamBlock[0],
775
776 memcpy( &pState->macBlock[0], pbSrc, cbData );
778 &pState->keystreamBlock[0],
779 &pState->macBlock[0],
780 pbDst,
781 cbData );
782
783 pState->bytesInMacBlock = cbData;
784
785 //
786 // pState->cbData contains the data length after this call already, so it knows how many
787 // bytes are left in the keystream block
788 //
789 }
790}
791
792VOID
798 SIZE_T cbData )
799{
800#if SYMCRYPT_CPU_AMD64
802 {
804 } else {
806 }
807
808#elif SYMCRYPT_CPU_X86
809 SYMCRYPT_EXTENDED_SAVE_DATA SaveData;
810
812 SymCryptSaveXmm( &SaveData ) == SYMCRYPT_NO_ERROR )
813 {
815 SymCryptRestoreXmm( &SaveData );
816 } else {
818 }
819
820#elif SYMCRYPT_CPU_ARM64
821 if( SYMCRYPT_CPU_FEATURES_PRESENT( SYMCRYPT_CPU_FEATURE_NEON_AES | SYMCRYPT_CPU_FEATURE_NEON_PMULL ) )
822 {
824 } else {
826 }
827
828#else
830#endif
831}
832
833VOID
839 SIZE_T cbData )
840{
841#if SYMCRYPT_CPU_AMD64
843 {
845 } else {
847 }
848
849#elif SYMCRYPT_CPU_X86
850 SYMCRYPT_EXTENDED_SAVE_DATA SaveData;
851
853 SymCryptSaveXmm( &SaveData ) == SYMCRYPT_NO_ERROR )
854 {
856 SymCryptRestoreXmm( &SaveData );
857 } else {
859 }
860
861#elif SYMCRYPT_CPU_ARM64
862 if( SYMCRYPT_CPU_FEATURES_PRESENT( SYMCRYPT_CPU_FEATURE_NEON_AES | SYMCRYPT_CPU_FEATURE_NEON_PMULL ) )
863 {
865 } else {
867 }
868
869#else
871#endif
872}
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptAesDecryptC(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PCBYTE pbCiphertext, _Out_writes_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbPlaintext)
Definition: aes-c.c:242
VOID SYMCRYPT_CALL SymCryptAesCreateDecryptionRoundKeyC(_In_reads_(16) PCBYTE pEncryptionRoundKey, _Out_writes_(16) PBYTE pDecryptionRoundKey)
Definition: aes-c.c:81
VOID SYMCRYPT_CALL SymCryptAesEcbEncryptC(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
Definition: aes-c.c:361
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptAesEncryptC(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PCBYTE pbPlaintext, _Out_writes_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbCiphertext)
Definition: aes-c.c:115
VOID SYMCRYPT_CALL SymCryptAesCreateDecryptionRoundKey(_In_reads_(16) PCBYTE pEncryptionRoundKey, _Out_writes_(16) PBYTE pDecryptionRoundKey, BOOL UseSimd)
Definition: aes-default.c:68
VOID SYMCRYPT_CALL SymCryptAesCtrMsb32(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
Definition: aes-default.c:359
VOID SYMCRYPT_CALL SymCryptAesDecrypt(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PCBYTE pbSrc, _Out_writes_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbDst)
Definition: aes-default.c:134
VOID SYMCRYPT_CALL SymCryptAesGcmDecryptPartOnePass(_Inout_ PSYMCRYPT_GCM_STATE pState, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
Definition: aes-default.c:623
VOID SYMCRYPT_CALL SymCryptAesGcmDecryptPart(_Inout_ PSYMCRYPT_GCM_STATE pState, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
Definition: aes-default.c:835
VOID SYMCRYPT_CALL SymCryptAesCbcDecrypt(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
Definition: aes-default.c:214
VOID SYMCRYPT_CALL SymCryptAesEcbDecrypt(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
Definition: aes-default.c:300
VOID SYMCRYPT_CALL SymCryptAesEncrypt(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PCBYTE pbSrc, _Out_writes_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbDst)
Definition: aes-default.c:95
VOID SYMCRYPT_CALL SymCryptAesGcmEncryptPart(_Inout_ PSYMCRYPT_GCM_STATE pState, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
Definition: aes-default.c:794
VOID SYMCRYPT_CALL SymCryptAesCtrMsb64(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
Definition: aes-default.c:404
const SYMCRYPT_BLOCKCIPHER SymCryptAesBlockCipherNoOpt
Definition: aes-default.c:20
VOID SYMCRYPT_CALL SymCryptAesGcmEncryptPartOnePass(_Inout_ PSYMCRYPT_GCM_STATE pState, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
Definition: aes-default.c:450
VOID SYMCRYPT_CALL SymCryptAesEcbEncrypt(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
Definition: aes-default.c:255
VOID SYMCRYPT_CALL SymCryptAesCbcMac(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
Definition: aes-default.c:317
VOID SYMCRYPT_CALL SymCryptAesCbcEncrypt(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
Definition: aes-default.c:173
VOID SYMCRYPT_CALL SymCryptAes4Sbox(_In_reads_(4) PCBYTE pIn, _Out_writes_(4) PBYTE pOut, BOOL UseSimd)
Definition: aes-default.c:44
VOID SYMCRYPT_CALL SymCryptCtrMsb32(_In_ PCSYMCRYPT_BLOCKCIPHER pBlockCipher, _In_ PCVOID pExpandedKey, _Inout_updates_(pBlockCipher->blockSize) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
#define NULL
Definition: types.h:112
VOID SaveData(HWND hwndDlg)
Definition: volume.c:368
unsigned int BOOL
Definition: ntddk_ex.h:94
VOID SYMCRYPT_CALL SymCryptGHashAppendData(_In_ PCSYMCRYPT_GHASH_EXPANDED_KEY expandedKey, _Inout_ PSYMCRYPT_GF128_ELEMENT pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
Definition: ghash.c:884
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define _In_reads_(s)
Definition: no_sal2.h:168
#define _Inout_updates_(s)
Definition: no_sal2.h:182
#define _Inout_
Definition: no_sal2.h:162
#define _Out_writes_(s)
Definition: no_sal2.h:176
#define _In_
Definition: no_sal2.h:158
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:329
BYTE * PBYTE
Definition: pedump.c:66
VOID SYMCRYPT_CALL SymCryptAesCbcDecryptXmm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesCtrMsb64Xmm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
#define GCM_YMM_MINBLOCKS
Definition: sc_lib.h:1611
VOID SYMCRYPT_CALL SymCryptAesCbcMacXmm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesCbcEncryptNeon(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAes4SboxNeon(_In_reads_(4) PCBYTE pIn, _Out_writes_(4) PBYTE pOut)
VOID SYMCRYPT_CALL SymCryptAes4SboxC(_In_reads_(4) PCBYTE pIn, _Out_writes_(4) PBYTE pOut)
VOID SYMCRYPT_CALL SymCryptAesEncryptNeon(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PCBYTE pbSrc, _Out_writes_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbDst)
VOID SYMCRYPT_CALL SymCryptAesEncryptAsm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PCBYTE pbSrc, _Out_writes_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbDst)
VOID SYMCRYPT_CALL SymCryptAesGcmDecryptStitchedNeon(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(SYMCRYPT_GF128_FIELD_SIZE) PCSYMCRYPT_GF128_ELEMENT expandedKeyTable, _Inout_ PSYMCRYPT_GF128_ELEMENT pState, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
#define SYMCRYPT_CPU_FEATURES_FOR_AESNI_PCLMULQDQ_CODE
Definition: sc_lib.h:308
VOID SYMCRYPT_CALL SymCryptAesCbcEncryptXmm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesCtrMsb32Neon(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesCbcEncryptAsm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesGcmDecryptStitchedYmm_2048(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(SYMCRYPT_GF128_FIELD_SIZE) PCSYMCRYPT_GF128_ELEMENT expandedKeyTable, _Inout_ PSYMCRYPT_GF128_ELEMENT pState, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesCtrMsb32Xmm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesDecryptAsm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PCBYTE pbSrc, _Out_writes_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbDst)
VOID SYMCRYPT_CALL SymCryptAesCbcDecryptNeon(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesCbcMacNeon(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesGcmEncryptStitchedXmm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(SYMCRYPT_GF128_FIELD_SIZE) PCSYMCRYPT_GF128_ELEMENT expandedKeyTable, _Inout_ PSYMCRYPT_GF128_ELEMENT pState, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesEcbEncryptXmm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesGcmEncryptStitchedNeon(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(SYMCRYPT_GF128_FIELD_SIZE) PCSYMCRYPT_GF128_ELEMENT expandedKeyTable, _Inout_ PSYMCRYPT_GF128_ELEMENT pState, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesCtrMsb64Neon(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAes4SboxXmm(_In_reads_(4) PCBYTE pIn, _Out_writes_(4) PBYTE pOut)
VOID SYMCRYPT_CALL SymCryptAesEcbEncryptNeon(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesCbcDecryptAsm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesDecryptNeon(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PCBYTE pbSrc, _Out_writes_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbDst)
VOID SYMCRYPT_CALL SymCryptAesCtrMsb64Asm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _Inout_updates_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesGcmDecryptStitchedXmm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(SYMCRYPT_GF128_FIELD_SIZE) PCSYMCRYPT_GF128_ELEMENT expandedKeyTable, _Inout_ PSYMCRYPT_GF128_ELEMENT pState, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
#define SYMCRYPT_CPU_FEATURES_FOR_AESNI_CODE
Definition: sc_lib.h:307
VOID SYMCRYPT_CALL SymCryptAesGcmEncryptStitchedYmm_2048(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbChainingValue, _In_reads_(SYMCRYPT_GF128_FIELD_SIZE) PCSYMCRYPT_GF128_ELEMENT expandedKeyTable, _Inout_ PSYMCRYPT_GF128_ELEMENT pState, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptAesEncryptXmm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PCBYTE pbSrc, _Out_writes_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbDst)
VOID SYMCRYPT_CALL SymCryptAesCreateDecryptionRoundKeyNeon(_In_reads_(16) PCBYTE pEncryptionRoundKey, _Out_writes_(16) PBYTE pDecryptionRoundKey)
VOID SYMCRYPT_CALL SymCryptAesCreateDecryptionRoundKeyXmm(_In_reads_(16) PCBYTE pEncryptionRoundKey, _Out_writes_(16) PBYTE pDecryptionRoundKey)
#define SYMCRYPT_CPU_FEATURES_FOR_VAES_256_CODE
Definition: sc_lib.h:309
VOID SYMCRYPT_CALL SymCryptAesDecryptXmm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(SYMCRYPT_AES_BLOCK_SIZE) PCBYTE pbSrc, _Out_writes_(SYMCRYPT_AES_BLOCK_SIZE) PBYTE pbDst)
VOID SYMCRYPT_CALL SymCryptAesEcbEncryptAsm(_In_ PCSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptGcmDecryptPartTwoPass(_Inout_ PSYMCRYPT_GCM_STATE pState, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
Definition: gcm.c:543
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptGcmEncryptPartTwoPass(_Inout_ PSYMCRYPT_GCM_STATE pState, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
Definition: gcm.c:481
#define SYMCRYPT_ASSERT(_x)
Definition: symcrypt.h:10807
FORCEINLINE VOID SYMCRYPT_CALL SymCryptWipeKnownSize(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptCbcEncrypt(_In_ PCSYMCRYPT_BLOCKCIPHER pBlockCipher, _In_ PCVOID pExpandedKey, _Inout_updates_(pBlockCipher->blockSize) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptAesExpandKey(_Out_ PSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(cbKey) PCBYTE pbKey, SIZE_T cbKey)
Definition: aes-key.c:219
VOID SYMCRYPT_CALL SymCryptXorBytes(_In_reads_(cbBytes) PCBYTE pbSrc1, _In_reads_(cbBytes) PCBYTE pbSrc2, _Out_writes_(cbBytes) PBYTE pbResult, SIZE_T cbBytes)
Definition: libmain.c:236
#define SYMCRYPT_AES_BLOCK_SIZE
Definition: symcrypt.h:4255
VOID SYMCRYPT_CALL SymCryptCtrMsb64(_In_ PCSYMCRYPT_BLOCKCIPHER pBlockCipher, _In_ PCVOID pExpandedKey, _Inout_updates_(pBlockCipher->blockSize) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptCbcMac(_In_ PCSYMCRYPT_BLOCKCIPHER pBlockCipher, _In_ PCVOID pExpandedKey, _Inout_updates_(pBlockCipher->blockSize) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptCbcDecrypt(_In_ PCSYMCRYPT_BLOCKCIPHER pBlockCipher, _In_ PCVOID pExpandedKey, _Inout_updates_(pBlockCipher->blockSize) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
PBYTE pbChainingValue
PCBYTE pbSrc
#define SYMCRYPT_CALL
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_GCM_STATE
#define SYMCRYPT_GCM_BLOCK_SIZE
#define SYMCRYPT_CPU_FEATURES_PRESENT(x)
#define SYMCRYPT_GCM_BLOCK_MOD_MASK
const SYMCRYPT_AES_EXPANDED_KEY * PCSYMCRYPT_AES_EXPANDED_KEY
#define SYMCRYPT_MIN(_a, _b)
* PSYMCRYPT_GF128_ELEMENT
PCBYTE PBYTE SIZE_T cbData
PCBYTE PBYTE pbDst
SYMCRYPT_MAGIC_FIELD SYMCRYPT_AES_EXPANDED_KEY
#define SYMCRYPT_GCM_MAX_DATA_SIZE
#define SYMCRYPT_GCM_BLOCK_ROUND_MASK
PSYMCRYPT_COMMON_HASH_STATE pState
const BYTE * PCBYTE
PCBYTE pbData
PCVOID pExpandedKey
ULONG_PTR SIZE_T
Definition: typedefs.h:80