15#pragma GCC diagnostic ignored "-Wunknown-pragmas"
22#pragma warning(disable:4068)
29#define SYMCRYPT_PLATFORM_WINDOWS 0
30#define SYMCRYPT_PLATFORM_APPLE 0
31#define SYMCRYPT_PLATFORM_UNIX 0
34 #undef SYMCRYPT_PLATFORM_WINDOWS
35 #define SYMCRYPT_PLATFORM_WINDOWS 1
36#elif defined(__APPLE__)
37 #undef SYMCRYPT_PLATFORM_APPLE
38 #define SYMCRYPT_PLATFORM_APPLE 1
39#elif (defined(linux) || defined(__unix__))
40 #undef SYMCRYPT_PLATFORM_UNIX
41 #define SYMCRYPT_PLATFORM_UNIX 1
44#define SYMCRYPT_MS_VC 0
45#define SYMCRYPT_GNUC 0
49 #define SYMCRYPT_MS_VC 1
50#elif defined(__GNUC__)
52 #define SYMCRYPT_GNUC 1
54 #error Unsupported compiler
60#define SYMCRYPT_ANYSIZE_ARRAY 1
61#define SYMCRYPT_NOINLINE __declspec(noinline)
62#define SYMCRYPT_CDECL __cdecl
63#define SYMCRYPT_FASTCALL __fastcall
65#define SYMCRYPT_UNALIGNED
70#pragma GCC diagnostic ignored "-Wmultichar"
71#pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
73#define SYMCRYPT_ANYSIZE_ARRAY 1
74#define SYMCRYPT_NOINLINE __attribute__ ((noinline))
75#define SYMCRYPT_UNALIGNED
77#define SYMCRYPT_FASTCALL __attribute__((fastcall))
82#pragma clang diagnostic ignored "-Wmultichar"
83#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
84#pragma clang diagnostic ignored "-Wincompatible-pointer-types-discards-qualifiers"
115#ifndef __WINE_PE_BUILD
116#define SYMCRYPT_IGNORE_PLATFORM
117#elif defined __clang_major__ && __clang_major__ < 19
119#define SYMCRYPT_IGNORE_PLATFORM
122#define SYMCRYPT_CPU_X86 0
123#define SYMCRYPT_CPU_AMD64 0
124#define SYMCRYPT_CPU_ARM 0
125#define SYMCRYPT_CPU_ARM64 0
126#define SYMCRYPT_CPU_UNKNOWN 0
128#if (defined( _X86_ ) || defined( _M_IX86 ) || defined( __i386__ )) && !defined ( SYMCRYPT_IGNORE_PLATFORM )
130#undef SYMCRYPT_CPU_X86
131#define SYMCRYPT_CPU_X86 1
133#define SYMCRYPT_CALL SYMCRYPT_FASTCALL
134#define SYMCRYPT_ALIGN_VALUE 4
138#pragma warning(disable:4359)
141#elif (defined( _ARM64_ ) || defined( _ARM64EC_ ) || defined( _M_ARM64 ) || defined( __aarch64__ ) || defined(__arm64ec__)) && !defined( SYMCRYPT_IGNORE_PLATFORM )
143#undef SYMCRYPT_CPU_ARM64
144#define SYMCRYPT_CPU_ARM64 1
146#define SYMCRYPT_ALIGN_VALUE 16
148#elif (defined( _AMD64_ ) || defined( _M_AMD64 ) || defined( __amd64__ )) && !defined ( SYMCRYPT_IGNORE_PLATFORM )
150#undef SYMCRYPT_CPU_AMD64
151#define SYMCRYPT_CPU_AMD64 1
154#define SYMCRYPT_ALIGN_VALUE 16
156#elif (defined( _ARM_ ) || defined( _M_ARM ) || defined( __arm__ )) && !defined( SYMCRYPT_IGNORE_PLATFORM )
158#undef SYMCRYPT_CPU_ARM
159#define SYMCRYPT_CPU_ARM 1
161#define SYMCRYPT_ALIGN_VALUE 8
163#elif defined( SYMCRYPT_IGNORE_PLATFORM )
165#undef SYMCRYPT_CPU_UNKNOWN
166#define SYMCRYPT_CPU_UNKNOWN 1
168#define SYMCRYPT_ALIGN_VALUE 4
172#pragma warning(disable:4359)
177#error Unknown CPU platform
187#if SYMCRYPT_PLATFORM_WINDOWS
208#define UINT32_MAX (0xffffffff)
223#define SIZE_T_MAX SIZE_MAX
272#define SYMCRYPT_FIELD_OFFSET(type, field) (offsetof(type, field))
273#define SYMCRYPT_FIELD_SIZE(type, field) (sizeof( ((type *)0)->field ))
278#if (_MSC_VER >= 1200)
279#define FORCEINLINE __forceinline
281#define FORCEINLINE __inline
288#define FORCEINLINE static inline
293#define SYMCRYPT_ALIGN_UP( _p ) ((PBYTE) ( ((SIZE_T) (_p) + SYMCRYPT_ALIGN_VALUE - 1) & ~(SYMCRYPT_ALIGN_VALUE - 1 ) ) )
296 #define SYMCRYPT_ALIGN_AT(alignment) __declspec(align(alignment))
297 #define SYMCRYPT_WEAK_SYMBOL
299 #define SYMCRYPT_ALIGN_AT(alignment) __attribute__((aligned(alignment)))
300 #define SYMCRYPT_WEAK_SYMBOL __attribute__((weak))
302 #define SYMCRYPT_ALIGN_AT(alignment)
303 #define SYMCRYPT_WEAK_SYMBOL
305#define SYMCRYPT_ALIGN_TYPE_AT(typename, alignment) typename SYMCRYPT_ALIGN_AT(alignment)
306#define SYMCRYPT_ALIGN SYMCRYPT_ALIGN_AT(SYMCRYPT_ALIGN_VALUE)
307#define SYMCRYPT_ALIGN_STRUCT SYMCRYPT_ALIGN_TYPE_AT(struct, SYMCRYPT_ALIGN_VALUE)
308#define SYMCRYPT_ALIGN_UNION SYMCRYPT_ALIGN_TYPE_AT(union, SYMCRYPT_ALIGN_VALUE)
311#define SYMCRYPT_MAX( _a, _b ) ((_a)>(_b)?(_a):(_b))
312#define SYMCRYPT_MIN( _a, _b ) ((_a)<(_b)?(_a):(_b))
314#if SYMCRYPT_CPU_X86 | SYMCRYPT_CPU_AMD64
319#pragma prefast(disable: 28251, "Windows headers define _mm_clflush with SAL annotation, Intel header doesn't have SAL annotation leading to inconsistent annotation errors")
333#if SYMCRYPT_DEBUG && !defined(__REACTOS__)
334 #define SYMCRYPT_MAGIC_ENABLED
337#if defined(SYMCRYPT_MAGIC_ENABLED )
339#define SYMCRYPT_MAGIC_FIELD SIZE_T magic;
340#define SYMCRYPT_MAGIC_VALUE( p ) ((SIZE_T) p + 'S1mv' + SYMCRYPT_API_VERSION)
343#define SYMCRYPT_SET_MAGIC( p ) {(p)->magic = SYMCRYPT_MAGIC_VALUE( p );}
344#define SYMCRYPT_CHECK_MAGIC( p ) {if((p)->magic!=SYMCRYPT_MAGIC_VALUE(p)) SymCryptFatal('magc');}
345#define SYMCRYPT_WIPE_MAGIC( p ) {(p)->magic = 0;}
357#define SYMCRYPT_MAGIC_FIELD SIZE_T magic;
358#define SYMCRYPT_SET_MAGIC( p )
359#define SYMCRYPT_CHECK_MAGIC( p )
360#define SYMCRYPT_WIPE_MAGIC( p )
368#if !SYMCRYPT_PLATFORM_WINDOWS
370 void __cpuidex(
int CPUInfo[4],
int InfoType,
int ECXValue);
373#if SYMCRYPT_CPU_ARM || SYMCRYPT_CPU_ARM64
375#define SYMCRYPT_CPU_FEATURE_NEON 0x01
376#define SYMCRYPT_CPU_FEATURE_NEON_AES 0x02
377#define SYMCRYPT_CPU_FEATURE_NEON_PMULL 0x04
378#define SYMCRYPT_CPU_FEATURE_NEON_SHA256 0x08
380#elif SYMCRYPT_CPU_X86 | SYMCRYPT_CPU_AMD64
387#define SYMCRYPT_CPU_FEATURE_SSE2 0x0001
388#define SYMCRYPT_CPU_FEATURE_SSSE3 0x0002
389#define SYMCRYPT_CPU_FEATURE_AESNI 0x0004
390#define SYMCRYPT_CPU_FEATURE_PCLMULQDQ 0x0008
391#define SYMCRYPT_CPU_FEATURE_AVX2 0x0010
392#define SYMCRYPT_CPU_FEATURE_SAVEXMM_NOFAIL 0x0020
393#define SYMCRYPT_CPU_FEATURE_SHANI 0x0040
394#define SYMCRYPT_CPU_FEATURE_BMI2 0x0080
396#define SYMCRYPT_CPU_FEATURE_ADX 0x0100
397#define SYMCRYPT_CPU_FEATURE_RDRAND 0x0200
398#define SYMCRYPT_CPU_FEATURE_RDSEED 0x0400
399#define SYMCRYPT_CPU_FEATURE_VAES 0x0800
400#define SYMCRYPT_CPU_FEATURE_AVX512 0x1000
403#define SYMCRYPT_CPU_FEATURE_CMPXCHG16B 0x2000
423#define SYMCRYPT_CPU_FEATURES_PRESENT( x ) ( ((x) & SymCryptCpuFeaturesNeverPresent()) == 0 && ( (x) & g_SymCryptCpuFeaturesNotPresent ) == 0 )
440 #if SYMCRYPT_CPU_ARM || SYMCRYPT_CPU_ARM64
441 #define SYMCRYPT_INTERNAL_VOLATILE_READ8( _p ) ( __iso_volatile_load8( (const volatile char*)(_p) ) )
442 #define SYMCRYPT_INTERNAL_VOLATILE_READ16( _p ) ( __iso_volatile_load16( (const volatile short*)(_p) ) )
443 #define SYMCRYPT_INTERNAL_VOLATILE_READ32( _p ) ( __iso_volatile_load32( (const volatile int*)(_p) ) )
444 #define SYMCRYPT_INTERNAL_VOLATILE_READ64( _p ) ( __iso_volatile_load64( (const volatile __int64*)(_p) ) )
446 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE8( _p, _v ) ( __iso_volatile_store8( (volatile char*)(_p), (_v) ) )
447 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE16( _p, _v ) ( __iso_volatile_store16( (volatile short*)(_p), (_v) ) )
448 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE32( _p, _v ) ( __iso_volatile_store32( (volatile int*)(_p), (_v) ) )
449 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE64( _p, _v ) ( __iso_volatile_store64( (volatile __int64*)(_p), (_v) ) )
450 #elif SYMCRYPT_CPU_X86 || SYMCRYPT_CPU_AMD64
451 #define SYMCRYPT_INTERNAL_VOLATILE_READ8( _p ) ( *((const volatile BYTE*) (_p)) )
452 #define SYMCRYPT_INTERNAL_VOLATILE_READ16( _p ) ( *((const volatile UINT16*)(_p)) )
453 #define SYMCRYPT_INTERNAL_VOLATILE_READ32( _p ) ( *((const volatile UINT32*)(_p)) )
454 #define SYMCRYPT_INTERNAL_VOLATILE_READ64( _p ) ( *((const volatile UINT64*)(_p)) )
456 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE8( _p, _v ) ( *((volatile BYTE*) (_p)) = (_v) )
457 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE16( _p, _v ) ( *((volatile UINT16*)(_p)) = (_v) )
458 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE32( _p, _v ) ( *((volatile UINT32*)(_p)) = (_v) )
459 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE64( _p, _v ) ( *((volatile UINT64*)(_p)) = (_v) )
461 #define SYMCRYPT_INTERNAL_VOLATILE_READ8( _p ) ( *((const volatile BYTE*) (_p)) )
462 #define SYMCRYPT_INTERNAL_VOLATILE_READ16( _p ) ( *((const volatile UINT16*)(_p)) )
463 #define SYMCRYPT_INTERNAL_VOLATILE_READ32( _p ) ( *((const volatile UINT32*)(_p)) )
464 #define SYMCRYPT_INTERNAL_VOLATILE_READ64( _p ) ( *((const volatile UINT64*)(_p)) )
466 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE8( _p, _v ) ( *((volatile BYTE*) (_p)) = (_v) )
467 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE16( _p, _v ) ( *((volatile UINT16*)(_p)) = (_v) )
468 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE32( _p, _v ) ( *((volatile UINT32*)(_p)) = (_v) )
469 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE64( _p, _v ) ( *((volatile UINT64*)(_p)) = (_v) )
474 #if !SYMCRYPT_CPU_ARM
475 #define SYMCRYPT_INTERNAL_VOLATILE_READ8( _p ) ( *((const volatile BYTE*) (_p)) )
476 #define SYMCRYPT_INTERNAL_VOLATILE_READ16( _p ) ( *((const volatile UINT16*)(_p)) )
477 #define SYMCRYPT_INTERNAL_VOLATILE_READ32( _p ) ( *((const volatile UINT32*)(_p)) )
478 #define SYMCRYPT_INTERNAL_VOLATILE_READ64( _p ) ( *((const volatile UINT64*)(_p)) )
480 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE8( _p, _v ) ( *((volatile BYTE*) (_p)) = (_v) )
481 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE16( _p, _v ) ( *((volatile UINT16*)(_p)) = (_v) )
482 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE32( _p, _v ) ( *((volatile UINT32*)(_p)) = (_v) )
483 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE64( _p, _v ) ( *((volatile UINT64*)(_p)) = (_v) )
485 #define SYMCRYPT_INTERNAL_VOLATILE_READ8( _p ) ( *((const volatile BYTE*) (_p)) )
486 #define SYMCRYPT_INTERNAL_VOLATILE_READ16( _p ) ( *((const volatile UINT16*)(_p)) )
487 #define SYMCRYPT_INTERNAL_VOLATILE_READ32( _p ) ( *((const volatile UINT32*)(_p)) )
488 #define SYMCRYPT_INTERNAL_VOLATILE_READ64( p ) ( (UINT64)SYMCRYPT_INTERNAL_VOLATILE_READ32(&((PBYTE)p)[4]) << 32 | SYMCRYPT_INTERNAL_VOLATILE_READ32(&((PBYTE)p)[0]) )
490 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE8( _p, _v ) ( *((volatile BYTE*) (_p)) = (_v) )
491 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE16( _p, _v ) ( *((volatile UINT16*)(_p)) = (_v) )
492 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE32( _p, _v ) ( *((volatile UINT32*)(_p)) = (_v) )
493 #define SYMCRYPT_INTERNAL_VOLATILE_WRITE64( p, x ) { \
494 SYMCRYPT_INTERNAL_VOLATILE_WRITE32( &((PBYTE)p)[0], (UINT32)((x) ) );\
495 SYMCRYPT_INTERNAL_VOLATILE_WRITE32( &((PBYTE)p)[4], (UINT32)(((UINT64)(x))>>32) );\
501 #error Unknown compiler
518#define SYMCRYPT_INTERNAL_FORCE_READ8( _p ) SYMCRYPT_INTERNAL_VOLATILE_READ8( _p )
519#define SYMCRYPT_INTERNAL_FORCE_READ16( _p ) SYMCRYPT_INTERNAL_VOLATILE_READ16( _p )
520#define SYMCRYPT_INTERNAL_FORCE_READ32( _p ) SYMCRYPT_INTERNAL_VOLATILE_READ32( _p )
521#define SYMCRYPT_INTERNAL_FORCE_READ64( _p ) SYMCRYPT_INTERNAL_VOLATILE_READ64( _p )
523#define SYMCRYPT_INTERNAL_FORCE_WRITE8( _p, _v ) SYMCRYPT_INTERNAL_VOLATILE_WRITE8( _p, _v )
524#define SYMCRYPT_INTERNAL_FORCE_WRITE16( _p, _v ) SYMCRYPT_INTERNAL_VOLATILE_WRITE16( _p, _v )
525#define SYMCRYPT_INTERNAL_FORCE_WRITE32( _p, _v ) SYMCRYPT_INTERNAL_VOLATILE_WRITE32( _p, _v )
526#define SYMCRYPT_INTERNAL_FORCE_WRITE64( _p, _v ) SYMCRYPT_INTERNAL_VOLATILE_WRITE64( _p, _v )
536 #define SYMCRYPT_BSWAP16( x ) _byteswap_ushort(x)
537 #define SYMCRYPT_BSWAP32( x ) _byteswap_ulong(x)
538 #define SYMCRYPT_BSWAP64( x ) _byteswap_uint64(x)
540 #define SYMCRYPT_BSWAP16( x ) __builtin_bswap16(x)
541 #define SYMCRYPT_BSWAP32( x ) __builtin_bswap32(x)
542 #define SYMCRYPT_BSWAP64( x ) __builtin_bswap64(x)
545#if SYMCRYPT_CPU_X86 | SYMCRYPT_CPU_AMD64 | SYMCRYPT_CPU_ARM64
556#define SYMCRYPT_INTERNAL_LOAD_MSBFIRST16( p ) SYMCRYPT_BSWAP16( *((UINT16 *)(p)) )
557#define SYMCRYPT_INTERNAL_LOAD_LSBFIRST16( p ) ( *((UINT16 *)(p)) )
558#define SYMCRYPT_INTERNAL_LOAD_MSBFIRST32( p ) SYMCRYPT_BSWAP32( *((UINT32 *)(p)) )
559#define SYMCRYPT_INTERNAL_LOAD_LSBFIRST32( p ) ( *((UINT32 *)(p)) )
560#define SYMCRYPT_INTERNAL_LOAD_MSBFIRST64( p ) SYMCRYPT_BSWAP64( *((UINT64 *)(p)) )
561#define SYMCRYPT_INTERNAL_LOAD_LSBFIRST64( p ) ( *((UINT64 *)(p)) )
563#define SYMCRYPT_INTERNAL_STORE_MSBFIRST16( p, x ) ( *(UINT16 *)(p) = SYMCRYPT_BSWAP16(x) )
564#define SYMCRYPT_INTERNAL_STORE_LSBFIRST16( p, x ) ( *(UINT16 *)(p) = (x) )
565#define SYMCRYPT_INTERNAL_STORE_MSBFIRST32( p, x ) ( *(UINT32 *)(p) = SYMCRYPT_BSWAP32(x) )
566#define SYMCRYPT_INTERNAL_STORE_LSBFIRST32( p, x ) ( *(UINT32 *)(p) = (x) )
567#define SYMCRYPT_INTERNAL_STORE_MSBFIRST64( p, x ) ( *(UINT64 *)(p) = SYMCRYPT_BSWAP64(x) )
568#define SYMCRYPT_INTERNAL_STORE_LSBFIRST64( p, x ) ( *(UINT64 *)(p) = (x) )
570#elif SYMCRYPT_CPU_ARM
575#define SYMCRYPT_INTERNAL_LOAD_MSBFIRST16( p ) SYMCRYPT_BSWAP16( *((UINT16 *)(p)) )
576#define SYMCRYPT_INTERNAL_LOAD_LSBFIRST16( p ) ( *((UINT16 *)(p)) )
577#define SYMCRYPT_INTERNAL_LOAD_MSBFIRST32( p ) SYMCRYPT_BSWAP32( *((UINT32 *)(p)) )
578#define SYMCRYPT_INTERNAL_LOAD_LSBFIRST32( p ) ( *((UINT32 *)(p)) )
580#define SYMCRYPT_INTERNAL_LOAD_MSBFIRST64( p ) ( (UINT64)SYMCRYPT_INTERNAL_LOAD_MSBFIRST32(&((PBYTE)p)[0]) << 32 | SYMCRYPT_INTERNAL_LOAD_MSBFIRST32(&((PBYTE)p)[4]) )
581#define SYMCRYPT_INTERNAL_LOAD_LSBFIRST64( p ) ( (UINT64)SYMCRYPT_INTERNAL_LOAD_LSBFIRST32(&((PBYTE)p)[4]) << 32 | SYMCRYPT_INTERNAL_LOAD_LSBFIRST32(&((PBYTE)p)[0]) )
585#define SYMCRYPT_INTERNAL_STORE_MSBFIRST16( p, x ) ( *(UINT16 *)(p) = SYMCRYPT_BSWAP16(x) )
586#define SYMCRYPT_INTERNAL_STORE_LSBFIRST16( p, x ) ( *(UINT16 *)(p) = (x) )
587#define SYMCRYPT_INTERNAL_STORE_MSBFIRST32( p, x ) ( *(UINT32 *)(p) = SYMCRYPT_BSWAP32(x) )
588#define SYMCRYPT_INTERNAL_STORE_LSBFIRST32( p, x ) ( *(UINT32 *)(p) = (x) )
589#define SYMCRYPT_INTERNAL_STORE_MSBFIRST64( p, x ) { \
590 SYMCRYPT_INTERNAL_STORE_MSBFIRST32( &((PBYTE)p)[0],(UINT32)(((UINT64)(x))>>32) );\
591 SYMCRYPT_INTERNAL_STORE_MSBFIRST32( &((PBYTE)p)[4],(UINT32)(x));\
594#define SYMCRYPT_INTERNAL_STORE_LSBFIRST64( p, x ) { \
595 SYMCRYPT_INTERNAL_STORE_LSBFIRST32( &((PBYTE)p)[0], (UINT32)((x) ) );\
596 SYMCRYPT_INTERNAL_STORE_LSBFIRST32( &((PBYTE)p)[4], (UINT32)(((UINT64)(x))>>32) );\
605#define SYMCRYPT_INTERNAL_LOAD_MSBFIRST16( p ) ( ((UINT16)((PBYTE)p)[0]) << 8 | ((PBYTE)p)[1] )
606#define SYMCRYPT_INTERNAL_LOAD_LSBFIRST16( p ) ( ((UINT16)((PBYTE)p)[1]) << 8 | ((PBYTE)p)[0] )
607#define SYMCRYPT_INTERNAL_LOAD_MSBFIRST32( p ) ( (UINT32)SYMCRYPT_INTERNAL_LOAD_MSBFIRST16(&((PBYTE)p)[0]) << 16 | SYMCRYPT_INTERNAL_LOAD_MSBFIRST16(&((PBYTE)p)[2]) )
608#define SYMCRYPT_INTERNAL_LOAD_LSBFIRST32( p ) ( (UINT32)SYMCRYPT_INTERNAL_LOAD_LSBFIRST16(&((PBYTE)p)[2]) << 16 | SYMCRYPT_INTERNAL_LOAD_LSBFIRST16(&((PBYTE)p)[0]) )
609#define SYMCRYPT_INTERNAL_LOAD_MSBFIRST64( p ) ( (UINT64)SYMCRYPT_INTERNAL_LOAD_MSBFIRST32(&((PBYTE)p)[0]) << 32 | SYMCRYPT_INTERNAL_LOAD_MSBFIRST32(&((PBYTE)p)[4]) )
610#define SYMCRYPT_INTERNAL_LOAD_LSBFIRST64( p ) ( (UINT64)SYMCRYPT_INTERNAL_LOAD_LSBFIRST32(&((PBYTE)p)[4]) << 32 | SYMCRYPT_INTERNAL_LOAD_LSBFIRST32(&((PBYTE)p)[0]) )
612#define SYMCRYPT_INTERNAL_STORE_MSBFIRST16( p, x ) { \
613 ((PBYTE)p)[0] = (BYTE)((x)>> 8);\
614 ((PBYTE)p)[1] = (BYTE)((x) );\
617#define SYMCRYPT_INTERNAL_STORE_LSBFIRST16( p, x ) { \
618 ((PBYTE)p)[0] = (BYTE)((x) );\
619 ((PBYTE)p)[1] = (BYTE)((x)>> 8);\
622#define SYMCRYPT_INTERNAL_STORE_MSBFIRST32( p, x ) { \
623 ((PBYTE)p)[0] = (BYTE)((x)>>24);\
624 ((PBYTE)p)[1] = (BYTE)((x)>>16);\
625 ((PBYTE)p)[2] = (BYTE)((x)>> 8);\
626 ((PBYTE)p)[3] = (BYTE)((x) );\
629#define SYMCRYPT_INTERNAL_STORE_LSBFIRST32( p, x ) { \
630 ((PBYTE)p)[0] = (BYTE)((x) );\
631 ((PBYTE)p)[1] = (BYTE)((x)>> 8);\
632 ((PBYTE)p)[2] = (BYTE)((x)>>16);\
633 ((PBYTE)p)[3] = (BYTE)((x)>>24);\
636#define SYMCRYPT_INTERNAL_STORE_MSBFIRST64( p, x ) { \
637 SYMCRYPT_INTERNAL_STORE_MSBFIRST32( &((PBYTE)p)[0],(UINT32)(((UINT64)(x))>>32) );\
638 SYMCRYPT_INTERNAL_STORE_MSBFIRST32( &((PBYTE)p)[4],(UINT32)(x));\
641#define SYMCRYPT_INTERNAL_STORE_LSBFIRST64( p, x ) { \
642 SYMCRYPT_INTERNAL_STORE_LSBFIRST32( &((PBYTE)p)[0], (UINT32)((x) ) );\
643 SYMCRYPT_INTERNAL_STORE_LSBFIRST32( &((PBYTE)p)[4], (UINT32)(((UINT64)(x))>>32) );\
1087#define SYMCRYPT_MD5_OID_COUNT (2)
1090#define SYMCRYPT_SHA1_OID_COUNT (2)
1093#define SYMCRYPT_SHA224_OID_COUNT (2)
1096#define SYMCRYPT_SHA256_OID_COUNT (2)
1099#define SYMCRYPT_SHA384_OID_COUNT (2)
1102#define SYMCRYPT_SHA512_OID_COUNT (2)
1105#define SYMCRYPT_SHA512_224_OID_COUNT (2)
1108#define SYMCRYPT_SHA512_256_OID_COUNT (2)
1111#define SYMCRYPT_SHA3_224_OID_COUNT (2)
1114#define SYMCRYPT_SHA3_256_OID_COUNT (2)
1117#define SYMCRYPT_SHA3_384_OID_COUNT (2)
1120#define SYMCRYPT_SHA3_512_OID_COUNT (2)
1123#define SYMCRYPT_SHAKE128_OID_COUNT (2)
1126#define SYMCRYPT_SHAKE256_OID_COUNT (2)
1176#define SYMCRYPT_HASH_MAX_RESULT_SIZE SYMCRYPT_SHA512_RESULT_SIZE
1212#define SYMCRYPT_PARALLEL_SHA256_MIN_PARALLELISM (3)
1213#define SYMCRYPT_PARALLEL_SHA256_MAX_PARALLELISM (4)
1215#define SYMCRYPT_PARALLEL_SHA256_MIN_PARALLELISM (2)
1216#define SYMCRYPT_PARALLEL_SHA256_MAX_PARALLELISM (8)
1258#if SYMCRYPT_CPU_X86 | SYMCRYPT_CPU_AMD64
1259#define SYMCRYPT_SIMD_ELEMENT_SIZE 32
1260#elif SYMCRYPT_CPU_ARM | SYMCRYPT_CPU_ARM64
1261#define SYMCRYPT_SIMD_ELEMENT_SIZE 16
1262#elif SYMCRYPT_CPU_UNKNOWN
1263#define SYMCRYPT_SIMD_ELEMENT_SIZE 0
1268#define SYMCRYPT_PARALLEL_SHA256_FIXED_SCRATCH ( (4 + 8 + 64) * SYMCRYPT_SIMD_ELEMENT_SIZE + SYMCRYPT_SIMD_ELEMENT_SIZE - 1 + SYMCRYPT_ALIGN_VALUE - 1 )
1269#define SYMCRYPT_PARALLEL_SHA384_FIXED_SCRATCH ( (4 + 8 + 80) * SYMCRYPT_SIMD_ELEMENT_SIZE + SYMCRYPT_SIMD_ELEMENT_SIZE - 1 + SYMCRYPT_ALIGN_VALUE - 1 )
1270#define SYMCRYPT_PARALLEL_SHA512_FIXED_SCRATCH ( (4 + 8 + 80) * SYMCRYPT_SIMD_ELEMENT_SIZE + SYMCRYPT_SIMD_ELEMENT_SIZE - 1 + SYMCRYPT_ALIGN_VALUE - 1 )
1271#define SYMCRYPT_PARALLEL_HASH_PER_STATE_SCRATCH (sizeof( SYMCRYPT_PARALLEL_HASH_SCRATCH_STATE ) + sizeof( PSYMCRYPT_PARALLEL_HASH_SCRATCH_STATE ) )
1717#define SYMCRYPT_MAC_MAX_RESULT_SIZE SYMCRYPT_HMAC_SHA512_RESULT_SIZE
1786 UINT32 roundKey[3][16][2];
1822#define SYMCRYPT_CCM_BLOCK_SIZE (16)
1849#define SYMCRYPT_GCM_BLOCKCIPHER_KEY_SIZE sizeof( union _SYMCRYPT_GCM_SUPPORTED_BLOCKCIPHER_KEYS )
1851#define SYMCRYPT_GF128_FIELD_SIZE (128)
1852#define SYMCRYPT_GF128_BLOCK_SIZE (16)
1853#define SYMCRYPT_GCM_BLOCK_SIZE (16)
1854#define SYMCRYPT_GCM_MAX_KEY_SIZE (32)
1857#define SYMCRYPT_GCM_MAX_DATA_SIZE (((UINT64)1 << 36) - 32)
1859#define SYMCRYPT_GCM_BLOCK_MOD_MASK (SYMCRYPT_GCM_BLOCK_SIZE - 1)
1860#define SYMCRYPT_GCM_BLOCK_ROUND_MASK (~SYMCRYPT_GCM_BLOCK_MOD_MASK)
1868 #define SYMCRYPT_GHASH_EXTRA_KEY_ALIGNMENT
1871#define SYMCRYPT_GHASH_ALLOW_XMM (SYMCRYPT_CPU_X86 | SYMCRYPT_CPU_AMD64)
1872#define SYMCRYPT_GHASH_ALLOW_NEON (SYMCRYPT_CPU_ARM | SYMCRYPT_CPU_ARM64)
1876#include <arm_neon.h>
1877#if SYMCRYPT_GNUC || defined(__clang__)
1878 #define __n128 uint32x4_t
1879 #define __n64 uint64x1_t
1882#elif SYMCRYPT_CPU_ARM64
1884 #if SYMCRYPT_MS_VC && !defined(__clang__)
1885 #include <arm64_neon.h>
1888 #define SYMCRYPT_SET_N128_U64(d0, d1) \
1889 ((__n128) {.n128_u64 = {d0, d1}})
1890 #define SYMCRYPT_SET_N64_U64(d0) \
1891 ((__n64) {.n64_u64 = {d0}})
1892 #define SYMCRYPT_SET_N128_U8(b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15) \
1893 ((__n128) {.n128_u8 = {b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15}})
1895 #include <arm_neon.h>
1897 #define __n128 uint8x16_t
1898 #define __n64 uint8x8_t
1900 #define SYMCRYPT_SET_N128_U64(d0, d1) \
1901 ((__n128) ((uint64x2_t) {d0, d1}))
1902 #define SYMCRYPT_SET_N64_U64(d0) \
1903 ((__n64) ((uint64x1_t) {d0}))
1904 #define SYMCRYPT_SET_N128_U8(b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15) \
1905 ((__n128) ((uint8x16_t) {b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15}))
1907 #define vmullq_p64( a, b ) ((__n128) vmull_p64(vgetq_lane_p64((poly64x2_t)a, 0), vgetq_lane_p64((poly64x2_t)b, 0)))
1908 #define vmull_p64( a, b ) ((__n128) vmull_p64( (poly64_t)a, (poly64_t)b ))
1909 #define vmull_high_p64( a, b ) ((__n128) vmull_high_p64( (poly64x2_t)a, (poly64x2_t)b ))
1927#if SYMCRYPT_GHASH_ALLOW_XMM
1936#if SYMCRYPT_GHASH_ALLOW_NEON
1946#if defined( SYMCRYPT_GHASH_EXTRA_KEY_ALIGNMENT )
1984#define SYMCRYPT_MAX_BLOCK_SIZE (32)
2016#define SYMCRYPT_FLAG_SESSION_ENCRYPT (0x1)
2045#if SYMCRYPT_CPU_AMD64 | SYMCRYPT_CPU_ARM64
2046#define SYMCRYPT_USE_CAS128 (1)
2049#define SYMCRYPT_ALIGN_SESSION SYMCRYPT_ALIGN_TYPE_AT(struct, 16)
2051#define SYMCRYPT_USE_CAS128 (0)
2054#define SYMCRYPT_ALIGN_SESSION SYMCRYPT_ALIGN_TYPE_AT(struct, 8)
2085#define SYMCRYPT_SESSION_MAX_MESSAGE_NUMBER (0xffffffff00000000ull)
2092#if SYMCRYPT_USE_CAS128
2138 BYTE keyAndV[32 + 16];
2179#define SYMCRYPT_MD2_STATE_EXPORT_SIZE (80)
2180#define SYMCRYPT_MD4_STATE_EXPORT_SIZE (116)
2181#define SYMCRYPT_MD5_STATE_EXPORT_SIZE (116)
2182#define SYMCRYPT_SHA1_STATE_EXPORT_SIZE (120)
2183#define SYMCRYPT_SHA224_STATE_EXPORT_SIZE (132)
2184#define SYMCRYPT_SHA256_STATE_EXPORT_SIZE (132)
2185#define SYMCRYPT_SHA384_STATE_EXPORT_SIZE (236)
2186#define SYMCRYPT_SHA512_STATE_EXPORT_SIZE (236)
2187#define SYMCRYPT_SHA512_224_STATE_EXPORT_SIZE (236)
2188#define SYMCRYPT_SHA512_256_STATE_EXPORT_SIZE (236)
2190#define SYMCRYPT_KECCAK_STATE_EXPORT_SIZE (234)
2191#define SYMCRYPT_SHA3_224_STATE_EXPORT_SIZE SYMCRYPT_KECCAK_STATE_EXPORT_SIZE
2192#define SYMCRYPT_SHA3_256_STATE_EXPORT_SIZE SYMCRYPT_KECCAK_STATE_EXPORT_SIZE
2193#define SYMCRYPT_SHA3_384_STATE_EXPORT_SIZE SYMCRYPT_KECCAK_STATE_EXPORT_SIZE
2194#define SYMCRYPT_SHA3_512_STATE_EXPORT_SIZE SYMCRYPT_KECCAK_STATE_EXPORT_SIZE
2284#if SYMCRYPT_CPU_AMD64
2286#define SYMCRYPT_FDEF_DIGIT_SIZE 64
2287#define SYMCRYPT_ASYM_ALIGN_VALUE 32
2289#elif SYMCRYPT_CPU_ARM64
2291#define SYMCRYPT_FDEF_DIGIT_SIZE 32
2292#define SYMCRYPT_ASYM_ALIGN_VALUE 32
2296#define SYMCRYPT_FDEF_DIGIT_SIZE 16
2297#define SYMCRYPT_ASYM_ALIGN_VALUE 16
2301#define SYMCRYPT_ASYM_ALIGN_UP( _p ) ((PBYTE) ( ((SIZE_T) (_p) + SYMCRYPT_ASYM_ALIGN_VALUE - 1) & ~(SYMCRYPT_ASYM_ALIGN_VALUE - 1 ) ) )
2315#define SYMCRYPT_ASYM_ALIGN SYMCRYPT_ALIGN_AT(SYMCRYPT_ASYM_ALIGN_VALUE)
2317#define SYMCRYPT_ASYM_ALIGN_STRUCT SYMCRYPT_ASYM_ALIGN struct
2319#define SYMCRYPT_ASYM_ALIGN_STRUCT struct SYMCRYPT_ASYM_ALIGN
2321#error Unknown compiler
2354#define SYMCRYPT_ANYSIZE 1
2356#define SYMCRYPT_FDEF_DIGIT_BITS (8*SYMCRYPT_FDEF_DIGIT_SIZE)
2357#define SYMCRYPT_FDEF_DIGITS_FROM_BITS( _bits ) ( \
2358 ((_bits)/ SYMCRYPT_FDEF_DIGIT_BITS) + \
2359 (( ((_bits) & (SYMCRYPT_FDEF_DIGIT_BITS-1)) + (SYMCRYPT_FDEF_DIGIT_BITS - 1) )/SYMCRYPT_FDEF_DIGIT_BITS) \
2362#define SYMCRYPT_BYTES_FROM_BITS(bits) ( ( (bits) + 7 ) / 8 )
2370#define SYMCRYPT_INT_MAX_BITS ((UINT32)(1 << 20))
2380#define SYMCRYPT_FDEF_UPB_DIGITS (SYMCRYPT_FDEF_DIGITS_FROM_BITS(SYMCRYPT_INT_MAX_BITS))
2419#define SYMCRYPT_FDEF_INT_PUINT32( p ) (&(p)->ti.fdef.uint32[0])
2422#define SYMCRYPT_FDEF_SIZEOF_INT_FROM_DIGITS( _nDigits ) ((_nDigits) * SYMCRYPT_FDEF_DIGIT_SIZE + sizeof( SYMCRYPT_INT ) )
2423#define SYMCRYPT_FDEF_SIZEOF_INT_FROM_BITS( _bits ) SYMCRYPT_FDEF_SIZEOF_INT_FROM_DIGITS( SYMCRYPT_FDEF_DIGITS_FROM_BITS( _bits ))
2442#define SYMCRYPT_FDEF_SIZEOF_DIVISOR_FROM_DIGITS( _nDigits ) ((_nDigits) * SYMCRYPT_FDEF_DIGIT_SIZE + sizeof( SYMCRYPT_DIVISOR ) )
2443#define SYMCRYPT_FDEF_SIZEOF_DIVISOR_FROM_BITS( _bits ) SYMCRYPT_FDEF_SIZEOF_DIVISOR_FROM_DIGITS( SYMCRYPT_FDEF_DIGITS_FROM_BITS( _bits ))
2474#define SYMCRYPT_FDEF_SIZEOF_MODULUS_FROM_DIGITS( _nDigits ) (sizeof( SYMCRYPT_MODULUS ) + SYMCRYPT_FDEF_SIZEOF_DIVISOR_FROM_DIGITS( _nDigits ) + (2 * _nDigits * SYMCRYPT_FDEF_DIGIT_SIZE) )
2475#define SYMCRYPT_FDEF_SIZEOF_MODULUS_FROM_BITS( _bits ) SYMCRYPT_FDEF_SIZEOF_MODULUS_FROM_DIGITS(SYMCRYPT_FDEF_DIGITS_FROM_BITS( _bits ))
2484#define SYMCRYPT_FDEF_SIZEOF_MODELEMENT_FROM_DIGITS( _nDigits ) ((_nDigits) * SYMCRYPT_FDEF_DIGIT_SIZE)
2485#define SYMCRYPT_FDEF_SIZEOF_MODELEMENT_FROM_BITS( _bits ) SYMCRYPT_FDEF_SIZEOF_MODELEMENT_FROM_DIGITS( SYMCRYPT_FDEF_DIGITS_FROM_BITS( _bits ) )
2510#define SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_TO_DIVISOR( _nDigits ) (16 * (_nDigits))
2512#define SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_MUL( _nDigits ) (16 * (_nDigits))
2514#define SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_DIVMOD( _nSrcDigits, _nDivisorDigits ) ( (_nSrcDigits + 1) * SYMCRYPT_FDEF_DIGIT_SIZE )
2516#define SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_EXTENDED_GCD( _nDigits ) ( \
2517 4 * SYMCRYPT_FDEF_SIZEOF_INT_FROM_DIGITS( _nDigits ) + \
2518 SYMCRYPT_FDEF_SIZEOF_INT_FROM_DIGITS( 2 * _nDigits ) + \
2519 2 * SYMCRYPT_FDEF_SIZEOF_DIVISOR_FROM_DIGITS( _nDigits ) + \
2520 SYMCRYPT_MAX( SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_DIVMOD( 2 * _nDigits, _nDigits ), \
2521 SYMCRYPT_MAX( SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_MUL( 2 * _nDigits ), \
2522 SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_TO_DIVISOR( _nDigits ) )) )
2524#define SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_COMMON_MOD_OPERATIONS( _nModDigits ) \
2525 ( (2*(_nModDigits) * SYMCRYPT_FDEF_DIGIT_SIZE) + \
2526 SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_DIVMOD( 2*(_nModDigits), _nModDigits ))
2528#define SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_CRT_GENERATION( _nDigits ) ( \
2529 2*SYMCRYPT_FDEF_SIZEOF_INT_FROM_DIGITS( _nDigits ) + \
2530 SYMCRYPT_MAX( SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_EXTENDED_GCD( _nDigits ), \
2531 SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_COMMON_MOD_OPERATIONS( _nDigits ) ))
2533#define SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_CRT_SOLUTION( _nDigits ) ( \
2534 SYMCRYPT_FDEF_SIZEOF_INT_FROM_DIGITS( _nDigits ) + \
2535 SYMCRYPT_FDEF_SIZEOF_MODELEMENT_FROM_DIGITS( _nDigits ) + \
2536 SYMCRYPT_FDEF_SIZEOF_INT_FROM_DIGITS( 2*_nDigits ) + \
2537 SYMCRYPT_MAX( SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_COMMON_MOD_OPERATIONS( _nDigits ), \
2538 SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_MUL( 2*_nDigits ) ))
2540#define SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_TO_MODULUS( _nDigits ) ( \
2541 SYMCRYPT_MAX( SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_TO_DIVISOR( _nDigits ),\
2542 (2*_nDigits+1) * SYMCRYPT_FDEF_DIGIT_SIZE + SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_DIVMOD( 2*_nDigits + 1, nDigits )) )
2544#define SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_MODINV( _nModDigits ) ( \
2545 4 * SYMCRYPT_FDEF_SIZEOF_MODELEMENT_FROM_DIGITS( _nModDigits ) + \
2546 3 * SYMCRYPT_FDEF_SIZEOF_INT_FROM_DIGITS( _nModDigits ) + \
2547 SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_COMMON_MOD_OPERATIONS( _nModDigits ) )
2549#define SYMCRYPT_FDEF_MAX_WINDOW_MODEXP (6)
2551#define SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_MODEXP( _nModDigits ) ( \
2552 ((1 << SYMCRYPT_FDEF_MAX_WINDOW_MODEXP) + 2) * SYMCRYPT_FDEF_SIZEOF_MODELEMENT_FROM_DIGITS( _nModDigits ) + \
2553 SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_COMMON_MOD_OPERATIONS( _nModDigits ) )
2555#define SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_IS_POTENTIAL_PRIME( _nDigits ) (0)
2557#define SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_MILLER_RABIN( _nDigits ) ( \
2558 SYMCRYPT_FDEF_SIZEOF_MODULUS_FROM_DIGITS(_nDigits) + \
2559 3*SYMCRYPT_FDEF_SIZEOF_MODELEMENT_FROM_DIGITS(_nDigits) + \
2560 SYMCRYPT_FDEF_SIZEOF_INT_FROM_DIGITS(_nDigits) + \
2561 SYMCRYPT_MAX( SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_TO_MODULUS(_nDigits), \
2562 SYMCRYPT_MAX( SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_COMMON_MOD_OPERATIONS(_nDigits), \
2563 SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_MODEXP( _nDigits ) )) )
2565#define SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_IS_PRIME( _nDigits ) ( \
2566 SYMCRYPT_MAX( SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_IS_POTENTIAL_PRIME( _nDigits ), \
2567 SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_MILLER_RABIN( _nDigits ) ))
2569#define SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_PRIME_GEN( _nDigits ) ( \
2570 SYMCRYPT_RSAKEY_MAX_NUMOF_PUBEXPS * SYMCRYPT_FDEF_SIZEOF_DIVISOR_FROM_DIGITS( 1 ) + \
2571 SYMCRYPT_FDEF_SIZEOF_INT_FROM_DIGITS( 1 ) + \
2572 SYMCRYPT_MAX( SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_TO_DIVISOR( 1 ), \
2573 SYMCRYPT_MAX( SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_DIVMOD( _nDigits, 1 ), \
2574 SYMCRYPT_MAX( SYMCRYPT_FDEF_SIZEOF_INT_FROM_DIGITS( _nDigits ), \
2575 SYMCRYPT_MAX( SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_IS_POTENTIAL_PRIME( _nDigits ), \
2576 SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_MILLER_RABIN( _nDigits ) )))))
2586#define SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_MODMULTIEXP( _nModDigits, _nBases, _nBitsExp ) ( \
2587 SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_COMMON_MOD_OPERATIONS( _nModDigits ) + \
2588 ((_nBases)*(1<<SYMCRYPT_FDEF_MAX_WINDOW_MODEXP) + 4)*SYMCRYPT_FDEF_SIZEOF_MODELEMENT_FROM_DIGITS( _nModDigits ) + \
2589 (((_nBases)*(_nBitsExp)*sizeof(UINT32) + SYMCRYPT_ASYM_ALIGN_VALUE - 1) & ~(SYMCRYPT_ASYM_ALIGN_VALUE - 1)) )
2596#define SYMCRYPT_MASK32_SET ((UINT32)-1)
2597#define SYMCRYPT_MASK32_NONZERO( _v ) ((UINT32)(((UINT64)0 - (_v)) >> 32))
2598#define SYMCRYPT_MASK32_ZERO( _v ) (~SYMCRYPT_MASK32_NONZERO( _v ))
2599#define SYMCRYPT_MASK32_EQ( _a, _b ) (~SYMCRYPT_MASK32_NONZERO( (_a) ^ (_b) ))
2600#define SYMCRYPT_MASK32_LT( _a, _b ) ((UINT32)( ((UINT64)(_a) - (_b)) >> 32 ))
2611#define SYMCRYPT_INTERNAL_SIZEOF_INT_FROM_BITS( _bitsize ) SYMCRYPT_FDEF_SIZEOF_INT_FROM_BITS( _bitsize )
2612#define SYMCRYPT_INTERNAL_SIZEOF_DIVISOR_FROM_BITS( _bitsize ) SYMCRYPT_FDEF_SIZEOF_DIVISOR_FROM_BITS( _bitsize )
2613#define SYMCRYPT_INTERNAL_SIZEOF_MODULUS_FROM_BITS( _bitsize ) SYMCRYPT_FDEF_SIZEOF_MODULUS_FROM_BITS( _bitsize )
2614#define SYMCRYPT_INTERNAL_SIZEOF_MODELEMENT_FROM_BITS( _bitsize ) SYMCRYPT_FDEF_SIZEOF_MODELEMENT_FROM_BITS( _bitsize )
2616#define SYMCRYPT_INTERNAL_SIZEOF_RSAKEY_FROM_PARAMS( modBits, nPrimes, nPubExps ) SYMCRYPT_FDEF_SIZEOF_RSAKEY_FROM_PARAMS( modBits, nPrimes, nPubExps )
2619#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_INT_TO_DIVISOR( _nDigits ) SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_TO_DIVISOR( _nDigits )
2620#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_INT_MUL( _nDigits ) SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_MUL( _nDigits )
2621#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_INT_DIVMOD( _nSrcDigits, _nDivisorDigits ) SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_DIVMOD( _nSrcDigits, _nDivisorDigits )
2622#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_EXTENDED_GCD( _nDigits ) SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_EXTENDED_GCD( _nDigits )
2623#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_COMMON_MOD_OPERATIONS( _nModDigits ) SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_COMMON_MOD_OPERATIONS( _nModDigits )
2624#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_CRT_GENERATION( _nDigits ) SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_CRT_GENERATION( _nDigits )
2625#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_CRT_SOLUTION( _nDigits ) SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_CRT_SOLUTION( _nDigits )
2626#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_INT_TO_MODULUS( _nDigits ) SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_TO_MODULUS( _nDigits )
2627#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_MODINV( _nModDigits ) SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_MODINV( _nModDigits )
2628#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_MODEXP( _nModDigits ) SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_MODEXP( _nModDigits )
2629#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_INT_IS_PRIME( _nDigits ) SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_IS_PRIME( _nDigits )
2630#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_INT_PRIME_GEN( _nDigits ) SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_INT_PRIME_GEN( _nDigits )
2632#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_MODMULTIEXP( _nModDigits, _nBases, _nBitsExp ) SYMCRYPT_FDEF_SCRATCH_BYTES_FOR_MODMULTIEXP( _nModDigits, _nBases, _nBitsExp )
2645struct _SYMCRYPT_MLDSAKEY;
2668#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_RSA_OAEP( _hashAlgorithm, _nBytesOAEP ) ( SymCryptHashStateSize( _hashAlgorithm ) + \
2669 SymCryptHashResultSize( _hashAlgorithm ) + \
2670 2*(_nBytesOAEP - 1) )
2672#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_RSA_PKCS1( _nBytesPKCS1 ) ( _nBytesPKCS1 )
2674#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_RSA_PSS( _hashAlgorithm, _nBytesMessage, _nBytesPSS ) ( SymCryptHashStateSize( _hashAlgorithm ) + \
2676 3*(_nBytesPSS) + 5 )
2682#define SYMCRYPT_FDEF_SIZEOF_RSAKEY_FROM_PARAMS( modBits, nPrimes, nPubExps ) \
2683 sizeof( SYMCRYPT_RSAKEY ) + \
2684 (nPrimes + 1) * SYMCRYPT_FDEF_SIZEOF_MODULUS_FROM_BITS( modBits ) + \
2685 nPrimes * SYMCRYPT_FDEF_SIZEOF_MODELEMENT_FROM_BITS( modBits ) + \
2686 (nPrimes + 1) * nPubExps * SYMCRYPT_FDEF_SIZEOF_INT_FROM_BITS( modBits )
2691#define SYMCRYPT_RSAKEY_MAX_NUMOF_PRIMES (2)
2692#define SYMCRYPT_RSAKEY_MAX_NUMOF_PUBEXPS (1)
2694#define SYMCRYPT_RSAKEY_MIN_BITSIZE_MODULUS (256)
2695#define SYMCRYPT_RSAKEY_MAX_BITSIZE_MODULUS (1 << 16)
2700#define SYMCRYPT_RSAKEY_FIPS_MIN_BITSIZE_MODULUS (1024)
2702#define SYMCRYPT_RSAKEY_MIN_BITSIZE_PRIME (128)
2703#define SYMCRYPT_RSAKEY_MAX_BITSIZE_PRIME (SYMCRYPT_RSAKEY_MAX_BITSIZE_MODULUS / 2)
2803#define SYMCRYPT_DLGROUP_MIN_BITSIZE_P (32)
2804#define SYMCRYPT_DLGROUP_MIN_BITSIZE_Q (31)
2891#define SYMCRYPT_ECPOINT_FORMAT_MAX_LENGTH 4
2905#define SYMCRYPT_INTERNAL_NUMOF_COORDINATES( _eCoordinates ) ((_eCoordinates) & 0xf)
2914#define SYMCRYPT_ECURVE_SW_DEF_WINDOW (6)
2916#define SYMCRYPT_ECURVE_SW_MAX_NPRECOMP_POINTS (64)
2930#define SYMCRYPT_ECURVE_MIN_BITSIZE_FMOD (32)
2931#define SYMCRYPT_ECURVE_MIN_BITSIZE_GORD (32)
2932#define SYMCRYPT_ECURVE_MAX_COFACTOR_POWER (8)
2936#define SYMCRYPT_INTERNAL_ECURVE_VERSION_LATEST 1
3009#define SYMCRYPT_INTERNAL_ECPOINT_COORDINATE_OFFSET( _pCurve, _ord ) ( sizeof(SYMCRYPT_ECPOINT) + (_ord) * (_pCurve)->cbModElement )
3010#define SYMCRYPT_INTERNAL_ECPOINT_COORDINATE( _ord, _pCurve, _pEcpoint ) (PSYMCRYPT_MODELEMENT)( (PBYTE)(_pEcpoint) + SYMCRYPT_INTERNAL_ECPOINT_COORDINATE_OFFSET( (_pCurve), _ord ) )
3013#define SYMCRYPT_CURVE_IS_SHORT_WEIERSTRASS_TYPE( _pCurve ) \
3014 ( _pCurve->type == SYMCRYPT_INTERNAL_ECURVE_TYPE_SHORT_WEIERSTRASS || \
3015 _pCurve->type == SYMCRYPT_INTERNAL_ECURVE_TYPE_SHORT_WEIERSTRASS_AM3 )
3017#define SYMCRYPT_CURVE_IS_TWISTED_EDWARDS_TYPE( _pCurve ) \
3018 ( _pCurve->type == SYMCRYPT_INTERNAL_ECURVE_TYPE_TWISTED_EDWARDS )
3020#define SYMCRYPT_CURVE_IS_MONTGOMERY_TYPE( _pCurve ) \
3021 ( _pCurve->type == SYMCRYPT_INTERNAL_ECURVE_TYPE_MONTGOMERY )
3034#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_COMMON_ECURVE_OPERATIONS( _pCurve ) ( (_pCurve)->cbScratchCommon)
3035#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_SCALAR_ECURVE_OPERATIONS( _pCurve, _nPoints ) ( (_pCurve)->cbScratchScalar + \
3036 (_nPoints) * (_pCurve)->cbScratchScalarMulti )
3037#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_GETSET_VALUE_ECURVE_OPERATIONS( _pCurve ) ( (_pCurve)->cbScratchGetSetValue)
3038#define SYMCRYPT_INTERNAL_SCRATCH_BYTES_FOR_ECKEY_ECURVE_OPERATIONS( _pCurve ) ( (_pCurve)->cbScratchEckey)
3167#define SYMCRYPT_EXTERN_C extern "C" {
3168#define SYMCRYPT_EXTERN_C_END }
3170#define SYMCRYPT_EXTERN_C
3171#define SYMCRYPT_EXTERN_C_END
3179#if SYMCRYPT_CPU_X86 | SYMCRYPT_CPU_AMD64
3180typedef struct _SYMCRYPT_EXTENDED_SAVE_DATA SYMCRYPT_EXTENDED_SAVE_DATA, *PSYMCRYPT_EXTENDED_SAVE_DATA;
3182#define SYMCRYPT_ENVIRONMENT_DEFS_SAVEYMM( envName ) \
3183 SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptSaveYmmEnv##envName( _Out_ PSYMCRYPT_EXTENDED_SAVE_DATA pSaveArea ); \
3184 SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptSaveYmm( _Out_ PSYMCRYPT_EXTENDED_SAVE_DATA pSaveArea ) \
3185 { return SymCryptSaveYmmEnv##envName( pSaveArea ); } \
3187 VOID SYMCRYPT_CALL SymCryptRestoreYmmEnv##envName( _Inout_ PSYMCRYPT_EXTENDED_SAVE_DATA pSaveArea ); \
3188 VOID SYMCRYPT_CALL SymCryptRestoreYmm( _Inout_ PSYMCRYPT_EXTENDED_SAVE_DATA pSaveArea ) \
3189 { SymCryptRestoreYmmEnv##envName( pSaveArea ); } \
3191#define SYMCRYPT_ENVIRONMENT_DEFS_SAVEXMM( envName ) \
3192 SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptSaveXmmEnv##envName( _Out_ PSYMCRYPT_EXTENDED_SAVE_DATA pSaveArea ); \
3193 SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptSaveXmm( _Out_ PSYMCRYPT_EXTENDED_SAVE_DATA pSaveArea ) \
3194 { return SymCryptSaveXmmEnv##envName( pSaveArea ); } \
3196 VOID SYMCRYPT_CALL SymCryptRestoreXmmEnv##envName( _Inout_ PSYMCRYPT_EXTENDED_SAVE_DATA pSaveArea ); \
3197 VOID SYMCRYPT_CALL SymCryptRestoreXmm( _Inout_ PSYMCRYPT_EXTENDED_SAVE_DATA pSaveArea ) \
3198 { SymCryptRestoreXmmEnv##envName( pSaveArea ); } \
3203#define SYMCRYPT_ENVIRONMENT_DEFS_SAVEYMM( envName )
3204#define SYMCRYPT_ENVIRONMENT_DEFS_SAVEXMM( envName )
3210#if SYMCRYPT_CPU_AMD64 | SYMCRYPT_CPU_X86
3211#define SYMCRYPT_ENVIRONMENT_FORWARD_CPUIDEX( envName ) \
3212 VOID SYMCRYPT_CALL SymCryptCpuidExFuncEnv##envName( int cpuInfo[4], int function_id, int subfunction_id ); \
3213 VOID SYMCRYPT_CALL SymCryptCpuidExFunc( int cpuInfo[4], int function_id, int subfunction_id ) \
3214 { SymCryptCpuidExFuncEnv##envName( cpuInfo, function_id, subfunction_id ); }
3216#define SYMCRYPT_ENVIRONMENT_FORWARD_CPUIDEX( envName )
3219#define SYMCRYPT_ENVIRONMENT_DEFS( envName ) \
3221 VOID SYMCRYPT_CALL SymCryptInitEnv##envName( UINT32 version ); \
3222 VOID SYMCRYPT_CALL SymCryptInit(void) \
3223 { SymCryptInitEnv##envName( SYMCRYPT_API_VERSION ); } \
3225 _Analysis_noreturn_ VOID SYMCRYPT_CALL SymCryptFatalEnv##envName( UINT32 fatalCode ); \
3226 _Analysis_noreturn_ VOID SYMCRYPT_CALL SymCryptFatal( UINT32 fatalCode ) \
3227 { SymCryptFatalEnv##envName( fatalCode ); } \
3228 SYMCRYPT_CPU_FEATURES SYMCRYPT_CALL SymCryptCpuFeaturesNeverPresentEnv##envName(void); \
3229 SYMCRYPT_CPU_FEATURES SYMCRYPT_CALL SymCryptCpuFeaturesNeverPresent(void) \
3230 { return SymCryptCpuFeaturesNeverPresentEnv##envName(); } \
3232 SYMCRYPT_ENVIRONMENT_DEFS_SAVEXMM( envName ) \
3233 SYMCRYPT_ENVIRONMENT_DEFS_SAVEYMM( envName ) \
3235 VOID SYMCRYPT_CALL SymCryptTestInjectErrorEnv##envName( PBYTE pbBuf, SIZE_T cbBuf ); \
3236 VOID SYMCRYPT_CALL SymCryptInjectError( PBYTE pbBuf, SIZE_T cbBuf ) \
3237 { SymCryptTestInjectErrorEnv##envName( pbBuf, cbBuf ); } \
3238 SYMCRYPT_ENVIRONMENT_FORWARD_CPUIDEX( envName ) \
3239SYMCRYPT_EXTERN_C_END
3246#define SYMCRYPT_ENVIRONMENT_GENERIC SYMCRYPT_ENVIRONMENT_DEFS( Generic )
3248#if defined(EFI) | defined(PCAT) | defined(DIRECT)
3249#define SYMCRYPT_ENVIRONMENT_WINDOWS_BOOTLIBRARY SYMCRYPT_ENVIRONMENT_DEFS( WindowsBootlibrary )
3256#define SYMCRYPT_ENVIRONMENT_WINDOWS_KERNELDEBUGGER SYMCRYPT_ENVIRONMENT_DEFS( WindowsKernelDebugger )
3260#define SYMCRYPT_ENVIRONMENT_WINDOWS_KERNELMODE_LEGACY SYMCRYPT_ENVIRONMENT_GENERIC
3263#if (NTDDI_VERSION >= NTDDI_WIN7)
3264#define SYMCRYPT_ENVIRONMENT_WINDOWS_KERNELMODE_WIN7_N_LATER SYMCRYPT_ENVIRONMENT_DEFS( WindowsKernelmodeWin7nLater )
3267#if (NTDDI_VERSION >= NTDDI_WINBLUE)
3268#define SYMCRYPT_ENVIRONMENT_WINDOWS_KERNELMODE_WIN8_1_N_LATER SYMCRYPT_ENVIRONMENT_DEFS( WindowsKernelmodeWin8_1nLater )
3271#define SYMCRYPT_ENVIRONMENT_WINDOWS_KERNELMODE_LATEST SYMCRYPT_ENVIRONMENT_WINDOWS_KERNELMODE_WIN8_1_N_LATER
3275#define SYMCRYPT_ENVIRONMENT_WINDOWS_USERMODE_LEGACY SYMCRYPT_ENVIRONMENT_GENERIC
3277#if (NTDDI_VERSION >= NTDDI_WIN7)
3278#define SYMCRYPT_ENVIRONMENT_WINDOWS_USERMODE_WIN7_N_LATER SYMCRYPT_ENVIRONMENT_DEFS( WindowsUsermodeWin7nLater )
3281#if (NTDDI_VERSION >= NTDDI_WINBLUE)
3282#define SYMCRYPT_ENVIRONMENT_WINDOWS_USERMODE_WIN8_1_N_LATER SYMCRYPT_ENVIRONMENT_DEFS( WindowsUsermodeWin8_1nLater )
3285#if (NTDDI_VERSION >= NTDDI_WIN10)
3286#define SYMCRYPT_ENVIRONMENT_WINDOWS_USERMODE_WIN10_SGX SYMCRYPT_ENVIRONMENT_DEFS( Win10Sgx )
3290#define SYMCRYPT_ENVIRONMENT_WINDOWS_USERMODE_LATEST SYMCRYPT_ENVIRONMENT_WINDOWS_USERMODE_WIN8_1_N_LATER
3293#define SYMCRYPT_ENVIRONMENT_POSIX_USERMODE SYMCRYPT_ENVIRONMENT_DEFS( PosixUsermode )
3296#define SYMCRYPT_ENVIRONMENT_LINUX_USERMODE SYMCRYPT_ENVIRONMENT_POSIX_USERMODE
3299#define SYMCRYPT_ENVIRONMENT_OPTEE_TA SYMCRYPT_ENVIRONMENT_DEFS( OpteeTa )
3312#if SYMCRYPT_CPU_X86 | SYMCRYPT_CPU_AMD64 | SYMCRYPT_CPU_ARM | SYMCRYPT_CPU_ARM64
3321#if SYMCRYPT_CPU_X86 | SYMCRYPT_CPU_ARM
3322#define SYMCRYPT_WIPE_FUNCTION_LIMIT (32)
3323#elif SYMCRYPT_CPU_AMD64 | SYMCRYPT_CPU_ARM64
3324#define SYMCRYPT_WIPE_FUNCTION_LIMIT (64)
3333#pragma prefast(push)
3334#pragma prefast( disable: 26001 )
3339#pragma prefast( suppress: 6101, "Logic why this properly initializes the pbData buffer is too complicated for prefast" )
3344 if (
cbData > SYMCRYPT_WIPE_FUNCTION_LIMIT)
3387#if SYMCRYPT_WIPE_FUNCTION_LIMIT >= 64
3418#define SYMCRYPT_FIPS_ASSERT(x) { if(!(x)){ SymCryptFatal('FIPS'); } }
3468#define SYMCRYPT_SELFTEST_KEY_DSA (0x1)
3469#define SYMCRYPT_PCT_DSA SYMCRYPT_SELFTEST_KEY_DSA
3473#define SYMCRYPT_SELFTEST_KEY_ECDSA (0x1)
3474#define SYMCRYPT_PCT_ECDSA SYMCRYPT_SELFTEST_KEY_ECDSA
3478#define SYMCRYPT_SELFTEST_KEY_RSA_SIGN (0x1)
3479#define SYMCRYPT_PCT_RSA_SIGN SYMCRYPT_SELFTEST_KEY_RSA_SIGN
3523#define SYMCRYPT_SI_CREATE_ID(type, index) (((UINT64)(type) << 56) + (1ULL << (index)))
3525#define SYMCRYPT_SI_INTBITS ((64 - 8) / 2)
3526#define SYMCRYPT_SI_INTMASK ((1ULL << SYMCRYPT_SI_INTBITS) - 1)
3527#define SYMCRYPT_SI_INTPACK(High, Low) (((((UINT64)High) & SYMCRYPT_SI_INTMASK) << SYMCRYPT_SI_INTBITS) | (((UINT64)Low) & SYMCRYPT_SI_INTMASK))
3528#define SYMCRYPT_SI_INTUNPACKLO(X) ((X) & SYMCRYPT_SI_INTMASK)
3529#define SYMCRYPT_SI_INTUNPACKHI(X) (((X) >> SYMCRYPT_SI_INTBITS) & SYMCRYPT_SI_INTMASK)
3531#define SYMCRYPT_SI_INTRANGE(Low, High) (((UINT64)SYMCRYPT_SI_TYPE_INTRANGE << 56) | SYMCRYPT_SI_INTPACK(High, Low))
3532#define SYMCRYPT_SI_INTPAIR(X, Y) (((UINT64)SYMCRYPT_SI_TYPE_INTPAIR << 56) | SYMCRYPT_SI_INTPACK(Y, X))
3533#define SYMCRYPT_SI_SIZERANGE(Low, High) (((UINT64)SYMCRYPT_SI_TYPE_SIZERANGE << 56) | SYMCRYPT_SI_INTPACK(High, Low))
3535#define SYMCRYPT_SI_CHECK_INT(L) C_ASSERT(L <= SYMCRYPT_SI_INTMASK)
3537#define SYMCRYPT_SI_KEYBITS(L) SYMCRYPT_SI_SIZERANGE(L, L)
3538#define SYMCRYPT_SI_MODULUS(L) SYMCRYPT_SI_SIZERANGE(L, L)
3539#define SYMCRYPT_SI_DSAPARAMS(N, L) SYMCRYPT_SI_INTPAIR(N, L)
3543#define SYMCRYPT_SI_SVC_ENCRYPTION 0x00000001
3544#define SYMCRYPT_SI_SVC_DECRYPTION 0x00000002
3545#define SYMCRYPT_SI_SVC_HASHING 0x00000004
3546#define SYMCRYPT_SI_SVC_MESSAGE_AUTHENTICATION 0x00000008
3547#define SYMCRYPT_SI_SVC_KEY_DERIVATION 0x00000010
3548#define SYMCRYPT_SI_SVC_ASYMMETRIC_KEY_GENERATION 0x00000020
3549#define SYMCRYPT_SI_SVC_ASYMMETRIC_KEY_VERIFICATION 0x00000080
3550#define SYMCRYPT_SI_SVC_RANDOM_NUMBER_GENERATION 0x00000400
3551#define SYMCRYPT_SI_SVC_SECRET_AGREEMENT 0x00000800
3552#define SYMCRYPT_SI_SVC_SIGNATURE_GENERATION 0x00001000
3553#define SYMCRYPT_SI_SVC_SIGNATURE_VERIFICATION 0x00002000
3554#define SYMCRYPT_SI_SVC_KEY_ENCAPSULATION 0x00004000
3555#define SYMCRYPT_SI_SVC_KEY_DECAPSULATION 0x00008000
3558#define SYMCRYPT_SI_AES_CBC SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 0)
3559#define SYMCRYPT_SI_AES_CCM SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 1)
3560#define SYMCRYPT_SI_AES_CFB128 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 2)
3561#define SYMCRYPT_SI_AES_CFB8 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 3)
3562#define SYMCRYPT_SI_AES_CTR SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 4)
3563#define SYMCRYPT_SI_AES_ECB SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 5)
3564#define SYMCRYPT_SI_AES_GCM SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 6)
3565#define SYMCRYPT_SI_AES_XTS SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 7)
3566#define SYMCRYPT_SI_RC2 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 8)
3567#define SYMCRYPT_SI_RC4 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 9)
3568#define SYMCRYPT_SI_CHACHA SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 10)
3569#define SYMCRYPT_SI_DES SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 11)
3570#define SYMCRYPT_SI_TRIPLEDES SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 12)
3571#define SYMCRYPT_SI_CHACHA20 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 13)
3572#define SYMCRYPT_SI_CHACHA20_POLY1305 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 14)
3573#define SYMCRYPT_SI_AES_KW SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 15)
3574#define SYMCRYPT_SI_AES_KWP SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_CIPHER, 16)
3577#define SYMCRYPT_SI_MD2 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 0)
3578#define SYMCRYPT_SI_MD4 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 1)
3579#define SYMCRYPT_SI_MD5 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 2)
3580#define SYMCRYPT_SI_SHA1 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 3)
3581#define SYMCRYPT_SI_SHA2_224 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 4)
3582#define SYMCRYPT_SI_SHA2_256 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 5)
3583#define SYMCRYPT_SI_SHA2_384 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 6)
3584#define SYMCRYPT_SI_SHA2_512 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 7)
3585#define SYMCRYPT_SI_SHA2_512_224 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 8)
3586#define SYMCRYPT_SI_SHA2_512_256 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 9)
3587#define SYMCRYPT_SI_SHA3_224 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 10)
3588#define SYMCRYPT_SI_SHA3_256 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 11)
3589#define SYMCRYPT_SI_SHA3_384 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 12)
3590#define SYMCRYPT_SI_SHA3_512 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 13)
3591#define SYMCRYPT_SI_SHAKE128 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 14)
3592#define SYMCRYPT_SI_SHAKE256 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 15)
3593#define SYMCRYPT_SI_CSHAKE128 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 16)
3594#define SYMCRYPT_SI_CSHAKE256 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 17)
3595#define SYMCRYPT_SI_MARVIN32 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_HASH, 18)
3598#define SYMCRYPT_SI_HMAC_MD2 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 0)
3599#define SYMCRYPT_SI_HMAC_MD4 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 1)
3600#define SYMCRYPT_SI_HMAC_MD5 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 2)
3601#define SYMCRYPT_SI_HMAC_SHA1 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 3)
3602#define SYMCRYPT_SI_HMAC_SHA2_224 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 4)
3603#define SYMCRYPT_SI_HMAC_SHA2_256 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 5)
3604#define SYMCRYPT_SI_HMAC_SHA2_384 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 6)
3605#define SYMCRYPT_SI_HMAC_SHA2_512 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 7)
3606#define SYMCRYPT_SI_HMAC_SHA2_512_224 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 8)
3607#define SYMCRYPT_SI_HMAC_SHA2_512_256 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 9)
3608#define SYMCRYPT_SI_HMAC_SHA3_224 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 10)
3609#define SYMCRYPT_SI_HMAC_SHA3_256 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 11)
3610#define SYMCRYPT_SI_HMAC_SHA3_384 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 12)
3611#define SYMCRYPT_SI_HMAC_SHA3_512 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 13)
3612#define SYMCRYPT_SI_KMAC128 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 14)
3613#define SYMCRYPT_SI_KMAC256 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 15)
3614#define SYMCRYPT_SI_AES_GMAC SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 16)
3615#define SYMCRYPT_SI_AES_CMAC SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 17)
3616#define SYMCRYPT_SI_AES_CBCMAC SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 18)
3617#define SYMCRYPT_SI_POLY1305 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_MAC, 19)
3620#define SYMCRYPT_SI_HKDF SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KDF, 0)
3621#define SYMCRYPT_SI_PBKDF SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KDF, 1)
3622#define SYMCRYPT_SI_KDA_ONESTEP SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KDF, 2)
3623#define SYMCRYPT_SI_KDF_IKEV1 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KDF, 3)
3624#define SYMCRYPT_SI_KDF_IKEV2 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KDF, 4)
3625#define SYMCRYPT_SI_KDF_SP800_108_CTR SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KDF, 5)
3626#define SYMCRYPT_SI_KDF_SRTP SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KDF, 6)
3627#define SYMCRYPT_SI_KDF_SSH SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KDF, 7)
3628#define SYMCRYPT_SI_KDF_TLS SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KDF, 8)
3629#define SYMCRYPT_SI_KDF_TLS_V12 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KDF, 9)
3632#define SYMCRYPT_SI_CTR_DRBG_AES256 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_DRBG, 0)
3635#define SYMCRYPT_SI_SAFE_PRIME_KEYGEN SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 0)
3636#define SYMCRYPT_SI_DSA_KEYGEN SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 1)
3637#define SYMCRYPT_SI_DSA_PQGGEN SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 2)
3638#define SYMCRYPT_SI_DSA_PQGVER SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 3)
3639#define SYMCRYPT_SI_DSA_SIGVER SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 4)
3641#define SYMCRYPT_SI_ECDSA_KEYGEN SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 5)
3642#define SYMCRYPT_SI_ECDSA_KEYVER SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 6)
3643#define SYMCRYPT_SI_ECDSA_SIGGEN SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 7)
3644#define SYMCRYPT_SI_ECDSA_SIGVER SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 8)
3645#define SYMCRYPT_SI_ECDSA_SIGGEN_COMP SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 9)
3647#define SYMCRYPT_SI_RSA_KEYGEN SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 10)
3648#define SYMCRYPT_SI_RSA_DEC_PRIM SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 12)
3649#define SYMCRYPT_SI_RSA_SIG_PRIM SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 13)
3650#define SYMCRYPT_SI_RSA_SIGGEN_PKCS15 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 14)
3651#define SYMCRYPT_SI_RSA_SIGGEN_PKCSPSS SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 15)
3652#define SYMCRYPT_SI_RSA_SIGVER_PKCS15 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 16)
3653#define SYMCRYPT_SI_RSA_SIGVER_PKCSPSS SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 17)
3655#define SYMCRYPT_SI_KAS_ECC SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 18)
3656#define SYMCRYPT_SI_KAS_ECC_SSC SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 19)
3657#define SYMCRYPT_SI_KAS_FFC SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 20)
3658#define SYMCRYPT_SI_KAS_FFC_SSC SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 21)
3666#define SYMCRYPT_SI_MLDSA_KEYGEN SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 27)
3667#define SYMCRYPT_SI_MLDSA_SIGGEN SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 28)
3668#define SYMCRYPT_SI_MLDSA_SIGVER SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 29)
3669#define SYMCRYPT_SI_LMS_KEYGEN SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 30)
3670#define SYMCRYPT_SI_LMS_SIGGEN SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 31)
3671#define SYMCRYPT_SI_LMS_SIGVER SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 32)
3672#define SYMCRYPT_SI_XMSS_KEYGEN SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 33)
3673#define SYMCRYPT_SI_XMSS_SIGGEN SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 34)
3674#define SYMCRYPT_SI_XMSS_SIGVER SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 35)
3675#define SYMCRYPT_SI_XMSS_MT_KEYGEN SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 36)
3676#define SYMCRYPT_SI_XMSS_MT_SIGGEN SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 37)
3677#define SYMCRYPT_SI_XMSS_MT_SIGVER SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ASYM_ALG, 38)
3679#define SYMCRYPT_SI_MLKEM_KEYGEN SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KEM, 0)
3680#define SYMCRYPT_SI_MLKEM_ENCAPS SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KEM, 1)
3681#define SYMCRYPT_SI_MLKEM_DECAPS SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KEM, 2)
3685#define SYMCRYPT_SI_ECURVE_NISTP192 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ECURVE, 0)
3686#define SYMCRYPT_SI_ECURVE_NISTP224 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ECURVE, 1)
3687#define SYMCRYPT_SI_ECURVE_NISTP256 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ECURVE, 2)
3688#define SYMCRYPT_SI_ECURVE_NISTP384 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ECURVE, 3)
3689#define SYMCRYPT_SI_ECURVE_NISTP521 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ECURVE, 4)
3690#define SYMCRYPT_SI_ECURVE_NUMSP256T1 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ECURVE, 5)
3691#define SYMCRYPT_SI_ECURVE_NUMSP384T1 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ECURVE, 6)
3692#define SYMCRYPT_SI_ECURVE_NUMSP512T1 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ECURVE, 7)
3693#define SYMCRYPT_SI_ECURVE_CURVE25519 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_ECURVE, 8)
3696#define SYMCRYPT_SI_SPG_FFDHE_2048 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_SAFE_PRIME_GROUP, 0)
3697#define SYMCRYPT_SI_SPG_FFDHE_3072 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_SAFE_PRIME_GROUP, 1)
3698#define SYMCRYPT_SI_SPG_FFDHE_4096 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_SAFE_PRIME_GROUP, 2)
3699#define SYMCRYPT_SI_SPG_FFDHE_6144 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_SAFE_PRIME_GROUP, 3)
3700#define SYMCRYPT_SI_SPG_FFDHE_8192 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_SAFE_PRIME_GROUP, 4)
3701#define SYMCRYPT_SI_SPG_MODP_2048 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_SAFE_PRIME_GROUP, 5)
3702#define SYMCRYPT_SI_SPG_MODP_3072 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_SAFE_PRIME_GROUP, 6)
3703#define SYMCRYPT_SI_SPG_MODP_4096 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_SAFE_PRIME_GROUP, 7)
3704#define SYMCRYPT_SI_SPG_MODP_6144 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_SAFE_PRIME_GROUP, 8)
3705#define SYMCRYPT_SI_SPG_MODP_8192 SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_SAFE_PRIME_GROUP, 9)
3708#define SYMCRYPT_SI_SCHEME_EPHEM_UNIFIED SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KAS_SCHEME, 0)
3709#define SYMCRYPT_SI_SCHEME_DH_EPHEM SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KAS_SCHEME, 1)
3710#define SYMCRYPT_SI_SCHEME_DH_ONEFLOW SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KAS_SCHEME, 2)
3711#define SYMCRYPT_SI_SCHEME_DH_STATIC SYMCRYPT_SI_CREATE_ID(SYMCRYPT_SI_TYPE_KAS_SCHEME, 3)
COMPILER_DEPENDENT_UINT64 UINT64
static const WCHAR version[]
GLdouble GLdouble GLdouble r
GLenum GLuint GLenum GLsizei const GLchar * buf
GLint GLenum GLboolean normalized
GLuint64EXT GLuint GLuint GLenum GLenum GLuint GLuint GLenum GLuint GLuint key1
GLboolean GLboolean GLboolean GLboolean a
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint factor
Windows helper functions for integer overflow prevention.
#define _Inout_updates_(s)
#define _Field_range_(l, h)
#define _Out_writes_bytes_(s)
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_COMPOSITE_MLKEMKEY
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_LMS_KEY
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_XMSS_KEY
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_MLKEMKEY
static const BYTE pbResult[]
PSYMCRYPT_BLOCKCIPHER_CRYPT_ECB ecbDecryptFunc
PSYMCRYPT_BLOCKCIPHER_AEADPART_MODE gcmDecryptPartFunc
PSYMCRYPT_BLOCKCIPHER_CRYPT_MODE cbcEncryptFunc
PSYMCRYPT_BLOCKCIPHER_CRYPT decryptFunc
PSYMCRYPT_BLOCKCIPHER_CRYPT_MODE ctrMsb64Func
PSYMCRYPT_BLOCKCIPHER_CRYPT_MODE cbcDecryptFunc
PSYMCRYPT_BLOCKCIPHER_CRYPT encryptFunc
PSYMCRYPT_BLOCKCIPHER_AEADPART_MODE gcmEncryptPartFunc
PSYMCRYPT_BLOCKCIPHER_CRYPT_ECB ecbEncryptFunc
PSYMCRYPT_BLOCKCIPHER_EXPAND_KEY expandKeyFunc
_Field_range_(1, SYMCRYPT_MAX_BLOCK_SIZE) SIZE_T blockSize
PSYMCRYPT_BLOCKCIPHER_MAC_MODE cbcMacFunc
SYMCRYPT_MAC_EXPANDED_KEY macKey
const PCSYMCRYPT_HASH * ppHashAlgorithm
PSYMCRYPT_MAC_EXPAND_KEY expandKeyFunc
PSYMCRYPT_MAC_RESULT resultFunc
PSYMCRYPT_MAC_APPEND appendFunc
PSYMCRYPT_MAC_INIT initFunc
UINT32 outerChainingStateOffset
_Field_size_(cbOID) PCBYTE pbOID
_Field_size_(cbBuffer) PBYTE pbBuffer
SYMCRYPT_HASH_OPERATION_TYPE hashOperation
PSYMCRYPT_PARALLEL_HASH_OPERATION next
SYMCRYPT_MAC_EXPANDED_KEY macKey
SYMCRYPT_MAC_EXPANDED_KEY macKey
SYMCRYPT_AES_EXPANDED_KEY aesExpandedKey
SYMCRYPT_HASH_STATE hashState
PCSYMCRYPT_HASH pHashFunc
SYMCRYPT_MAC_EXPANDED_KEY macKey
SYMCRYPT_HMAC_SHA1_EXPANDED_KEY macSha1Key
SYMCRYPT_HMAC_MD5_EXPANDED_KEY macMd5Key
SYMCRYPT_MAC_EXPANDED_KEY macKey
PSYMCRYPT_TRIALDIVISION_PRIME pPrimeList
PSYMCRYPT_TRIALDIVISION_GROUP pGroupList
enum _SYMCRYPT_DLGROUP_FIPS SYMCRYPT_DLGROUP_FIPS
@ SYMCRYPT_ECURVE_TYPE_TWISTED_EDWARDS
@ SYMCRYPT_ECURVE_TYPE_MONTGOMERY
@ SYMCRYPT_ECURVE_TYPE_SHORT_WEIERSTRASS
const SYMCRYPT_SHA512_224_STATE * PCSYMCRYPT_SHA512_224_STATE
union _SYMCRYPT_MAC_STATE * PSYMCRYPT_MAC_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_GHASH_EXPANDED_KEY
* PSYMCRYPT_SHA512_CHAINING_STATE
struct _SYMCRYPT_HKDF_EXPANDED_KEY SYMCRYPT_HKDF_EXPANDED_KEY
const SYMCRYPT_BLOCKCIPHER * PCSYMCRYPT_BLOCKCIPHER
PSYMCRYPT_INT piPrivExps[SYMCRYPT_RSAKEY_MAX_NUMOF_PUBEXPS]
* PSYMCRYPT_SHA512_256_STATE
struct _SYMCRYPT_XMSS_KEY SYMCRYPT_XMSS_KEY
struct _SYMCRYPT_MLKEMKEY SYMCRYPT_MLKEMKEY
const SYMCRYPT_KECCAK_STATE * PCSYMCRYPT_KECCAK_STATE
const SYMCRYPT_XMSS_PARAMS * PCSYMCRYPT_XMSS_PARAMS
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_SHA512_EXPANDED_KEY
PSYMCRYPT_HASH_STATE_COPY_FUNC stateCopyFunc
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_SHA512_224_EXPANDED_KEY
PCSYMCRYPT_DLGROUP pDlgroup
SYMCRYPT_ALIGN BYTE counterBlock[SYMCRYPT_CCM_BLOCK_SIZE]
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHA1_STATE
_SYMCRYPT_SELFTEST_ALGORITHM
@ SYMCRYPT_SELFTEST_ALGORITHM_DSA
@ SYMCRYPT_SELFTEST_ALGORITHM_MLKEM
@ SYMCRYPT_SELFTEST_ALGORITHM_DH
@ SYMCRYPT_SELFTEST_ALGORITHM_LMS
@ SYMCRYPT_SELFTEST_ALGORITHM_RSA
@ SYMCRYPT_SELFTEST_ALGORITHM_NONE
@ SYMCRYPT_SELFTEST_ALGORITHM_XMSS
@ SYMCRYPT_SELFTEST_ALGORITHM_ECDH
@ SYMCRYPT_SELFTEST_ALGORITHM_STARTUP
@ SYMCRYPT_SELFTEST_ALGORITHM_ECDSA
@ SYMCRYPT_SELFTEST_ALGORITHM_MLDSA
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_SHA1_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA384_EXPANDED_KEY
PSYMCRYPT_INT piCrtPrivExps[SYMCRYPT_RSAKEY_MAX_NUMOF_PUBEXPS *SYMCRYPT_RSAKEY_MAX_NUMOF_PRIMES]
struct _SYMCRYPT_OID SYMCRYPT_OID
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_SHA224_EXPANDED_KEY
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_COMPOSITE_MLKEMKEY
enum _SYMCRYPT_SELFTEST_ALGORITHM SYMCRYPT_SELFTEST_ALGORITHM
const SYMCRYPT_RC2_EXPANDED_KEY * PCSYMCRYPT_RC2_EXPANDED_KEY
* PSYMCRYPT_DESX_EXPANDED_KEY
const SYMCRYPT_HMAC_EXPANDED_KEY * PCSYMCRYPT_HMAC_EXPANDED_KEY
SYMCRYPT_MAGIC_FIELD SYMCRYPT_SHA3_384_STATE
UINT64 au64PubExp[SYMCRYPT_RSAKEY_MAX_NUMOF_PUBEXPS]
PSYMCRYPT_PARALLEL_HASH_RESULT_FUNC parResult2Func
struct _SYMCRYPT_COMPOSITE_MLKEMKEY SYMCRYPT_COMPOSITE_MLKEMKEY
const SYMCRYPT_MODELEMENT * PCSYMCRYPT_MODELEMENT
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_GCM_STATE
SYMCRYPT_SESSION_REPLAY_STATE
const SYMCRYPT_LMS_PARAMS * PCSYMCRYPT_LMS_PARAMS
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_DLGROUP
SYMCRYPT_MAGIC_FIELD SYMCRYPT_DLGROUP
UINT32 HighBitRestrictionPosition
const SYMCRYPT_SSHKDF_EXPANDED_KEY * PCSYMCRYPT_SSHKDF_EXPANDED_KEY
const SYMCRYPT_MARVIN32_EXPANDED_SEED * PCSYMCRYPT_MARVIN32_EXPANDED_SEED
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_KMAC128_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHA256_STATE
const SYMCRYPT_ECPOINT * PCSYMCRYPT_ECPOINT
struct _SYMCRYPT_SSHKDF_EXPANDED_KEY SYMCRYPT_SSHKDF_EXPANDED_KEY
#define SYMCRYPT_SHA512_256_OID_COUNT
SYMCRYPT_COMMON_HASH_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHA3_224_STATE
SYMCRYPT_SHA512_256_STATE
const SYMCRYPT_SHA512_256_STATE * PCSYMCRYPT_SHA512_256_STATE
VOID(SYMCRYPT_CALL * PSYMCRYPT_HASH_APPEND_BLOCKS_FUNC)(PVOID pChain, PCBYTE pbData, SIZE_T cbData, SIZE_T *pcbRemaining)
#define SYMCRYPT_GCM_BLOCK_SIZE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_DESX_EXPANDED_KEY
union _SYMCRYPT_HASH_STATE SYMCRYPT_HASH_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_RNG_AES_FIPS140_2_STATE
PCSYMCRYPT_OID SYMCRYPT_CALL SymCryptGetOidList(SYMCRYPT_OID_LIST_ID oidId, _Out_opt_ SIZE_T *pCount)
struct _SYMCRYPT_SRTPKDF_EXPANDED_KEY SYMCRYPT_SRTPKDF_EXPANDED_KEY
UINT32 SYMCRYPT_CALL SymCryptDeprecatedStatusIndicator(PBYTE pbOutput, UINT32 cbOutput)
SYMCRYPT_MAGIC_FIELD SYMCRYPT_KMAC128_STATE
#define SYMCRYPT_MD5_OID_COUNT
@ SYMCRYPT_SI_TYPE_INTPAIR
@ SYMCRYPT_SI_TYPE_INTRANGE
@ SYMCRYPT_SI_TYPE_CIPHER
@ SYMCRYPT_SI_TYPE_KAS_SCHEME
@ SYMCRYPT_SI_TYPE_SIZERANGE
@ SYMCRYPT_SI_TYPE_SAFE_PRIME_GROUP
@ SYMCRYPT_SI_TYPE_ASYM_ALG
@ SYMCRYPT_SI_TYPE_ECURVE
struct _SYMCRYPT_ECPOINT SYMCRYPT_ECPOINT
struct _SYMCRYPT_SSKDF_MAC_EXPANDED_SALT SYMCRYPT_SSKDF_MAC_EXPANDED_SALT
* PSYMCRYPT_HMAC_SHA3_384_STATE
PSYMCRYPT_MODULUS pmModulus
struct _SYMCRYPT_TLSPRF1_2_EXPANDED_KEY * PSYMCRYPT_TLSPRF1_2_EXPANDED_KEY
const SYMCRYPT_HMAC_SHA3_224_STATE * PCSYMCRYPT_HMAC_SHA3_224_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_POLY1305_STATE
#define SYMCRYPT_SHA3_224_OID_COUNT
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_3DES_EXPANDED_KEY
const SYMCRYPT_AES_CMAC_EXPANDED_KEY * PCSYMCRYPT_AES_CMAC_EXPANDED_KEY
const SYMCRYPT_CSHAKE128_STATE * PCSYMCRYPT_CSHAKE128_STATE
struct _SYMCRYPT_SP800_108_EXPANDED_KEY SYMCRYPT_SP800_108_EXPANDED_KEY
const SYMCRYPT_MLDSAKEY * PCSYMCRYPT_MLDSAKEY
const SYMCRYPT_SHA3_224_STATE * PCSYMCRYPT_SHA3_224_STATE
struct _SYMCRYPT_HASH SYMCRYPT_HASH
UINT32 SymCryptTestTrialdivisionMaxSmallPrime(PCSYMCRYPT_TRIALDIVISION_CONTEXT pContext)
VOID(SYMCRYPT_CALL * PSYMCRYPT_PARALLEL_APPEND_FUNC)(_Inout_updates_(nPar) PSYMCRYPT_PARALLEL_HASH_SCRATCH_STATE *pWork, SIZE_T nPar, SIZE_T nBytes, _Out_writes_(cbSimdScratch) PBYTE pbSimdScratch, SIZE_T cbSimdScratch)
SYMCRYPT_DLGROUP_FIPS eFipsStandard
SYMCRYPT_HMAC_SHA3_256_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_SHA512_256_EXPANDED_KEY
const SYMCRYPT_SESSION_REPLAY_STATE * PCSYMCRYPT_SESSION_REPLAY_STATE
const SYMCRYPT_SHA384_STATE * PCSYMCRYPT_SHA384_STATE
const SYMCRYPT_ECKEY * PCSYMCRYPT_ECKEY
FORCEINLINE VOID SYMCRYPT_CALL SymCryptWipeKnownSize(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
const SYMCRYPT_TRIALDIVISION_GROUP * PCSYMCRYPT_TRIALDIVISION_GROUP
* PSYMCRYPT_MD5_CHAINING_STATE
struct _SYMCRYPT_PARALLEL_HASH * PSYMCRYPT_PARALLEL_HASH
struct _SYMCRYPT_TRIALDIVISION_PRIME SYMCRYPT_TRIALDIVISION_PRIME
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_STATE
const SYMCRYPT_OID * PCSYMCRYPT_OID
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA1_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_MARVIN32_EXPANDED_SEED
struct _SYMCRYPT_SSHKDF_EXPANDED_KEY * PSYMCRYPT_SSHKDF_EXPANDED_KEY
VOID(SYMCRYPT_CALL * PSYMCRYPT_MAC_RESULT)(PVOID pState, PVOID pbResult)
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA3_512_EXPANDED_KEY
const SYMCRYPT_GF128_ELEMENT * PCSYMCRYPT_GF128_ELEMENT
const SYMCRYPT_TLSPRF1_1_EXPANDED_KEY * PCSYMCRYPT_TLSPRF1_1_EXPANDED_KEY
const SYMCRYPT_OID SymCryptSha3_224OidList[SYMCRYPT_SHA3_224_OID_COUNT]
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_SHA512_256_EXPANDED_KEY
VOID(SYMCRYPT_CALL * PSYMCRYPT_MAC_APPEND)(PVOID pState, PCBYTE pbData, SIZE_T cbData)
SYMCRYPT_SHA256_CHAINING_STATE
SYMCRYPT_MODELEMENT * PSYMCRYPT_MODELEMENT
#define SYMCRYPT_SHA3_256_OID_COUNT
#define SYMCRYPT_ALIGN_UNION
const SYMCRYPT_OID SymCryptMd5OidList[SYMCRYPT_MD5_OID_COUNT]
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_SHA512_256_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_RSAKEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA512_224_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_MD5_EXPANDED_KEY
const SYMCRYPT_OID SymCryptSha3_384OidList[SYMCRYPT_SHA3_384_OID_COUNT]
struct _SYMCRYPT_TRIALDIVISION_CONTEXT SYMCRYPT_TRIALDIVISION_CONTEXT
union _SYMCRYPT_MAC_EXPANDED_KEY SYMCRYPT_MAC_EXPANDED_KEY
const SYMCRYPT_HMAC_SHA384_EXPANDED_KEY * PCSYMCRYPT_HMAC_SHA384_EXPANDED_KEY
VOID SYMCRYPT_CALL SymCryptWipe(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
SYMCRYPT_HMAC_SHA3_384_EXPANDED_KEY
#define SYMCRYPT_FDEF_UPB_DIGITS
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_SHA3_224_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_RC4_STATE
const SYMCRYPT_HMAC_SHA512_EXPANDED_KEY * PCSYMCRYPT_HMAC_SHA512_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA3_384_EXPANDED_KEY
struct _SYMCRYPT_PBKDF2_EXPANDED_KEY * PSYMCRYPT_PBKDF2_EXPANDED_KEY
const SYMCRYPT_OID SymCryptShake256OidList[SYMCRYPT_SHAKE256_OID_COUNT]
const SYMCRYPT_HMAC_SHA512_256_EXPANDED_KEY * PCSYMCRYPT_HMAC_SHA512_256_EXPANDED_KEY
#define SYMCRYPT_ALIGN_VALUE
const SYMCRYPT_HMAC_SHA256_STATE * PCSYMCRYPT_HMAC_SHA256_STATE
SYMCRYPT_INTERNAL_ECURVE_TYPE type
SYMCRYPT_HMAC_SHA3_512_EXPANDED_KEY
BYTE(* lastDecRoundKey)[4][4]
#define SYMCRYPT_SHAKE256_OID_COUNT
SYMCRYPT_MAGIC_FIELD SYMCRYPT_SHAKE256_STATE
const SYMCRYPT_HMAC_SHA384_STATE * PCSYMCRYPT_HMAC_SHA384_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHA224_STATE
#define SYMCRYPT_RSAKEY_MAX_NUMOF_PRIMES
const SYMCRYPT_OID SymCryptSha384OidList[SYMCRYPT_SHA384_OID_COUNT]
SYMCRYPT_MLKEMKEY * PSYMCRYPT_MLKEMKEY
SYMCRYPT_MD5_CHAINING_STATE outerState
#define SYMCRYPT_MAX_BLOCK_SIZE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_SHA384_STATE
#define SYMCRYPT_INTERNAL_FORCE_WRITE64(_p, _v)
SYMCRYPT_ECURVE_INFO_PRECOMP sw
union _SYMCRYPT_MAC_EXPANDED_KEY * PSYMCRYPT_MAC_EXPANDED_KEY
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_MARVIN32_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_MD5_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_AES_CMAC_STATE
PBYTE pbCrtInverses[SYMCRYPT_RSAKEY_MAX_NUMOF_PRIMES]
PSYMCRYPT_MODELEMENT peMask
struct _SYMCRYPT_MLDSAKEY SYMCRYPT_MLDSAKEY
const SYMCRYPT_HMAC_SHA3_224_EXPANDED_KEY * PCSYMCRYPT_HMAC_SHA3_224_EXPANDED_KEY
const SYMCRYPT_HMAC_SHA512_224_EXPANDED_KEY * PCSYMCRYPT_HMAC_SHA512_224_EXPANDED_KEY
const SYMCRYPT_HMAC_SHA224_EXPANDED_KEY * PCSYMCRYPT_HMAC_SHA224_EXPANDED_KEY
SYMCRYPT_ALIGN BYTE macBlock[SYMCRYPT_CCM_BLOCK_SIZE]
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_AES_CMAC_STATE
BYTE(* lastEncRoundKey)[4][4]
const SYMCRYPT_KMAC128_EXPANDED_KEY * PCSYMCRYPT_KMAC128_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA512_EXPANDED_KEY
const SYMCRYPT_DES_EXPANDED_KEY * PCSYMCRYPT_DES_EXPANDED_KEY
SYMCRYPT_MAGIC_FIELD SYMCRYPT_CCM_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHA3_256_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_KECCAK_STATE
SYMCRYPT_SHA512_CHAINING_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHAKE128_STATE
#define SYMCRYPT_SHA384_OID_COUNT
struct _SYMCRYPT_BLOCKCIPHER * PSYMCRYPT_BLOCKCIPHER
* PSYMCRYPT_DES_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_3DES_EXPANDED_KEY
#define SYMCRYPT_CCM_BLOCK_SIZE
SYMCRYPT_XTS_AES_EXPANDED_KEY
const SYMCRYPT_SSKDF_MAC_EXPANDED_SALT * PCSYMCRYPT_SSKDF_MAC_EXPANDED_SALT
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_SHA224_STATE
const SYMCRYPT_MAC_STATE * PCSYMCRYPT_MAC_STATE
struct _SYMCRYPT_TRIALDIVISION_GROUP * PSYMCRYPT_TRIALDIVISION_GROUP
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_SHA512_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_KMAC256_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA3_256_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_SHA3_384_STATE
UINT32 HighBitRestrictionNumOfBits
UINT32 nMaxDigitsOfPrimes
#define SYMCRYPT_ASYM_ALIGN
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHA512_256_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_802_11_SAE_CUSTOM_STATE
struct _SYMCRYPT_SRTPKDF_EXPANDED_KEY * PSYMCRYPT_SRTPKDF_EXPANDED_KEY
const SYMCRYPT_CSHAKE256_STATE * PCSYMCRYPT_CSHAKE256_STATE
SYMCRYPT_ALIGN_UNION _SYMCRYPT_GF128_ELEMENT
* PSYMCRYPT_MD4_CHAINING_STATE
struct _SYMCRYPT_HKDF_EXPANDED_KEY * PSYMCRYPT_HKDF_EXPANDED_KEY
struct @5239::@5243 montgomery
const SYMCRYPT_SHA3_256_STATE * PCSYMCRYPT_SHA3_256_STATE
const SYMCRYPT_DIVISOR * PCSYMCRYPT_DIVISOR
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA512_STATE
VOID(SYMCRYPT_CALL * PSYMCRYPT_HASH_STATE_COPY_FUNC)(PCVOID pStateSrc, PVOID pStateDst)
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHA512_CHAINING_STATE
* PSYMCRYPT_XTS_AES_EXPANDED_KEY
SYMCRYPT_XMSS_KEY * PSYMCRYPT_XMSS_KEY
SYMCRYPT_MAGIC_FIELD SYMCRYPT_ECKEY
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_DIVISOR
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_SHA224_STATE
#define SYMCRYPT_SHA512_224_OID_COUNT
const SYMCRYPT_HMAC_SHA3_384_STATE * PCSYMCRYPT_HMAC_SHA3_384_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_SHA3_256_STATE
const SYMCRYPT_HKDF_EXPANDED_KEY * PCSYMCRYPT_HKDF_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_GCM_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_SHA256_STATE
struct _SYMCRYPT_TRIALDIVISION_PRIME * PSYMCRYPT_TRIALDIVISION_PRIME
SYMCRYPT_RSAKEY * PSYMCRYPT_RSAKEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_KMAC256_EXPANDED_KEY
const SYMCRYPT_HMAC_SHA3_256_STATE * PCSYMCRYPT_HMAC_SHA3_256_STATE
SYMCRYPT_LMS_PARAMS * PSYMCRYPT_LMS_PARAMS
SYMCRYPT_MAGIC_FIELD SYMCRYPT_MARVIN32_STATE
#define SYMCRYPT_INTERNAL_FORCE_WRITE32(_p, _v)
SYMCRYPT_HMAC_SHA3_512_STATE
const SYMCRYPT_AES_EXPANDED_KEY * PCSYMCRYPT_AES_EXPANDED_KEY
SYMCRYPT_DLKEY * PSYMCRYPT_DLKEY
BOOLEAN keystreamBufferValid
const SYMCRYPT_PARALLEL_HASH * PCSYMCRYPT_PARALLEL_HASH
PCSYMCRYPT_BLOCKCIPHER pBlockCipher
struct _SYMCRYPT_INT SYMCRYPT_INT
UINT32 SYMCRYPT_CPU_FEATURES
PSYMCRYPT_PARALLEL_APPEND_FUNC parAppendFunc
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_CSHAKE256_STATE
SYMCRYPT_COMPOSITE_MLKEMKEY * PSYMCRYPT_COMPOSITE_MLKEMKEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA384_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA512_256_EXPANDED_KEY
SYMCRYPT_ALIGN_SESSION _SYMCRYPT_SESSION_REPLAY_STATE
#define SYMCRYPT_GF128_FIELD_SIZE
const SYMCRYPT_OID SymCryptSha512OidList[SYMCRYPT_SHA512_OID_COUNT]
const SYMCRYPT_HASH * PCSYMCRYPT_HASH
const SYMCRYPT_COMPOSITE_MLKEMKEY * PCSYMCRYPT_COMPOSITE_MLKEMKEY
PBYTE pbPrivExps[SYMCRYPT_RSAKEY_MAX_NUMOF_PUBEXPS]
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_RC2_EXPANDED_KEY
PCSYMCRYPT_HASH pLmsHashFunction
struct _SYMCRYPT_HASH * PSYMCRYPT_HASH
SYMCRYPT_GCM_SUPPORTED_BLOCKCIPHER_KEYS blockcipherKey
struct @5239::@5244 pseudoMersenne
struct _SYMCRYPT_TLSPRF1_1_EXPANDED_KEY SYMCRYPT_TLSPRF1_1_EXPANDED_KEY
* PSYMCRYPT_GF128_ELEMENT
#define SYMCRYPT_SHA3_384_OID_COUNT
UINT32 g_SymCryptFipsSelftestsPerformed
PCBYTE PBYTE SIZE_T cbData
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_RC4_STATE
SYMCRYPT_XMSS_PARAMS * PSYMCRYPT_XMSS_PARAMS
SYMCRYPT_MD2_CHAINING_STATE chain
const SYMCRYPT_OID SymCryptSha3_256OidList[SYMCRYPT_SHA3_256_OID_COUNT]
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_SHA384_EXPANDED_KEY
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_ECPOINT
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_STATE
struct _SYMCRYPT_TRIALDIVISION_GROUP SYMCRYPT_TRIALDIVISION_GROUP
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_SHAKE128_STATE
PSYMCRYPT_PARALLEL_HASH_RESULT_DONE_FUNC parResultDoneFunc
SYMCRYPT_HMAC_SHA3_224_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHA384_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_CSHAKE128_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_PARALLEL_HASH_SCRATCH_STATE
SYMCRYPT_DES_EXPANDED_KEY
SYMCRYPT_CPU_FEATURES g_SymCryptCpuFeaturesNotPresent
SYMCRYPT_MAGIC_FIELD SYMCRYPT_3DES_EXPANDED_KEY
PBYTE pbCrtPrivExps[SYMCRYPT_RSAKEY_MAX_NUMOF_PUBEXPS *SYMCRYPT_RSAKEY_MAX_NUMOF_PRIMES]
PCSYMCRYPT_MARVIN32_EXPANDED_SEED pSeed
SYMCRYPT_MD4_CHAINING_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_CCM_STATE
const SYMCRYPT_RSAKEY * PCSYMCRYPT_RSAKEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA512_224_EXPANDED_KEY
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_SHA256_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_XTS_AES_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA3_224_EXPANDED_KEY
const SYMCRYPT_AES_CMAC_STATE * PCSYMCRYPT_AES_CMAC_STATE
enum _SYMCRYPT_ECPOINT_COORDINATES SYMCRYPT_ECPOINT_COORDINATES
SYMCRYPT_MD2_CHAINING_STATE
const SYMCRYPT_OID SymCryptSha512_256OidList[SYMCRYPT_SHA512_256_OID_COUNT]
const SYMCRYPT_HMAC_MD5_STATE * PCSYMCRYPT_HMAC_MD5_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_RNG_AES_STATE
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_ECURVE
struct _SYMCRYPT_OID * PSYMCRYPT_OID
SYMCRYPT_HASH_STATE innerState
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_EXPANDED_KEY
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_SHA1_STATE
SYMCRYPT_GHASH_EXPANDED_KEY
const SYMCRYPT_DESX_EXPANDED_KEY * PCSYMCRYPT_DESX_EXPANDED_KEY
* PSYMCRYPT_SESSION_REPLAY_STATE
const SYMCRYPT_HMAC_SHA512_224_STATE * PCSYMCRYPT_HMAC_SHA512_224_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_SHA1_STATE
const SYMCRYPT_LMS_KEY * PCSYMCRYPT_LMS_KEY
SYMCRYPT_MAGIC_FIELD SYMCRYPT_RNG_AES_STATE
const SYMCRYPT_KMAC256_EXPANDED_KEY * PCSYMCRYPT_KMAC256_EXPANDED_KEY
const SYMCRYPT_XMSS_KEY * PCSYMCRYPT_XMSS_KEY
_SYMCRYPT_HASH_OPERATION_TYPE
@ SYMCRYPT_HASH_OPERATION_RESULT
@ SYMCRYPT_HASH_OPERATION_APPEND
VOID(SYMCRYPT_CALL * PSYMCRYPT_HASH_APPEND_FUNC)(PVOID pState, PCBYTE pbData, SIZE_T cbData)
PSYMCRYPT_MODELEMENT pePublicKey
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_KMAC128_STATE
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_MLKEMKEY
SYMCRYPT_MAGIC_FIELD SYMCRYPT_SHA3_512_STATE
const SYMCRYPT_3DES_EXPANDED_KEY * PCSYMCRYPT_3DES_EXPANDED_KEY
const SYMCRYPT_HMAC_SHA3_256_EXPANDED_KEY * PCSYMCRYPT_HMAC_SHA3_256_EXPANDED_KEY
SYMCRYPT_ALIGN_SESSION _SYMCRYPT_SESSION
UINT32 SYMCRYPT_CALL SymCryptDeprecatedServiceIndicator(UINT32 Service, UINT64 Alg, UINT64 Param1, UINT64 Param2, UINT64 Param3)
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_AES_CMAC_EXPANDED_KEY
const SYMCRYPT_HMAC_SHA1_STATE * PCSYMCRYPT_HMAC_SHA1_STATE
* PSYMCRYPT_HMAC_SHA3_512_STATE
struct _SYMCRYPT_PARALLEL_HASH SYMCRYPT_PARALLEL_HASH
SYMCRYPT_MAGIC_FIELD SYMCRYPT_AES_EXPANDED_KEY
const SYMCRYPT_PARALLEL_HASH_OPERATION * PCSYMRYPT_PARALLEL_HASH_OPERATION
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHA512_STATE
const SYMCRYPT_HMAC_SHA3_512_STATE * PCSYMCRYPT_HMAC_SHA3_512_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_SHA3_512_STATE
const SYMCRYPT_HMAC_SHA512_256_STATE * PCSYMCRYPT_HMAC_SHA512_256_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_MD4_STATE
UINT32 nDigitsOfPrimes[SYMCRYPT_RSAKEY_MAX_NUMOF_PRIMES]
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_EXPANDED_KEY
SYMCRYPT_MAGIC_FIELD SYMCRYPT_RC2_EXPANDED_KEY
void __cpuidex(int CPUInfo[4], int InfoType, int ECXValue)
#define SYMCRYPT_SHA512_OID_COUNT
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA3_384_STATE
VOID(SYMCRYPT_CALL * PSYMCRYPT_HASH_RESULT_FUNC)(PVOID pState, PVOID pbResult)
SYMCRYPT_LMS_KEY * PSYMCRYPT_LMS_KEY
PSYMCRYPT_INT piPrivateKey
SYMCRYPT_MAGIC_FIELD SYMCRYPT_CSHAKE256_STATE
const SYMCRYPT_OID SymCryptSha224OidList[SYMCRYPT_SHA224_OID_COUNT]
SYMCRYPT_MAGIC_FIELD union @5239 tm
PCSYMCRYPT_HMAC_MD5_EXPANDED_KEY pKey
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_KMAC256_STATE
const SYMCRYPT_SHA3_512_STATE * PCSYMCRYPT_SHA3_512_STATE
#define SYMCRYPT_SHA3_512_OID_COUNT
PSYMCRYPT_PARALLEL_HASH_OPERATION next
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHA3_384_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_MD5_EXPANDED_KEY
* PSYMCRYPT_HMAC_SHA3_224_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_SHA3_256_STATE
struct _SYMCRYPT_TLSPRF1_1_EXPANDED_KEY * PSYMCRYPT_TLSPRF1_1_EXPANDED_KEY
SYMCRYPT_DLGROUP * PSYMCRYPT_DLGROUP
UINT32 PrivateKeyDefaultFormat
const SYMCRYPT_GHASH_EXPANDED_KEY * PCSYMCRYPT_GHASH_EXPANDED_KEY
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_INT
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA224_STATE
const SYMCRYPT_HMAC_MD5_EXPANDED_KEY * PCSYMCRYPT_HMAC_MD5_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA512_256_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_MD5_STATE
SYMCRYPT_AES_EXPANDED_KEY key2
SYMCRYPT_MAGIC_FIELD SYMCRYPT_SHAKE128_STATE
UINT32 nWinternitzChainWidth
#define SYMCRYPT_FIELD_OFFSET(type, field)
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_COMMON_HASH_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_CSHAKE128_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_AES_EXPANDED_KEY
struct _SYMCRYPT_PBKDF2_EXPANDED_KEY SYMCRYPT_PBKDF2_EXPANDED_KEY
* PSYMCRYPT_COMMON_HASH_STATE
const SYMCRYPT_MAC * PCSYMCRYPT_MAC
PSYMCRYPT_MODELEMENT peCrtInverses[SYMCRYPT_RSAKEY_MAX_NUMOF_PRIMES]
const SYMCRYPT_TRIALDIVISION_CONTEXT * PCSYMCRYPT_TRIALDIVISION_CONTEXT
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_MD4_CHAINING_STATE
SYMCRYPT_HMAC_SHA3_384_STATE
SYMCRYPT_ALIGN BYTE keystreamBlock[SYMCRYPT_CCM_BLOCK_SIZE]
PSYMCRYPT_PARALLEL_HASH_RESULT_FUNC parResult1Func
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_SHA256_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_CHACHA20_STATE
#define SYMCRYPT_MAGIC_FIELD
* PSYMCRYPT_CHACHA20_STATE
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_MODELEMENT
PBYTE pbPrimes[SYMCRYPT_RSAKEY_MAX_NUMOF_PRIMES]
const SYMCRYPT_GCM_EXPANDED_KEY * PCSYMCRYPT_GCM_EXPANDED_KEY
const SYMCRYPT_HMAC_SHA3_512_EXPANDED_KEY * PCSYMCRYPT_HMAC_SHA3_512_EXPANDED_KEY
* PSYMCRYPT_MD2_CHAINING_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_SHA512_256_STATE
const SYMCRYPT_INT * PCSYMCRYPT_INT
* PSYMCRYPT_RNG_AES_FIPS140_2_STATE
struct _SYMCRYPT_TRIALDIVISION_CONTEXT * PSYMCRYPT_TRIALDIVISION_CONTEXT
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_KMAC128_EXPANDED_KEY
const SYMCRYPT_KMAC256_STATE * PCSYMCRYPT_KMAC256_STATE
const SYMCRYPT_MARVIN32_STATE * PCSYMCRYPT_MARVIN32_STATE
UINT32 cbScratchGetSetValue
SYMCRYPT_MAGIC_FIELD SYMCRYPT_ASYM_ALIGN union @5237 ti
struct _SYMCRYPT_DIVISOR SYMCRYPT_DIVISOR
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_MODULUS
SYMCRYPT_ERROR(SYMCRYPT_CALL * PSYMCRYPT_MAC_EXPAND_KEY)(PVOID pExpandedKey, PCBYTE pbKey, SIZE_T cbKey)
struct _SYMCRYPT_ECURVE_INFO_PRECOMP SYMCRYPT_ECURVE_INFO_PRECOMP
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_GCM_EXPANDED_KEY
UINT32 cbScratchScalarMulti
* PSYMCRYPT_HMAC_SHA3_256_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_KMAC256_EXPANDED_KEY
@ SYMCRYPT_OID_LIST_ID_MD5
@ SYMCRYPT_OID_LIST_ID_SHA3_224
@ SYMCRYPT_OID_LIST_ID_SHA224
@ SYMCRYPT_OID_LIST_ID_SHAKE128
@ SYMCRYPT_OID_LIST_ID_SHA256
@ SYMCRYPT_OID_LIST_ID_SHA512
@ SYMCRYPT_OID_LIST_ID_SHA3_384
@ SYMCRYPT_OID_LIST_ID_SHA512_224
@ SYMCRYPT_OID_LIST_ID_SHA3_512
@ SYMCRYPT_OID_LIST_ID_SHA3_256
@ SYMCRYPT_OID_LIST_ID_SHA384
@ SYMCRYPT_OID_LIST_ID_SHA1
@ SYMCRYPT_OID_LIST_ID_SHA512_256
@ SYMCRYPT_OID_LIST_ID_NULL
@ SYMCRYPT_OID_LIST_ID_SHAKE256
SYMCRYPT_GF128_ELEMENT ghashState
const SYMCRYPT_HMAC_SHA512_STATE * PCSYMCRYPT_HMAC_SHA512_STATE
* PSYMCRYPT_HMAC_SHA3_224_EXPANDED_KEY
const SYMCRYPT_MD2_STATE * PCSYMCRYPT_MD2_STATE
UINT32 nBitsOfPrimes[SYMCRYPT_RSAKEY_MAX_NUMOF_PRIMES]
struct _SYMCRYPT_MODELEMENT SYMCRYPT_MODELEMENT
SYMCRYPT_MAGIC_FIELD union @5238 td
struct _SYMCRYPT_PARALLEL_HASH_OPERATION * PSYMCRYPT_PARALLEL_HASH_OPERATION
SYMCRYPT_MARVIN32_EXPANDED_SEED SYMCRYPT_MARVIN32_CHAINING_STATE
SYMCRYPT_SHA512_224_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_KMAC128_EXPANDED_KEY
union _SYMCRYPT_MAC_STATE SYMCRYPT_MAC_STATE
const SYMCRYPT_DLKEY * PCSYMCRYPT_DLKEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHA512_224_STATE
const SYMCRYPT_MAC_EXPANDED_KEY * PCSYMCRYPT_MAC_EXPANDED_KEY
const SYMCRYPT_SHAKE128_STATE * PCSYMCRYPT_SHAKE128_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_XMSS_PARAMS
PSYMCRYPT_ECPOINT poPublicKey
SYMCRYPT_ECPOINT * PSYMCRYPT_ECPOINT
PSYMCRYPT_COMMON_HASH_STATE pState
const SYMCRYPT_HMAC_SHA1_EXPANDED_KEY * PCSYMCRYPT_HMAC_SHA1_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA3_512_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_SHA384_STATE
struct _SYMCRYPT_MAC * PSYMCRYPT_MAC
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_SHA512_EXPANDED_KEY
const SYMCRYPT_SHA256_STATE * PCSYMCRYPT_SHA256_STATE
const SYMCRYPT_MD5_STATE * PCSYMCRYPT_MD5_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA256_STATE
VOID(SYMCRYPT_CALL * PSYMCRYPT_MAC_RESULT_EX)(PVOID pState, PVOID pbResult, SIZE_T cbResult)
#define SYMCRYPT_RSAKEY_MAX_NUMOF_PUBEXPS
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_MD2_CHAINING_STATE
#define SYMCRYPT_INTERNAL_FORCE_WRITE16(_p, _v)
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_SHA512_224_STATE
#define SYMCRYPT_ALIGN_SESSION
const SYMCRYPT_SHA224_STATE * PCSYMCRYPT_SHA224_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_RC4_STATE
SYMCRYPT_MLDSAKEY * PSYMCRYPT_MLDSAKEY
#define SYMCRYPT_INTERNAL_FORCE_WRITE8(_p, _v)
SYMCRYPT_MAGIC_FIELD SYMCRYPT_GCM_EXPANDED_KEY
const SYMCRYPT_MODULUS * PCSYMCRYPT_MODULUS
const SYMCRYPT_HMAC_SHA224_STATE * PCSYMCRYPT_HMAC_SHA224_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_KMAC256_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_SHA1_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_CCM_STATE
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_RSAKEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHA256_CHAINING_STATE
enum _SYMCRYPT_HASH_OPERATION_TYPE SYMCRYPT_HASH_OPERATION_TYPE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHA1_CHAINING_STATE
SYMCRYPT_DIVISOR * PSYMCRYPT_DIVISOR
* PSYMCRYPT_SHA512_224_STATE
PSYMCRYPT_MODULUS pmPrimes[SYMCRYPT_RSAKEY_MAX_NUMOF_PRIMES]
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHA3_512_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_MD5_STATE
_SYMCRYPT_INTERNAL_ECURVE_TYPE
@ SYMCRYPT_INTERNAL_ECURVE_TYPE_TWISTED_EDWARDS
@ SYMCRYPT_INTERNAL_ECURVE_TYPE_SHORT_WEIERSTRASS_AM3
@ SYMCRYPT_INTERNAL_ECURVE_TYPE_SHORT_WEIERSTRASS
@ SYMCRYPT_INTERNAL_ECURVE_TYPE_MONTGOMERY
SYMCRYPT_MAGIC_FIELD SYMCRYPT_POLY1305_STATE
struct _SYMCRYPT_PARALLEL_HASH_SCRATCH_OPERATION * PSYMCRYPT_PARALLEL_HASH_SCRATCH_OPERATION
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_SHA224_EXPANDED_KEY
const SYMCRYPT_OID SymCryptSha256OidList[SYMCRYPT_SHA256_OID_COUNT]
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_CSHAKE128_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_SHAKE256_STATE
SYMCRYPT_HMAC_SHA3_224_STATE
* PSYMCRYPT_HMAC_SHA3_512_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA3_224_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_KMAC128_EXPANDED_KEY
SYMCRYPT_DESX_EXPANDED_KEY
const SYMCRYPT_OID SymCryptSha1OidList[SYMCRYPT_SHA1_OID_COUNT]
const SYMCRYPT_HMAC_STATE * PCSYMCRYPT_HMAC_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_ECURVE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_SHA512_STATE
UINT32 nChecksumLShiftBits
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_AES_EXPANDED_KEY
SYMCRYPT_MAGIC_FIELD SYMCRYPT_AES_CMAC_STATE
#define SYMCRYPT_ALIGN_STRUCT
SYMCRYPT_MAGIC_FIELD SYMCRYPT_AES_CMAC_EXPANDED_KEY
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_KMAC256_EXPANDED_KEY
const SYMCRYPT_KMAC128_STATE * PCSYMCRYPT_KMAC128_STATE
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_DLKEY
struct _SYMCRYPT_TLSPRF1_2_EXPANDED_KEY SYMCRYPT_TLSPRF1_2_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_RNG_AES_STATE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_STATE
SYMCRYPT_ECKEY * PSYMCRYPT_ECKEY
struct _SYMCRYPT_LMS_KEY SYMCRYPT_LMS_KEY
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_SHA256_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_GCM_EXPANDED_KEY
UINT32 HighBitRestrictionValue
SYMCRYPT_MAGIC_FIELD SYMCRYPT_GCM_STATE
struct _SYMCRYPT_PARALLEL_HASH_SCRATCH_OPERATION SYMCRYPT_PARALLEL_HASH_SCRATCH_OPERATION
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA256_EXPANDED_KEY
SYMCRYPT_MODULUS * PSYMCRYPT_MODULUS
enum _SYMCRYPT_OID_LIST_ID SYMCRYPT_OID_LIST_ID
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_AES_CMAC_EXPANDED_KEY
BOOLEAN(SYMCRYPT_CALL * PSYMCRYPT_PARALLEL_HASH_RESULT_FUNC)(PCSYMCRYPT_PARALLEL_HASH pParHash, PSYMCRYPT_COMMON_HASH_STATE pState, PSYMCRYPT_PARALLEL_HASH_SCRATCH_STATE pScratch, BOOLEAN *pRes)
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_SHA512_224_STATE
PSYMCRYPT_MODELEMENT peRand
struct _SYMCRYPT_SP800_108_EXPANDED_KEY * PSYMCRYPT_SP800_108_EXPANDED_KEY
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_SHA512_224_EXPANDED_KEY
SYMCRYPT_SHA1_CHAINING_STATE
BYTE bytesAlreadyProcessed
SYMCRYPT_HMAC_SHA3_256_EXPANDED_KEY
union _SYMCRYPT_GCM_SUPPORTED_BLOCKCIPHER_KEYS SYMCRYPT_GCM_SUPPORTED_BLOCKCIPHER_KEYS
struct _SYMCRYPT_MAC SYMCRYPT_MAC
const SYMCRYPT_SHA3_384_STATE * PCSYMCRYPT_SHA3_384_STATE
const SYMCRYPT_PBKDF2_EXPANDED_KEY * PCSYMCRYPT_PBKDF2_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA3_256_EXPANDED_KEY
const SYMCRYPT_XTS_AES_EXPANDED_KEY * PCSYMCRYPT_XTS_AES_EXPANDED_KEY
const SYMCRYPT_SP800_108_EXPANDED_KEY * PCSYMCRYPT_SP800_108_EXPANDED_KEY
const SYMCRYPT_HMAC_SHA3_384_EXPANDED_KEY * PCSYMCRYPT_HMAC_SHA3_384_EXPANDED_KEY
SYMCRYPT_INT * PSYMCRYPT_INT
const SYMCRYPT_OID SymCryptSha512_224OidList[SYMCRYPT_SHA512_224_OID_COUNT]
* PSYMCRYPT_SHA256_CHAINING_STATE
union _SYMCRYPT_HASH_STATE * PSYMCRYPT_HASH_STATE
#define SYMCRYPT_ECURVE_SW_MAX_NPRECOMP_POINTS
SYMCRYPT_ECPOINT_COORDINATES eCoordinates
#define SYMCRYPT_SHA224_OID_COUNT
const SYMCRYPT_GCM_STATE * PCSYMCRYPT_GCM_STATE
PSYMCRYPT_COMMON_HASH_STATE PCSYMRYPT_PARALLEL_HASH_OPERATION pOp
SYMCRYPT_RNG_AES_FIPS140_2_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_HMAC_MD5_EXPANDED_KEY
const SYMCRYPT_ECURVE * PCSYMCRYPT_ECURVE
SYMCRYPT_ECURVE * PSYMCRYPT_ECURVE
enum _SYMCRYPT_SI_TYPE SYMCRYPT_SI_TYPE
SYMCRYPT_ASYM_ALIGN_STRUCT _SYMCRYPT_ECKEY
struct _SYMCRYPT_MODULUS SYMCRYPT_MODULUS
* PSYMCRYPT_HMAC_SHA3_384_EXPANDED_KEY
#define SYMCRYPT_SHA1_OID_COUNT
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_PARALLEL_HASH
VOID(SYMCRYPT_CALL * PSYMCRYPT_HASH_INIT_FUNC)(PVOID pState)
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_DES_EXPANDED_KEY
* PSYMCRYPT_PARALLEL_HASH_SCRATCH_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_SHA3_224_STATE
struct _SYMCRYPT_SSKDF_MAC_EXPANDED_SALT * PSYMCRYPT_SSKDF_MAC_EXPANDED_SALT
SYMCRYPT_CPU_FEATURES SYMCRYPT_CALL SymCryptCpuFeaturesNeverPresent(void)
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_LMS_PARAMS
PSYMCRYPT_HASH_APPEND_BLOCKS_FUNC appendBlockFunc
PSYMCRYPT_HASH_APPEND_FUNC appendFunc
SYMCRYPT_MAGIC_FIELD SYMCRYPT_DLKEY
SYMCRYPT_MAGIC_FIELD UINT64 dataLengthL
const SYMCRYPT_OID SymCryptShake128OidList[SYMCRYPT_SHAKE128_OID_COUNT]
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_PARALLEL_HASH_SCRATCH_OPERATION
#define SYMCRYPT_SHAKE128_OID_COUNT
const SYMCRYPT_HASH_STATE * PCSYMCRYPT_HASH_STATE
const SYMCRYPT_MLKEMKEY * PCSYMCRYPT_MLKEMKEY
SYMCRYPT_MD5_CHAINING_STATE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_CSHAKE256_STATE
VOID(SYMCRYPT_CALL * PSYMCRYPT_MAC_INIT)(PVOID pState, PCVOID pExpandedKey)
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_SHAKE256_STATE
SYMCRYPT_MARVIN32_EXPANDED_SEED * PSYMCRYPT_MARVIN32_CHAINING_STATE
SYMCRYPT_PARALLEL_HASH_SCRATCH_STATE
const SYMCRYPT_MD4_STATE * PCSYMCRYPT_MD4_STATE
const SYMCRYPT_SHA1_STATE * PCSYMCRYPT_SHA1_STATE
const SYMCRYPT_HMAC_SHA256_EXPANDED_KEY * PCSYMCRYPT_HMAC_SHA256_EXPANDED_KEY
const SYMCRYPT_SHA512_STATE * PCSYMCRYPT_SHA512_STATE
#define SYMCRYPT_SHA256_OID_COUNT
PCSYMCRYPT_MAC macAlgorithm
const SYMCRYPT_SHAKE256_STATE * PCSYMCRYPT_SHAKE256_STATE
BYTE abKey[SYMCRYPT_GCM_MAX_KEY_SIZE]
PSYMCRYPT_HASH_RESULT_FUNC resultFunc
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_MD5_CHAINING_STATE
* PSYMCRYPT_SHA1_CHAINING_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_HMAC_SHA384_EXPANDED_KEY
const SYMCRYPT_DLGROUP * PCSYMCRYPT_DLGROUP
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_RC2_EXPANDED_KEY
const SYMCRYPT_TLSPRF1_2_EXPANDED_KEY * PCSYMCRYPT_TLSPRF1_2_EXPANDED_KEY
const SYMCRYPT_SRTPKDF_EXPANDED_KEY * PCSYMCRYPT_SRTPKDF_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_POLY1305_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_MARVIN32_EXPANDED_SEED
* PSYMCRYPT_GHASH_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_MD2_STATE
* PSYMCRYPT_HMAC_SHA3_256_EXPANDED_KEY
const SYMCRYPT_OID SymCryptSha3_512OidList[SYMCRYPT_SHA3_512_OID_COUNT]
PCSYMCRYPT_HASH pHashAlgorithm
const SYMCRYPT_TRIALDIVISION_PRIME * PCSYMCRYPT_TRIALDIVISION_PRIME
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_MARVIN32_EXPANDED_SEED
enum _SYMCRYPT_INTERNAL_ECURVE_TYPE SYMCRYPT_INTERNAL_ECURVE_TYPE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA224_EXPANDED_KEY
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_SHA1_EXPANDED_KEY
#define SYMCRYPT_GCM_MAX_KEY_SIZE
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_MARVIN32_STATE
_SYMCRYPT_ECPOINT_COORDINATES
@ SYMCRYPT_ECPOINT_COORDINATES_AFFINE
@ SYMCRYPT_ECPOINT_COORDINATES_PROJECTIVE
@ SYMCRYPT_ECPOINT_COORDINATES_SINGLE_PROJECTIVE
@ SYMCRYPT_ECPOINT_COORDINATES_INVALID
@ SYMCRYPT_ECPOINT_COORDINATES_SINGLE
@ SYMCRYPT_ECPOINT_COORDINATES_JACOBIAN
@ SYMCRYPT_ECPOINT_COORDINATES_EXTENDED_PROJECTIVE
UINT32 SYMCRYPT_CALL SymCryptFipsGetSelftestsPerformed(void)
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HASH
SYMCRYPT_ALIGN_STRUCT _SYMCRYPT_HMAC_MD5_STATE
SYMCRYPT_AES_EXPANDED_KEY aes
SYMCRYPT_SHA3_224_STATE sha3_224State
SYMCRYPT_SHA1_STATE sha1State
SYMCRYPT_MD5_STATE md5State
SYMCRYPT_SHA256_STATE sha256State
SYMCRYPT_SHA512_224_STATE sha512_224State
SYMCRYPT_SHA512_STATE sha512State
SYMCRYPT_SHA224_STATE sha224State
SYMCRYPT_SHA3_256_STATE sha3_256State
SYMCRYPT_SHA512_256_STATE sha512_256State
SYMCRYPT_SHA384_STATE sha384State
SYMCRYPT_MD2_STATE md2State
SYMCRYPT_MD4_STATE md4State
SYMCRYPT_SHA3_384_STATE sha3_384State
SYMCRYPT_SHA3_512_STATE sha3_512State
SYMCRYPT_HMAC_SHA384_EXPANDED_KEY sha384Key
SYMCRYPT_KMAC256_EXPANDED_KEY kmac256Key
SYMCRYPT_HMAC_SHA3_224_EXPANDED_KEY sha3_224Key
SYMCRYPT_HMAC_SHA224_EXPANDED_KEY sha224Key
SYMCRYPT_HMAC_SHA512_EXPANDED_KEY sha512Key
SYMCRYPT_HMAC_MD5_EXPANDED_KEY md5Key
SYMCRYPT_KMAC128_EXPANDED_KEY kmac128Key
SYMCRYPT_HMAC_SHA256_EXPANDED_KEY sha256Key
SYMCRYPT_AES_CMAC_EXPANDED_KEY aescmacKey
SYMCRYPT_HMAC_SHA1_EXPANDED_KEY sha1Key
SYMCRYPT_HMAC_SHA512_256_EXPANDED_KEY sha512_256Key
SYMCRYPT_HMAC_SHA3_384_EXPANDED_KEY sha3_384Key
SYMCRYPT_HMAC_SHA512_224_EXPANDED_KEY sha512_224Key
SYMCRYPT_HMAC_SHA3_512_EXPANDED_KEY sha3_512Key
SYMCRYPT_HMAC_SHA3_256_EXPANDED_KEY sha3_256Key
SYMCRYPT_HMAC_MD5_STATE md5State
SYMCRYPT_HMAC_SHA3_224_STATE sha3_224State
SYMCRYPT_KMAC256_STATE kmac256State
SYMCRYPT_HMAC_SHA512_STATE sha512State
SYMCRYPT_HMAC_SHA512_224_STATE sha512_224State
SYMCRYPT_HMAC_SHA384_STATE sha384State
SYMCRYPT_HMAC_SHA224_STATE sha224State
SYMCRYPT_HMAC_SHA512_256_STATE sha512_256State
SYMCRYPT_HMAC_SHA3_256_STATE sha3_256State
SYMCRYPT_AES_CMAC_STATE aescmacState
SYMCRYPT_HMAC_SHA3_512_STATE sha3_512State
SYMCRYPT_HMAC_SHA256_STATE sha256State
SYMCRYPT_HMAC_SHA1_STATE sha1State
SYMCRYPT_HMAC_SHA3_384_STATE sha3_384State
SYMCRYPT_KMAC128_STATE kmac128State
_Reserved_ PVOID Reserved