23 0x428a2f98d728ae22UL, 0x7137449123ef65cdUL,
24 0xb5c0fbcfec4d3b2fUL, 0xe9b5dba58189dbbcUL,
25 0x3956c25bf348b538UL, 0x59f111f1b605d019UL,
26 0x923f82a4af194f9bUL, 0xab1c5ed5da6d8118UL,
27 0xd807aa98a3030242UL, 0x12835b0145706fbeUL,
28 0x243185be4ee4b28cUL, 0x550c7dc3d5ffb4e2UL,
29 0x72be5d74f27b896fUL, 0x80deb1fe3b1696b1UL,
30 0x9bdc06a725c71235UL, 0xc19bf174cf692694UL,
31 0xe49b69c19ef14ad2UL, 0xefbe4786384f25e3UL,
32 0x0fc19dc68b8cd5b5UL, 0x240ca1cc77ac9c65UL,
33 0x2de92c6f592b0275UL, 0x4a7484aa6ea6e483UL,
34 0x5cb0a9dcbd41fbd4UL, 0x76f988da831153b5UL,
35 0x983e5152ee66dfabUL, 0xa831c66d2db43210UL,
36 0xb00327c898fb213fUL, 0xbf597fc7beef0ee4UL,
37 0xc6e00bf33da88fc2UL, 0xd5a79147930aa725UL,
38 0x06ca6351e003826fUL, 0x142929670a0e6e70UL,
39 0x27b70a8546d22ffcUL, 0x2e1b21385c26c926UL,
40 0x4d2c6dfc5ac42aedUL, 0x53380d139d95b3dfUL,
41 0x650a73548baf63deUL, 0x766a0abb3c77b2a8UL,
42 0x81c2c92e47edaee6UL, 0x92722c851482353bUL,
43 0xa2bfe8a14cf10364UL, 0xa81a664bbc423001UL,
44 0xc24b8b70d0f89791UL, 0xc76c51a30654be30UL,
45 0xd192e819d6ef5218UL, 0xd69906245565a910UL,
46 0xf40e35855771202aUL, 0x106aa07032bbd1b8UL,
47 0x19a4c116b8d2d0c8UL, 0x1e376c085141ab53UL,
48 0x2748774cdf8eeb99UL, 0x34b0bcb5e19b48a8UL,
49 0x391c0cb3c5c95a63UL, 0x4ed8aa4ae3418acbUL,
50 0x5b9cca4f7763e373UL, 0x682e6ff3d6b2b8a3UL,
51 0x748f82ee5defb2fcUL, 0x78a5636f43172f60UL,
52 0x84c87814a1f0ab72UL, 0x8cc702081a6439ecUL,
53 0x90befffa23631e28UL, 0xa4506cebde82bde9UL,
54 0xbef9a3f7b2c67915UL, 0xc67178f2e372532bUL,
55 0xca273eceea26619cUL, 0xd186b8c721c0c207UL,
56 0xeada7dd6cde0eb1eUL, 0xf57d4f7fee6ed178UL,
57 0x06f067aa72176fbaUL, 0x0a637dc5a2c898a6UL,
58 0x113f9804bef90daeUL, 0x1b710b35131c471bUL,
59 0x28db77f523047d84UL, 0x32caab7b40c72493UL,
60 0x3c9ebe0a15c9bebcUL, 0x431d67c49c100d4cUL,
61 0x4cc5d4becb3e42b6UL, 0x597f299cfc657e2aUL,
62 0x5fcb6fab3ad6faecUL, 0x6c44198c4a475817UL,
102 0x22312194fc2bf72cUL,
103 0x9f555fa3c84c64c2UL,
104 0x2393b86b6f53b151UL,
105 0x963877195940eabdUL,
106 0x96283ee2a88effe3UL,
107 0xbe5e1e2553863992UL,
108 0x2b0199fc2c85b8aaUL,
109 0x0eb72ddc81c52ca2UL,
195#define ALG SHA512_224
196#define Alg Sha512_224
204#define ALG SHA512_256
205#define Alg Sha512_256
220 pState->bytesInBuffer = 0;
240 pState->bytesInBuffer = 0;
260 pState->bytesInBuffer = 0;
280 pState->bytesInBuffer = 0;
320 if(
cbData < freeInBuffer )
628 scError = SYMCRYPT_INVALID_BLOB;
635 scError = SYMCRYPT_INVALID_BLOB;
642 pState->bytesInBuffer =
blob.dataLengthL & 0x7f;
697 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba,
698 0xcc, 0x41, 0x73, 0x49, 0xae, 0x20, 0x41, 0x31,
699 0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2,
700 0x0a, 0x9e, 0xee, 0xe6, 0x4b, 0x55, 0xd3, 0x9a,
701 0x21, 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8,
702 0x36, 0xba, 0x3c, 0x23, 0xa3, 0xfe, 0xeb, 0xbd,
703 0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, 0x0e,
704 0x2a, 0x9a, 0xc9, 0x4f, 0xa5, 0x4c, 0xa4, 0x9f,
730 0xcb, 0x00, 0x75, 0x3f, 0x45, 0xa3, 0x5e, 0x8b,
731 0xb5, 0xa0, 0x3d, 0x69, 0x9a, 0xc6, 0x50, 0x07,
732 0x27, 0x2c, 0x32, 0xab, 0x0e, 0xde, 0xd1, 0x63,
733 0x1a, 0x8b, 0x60, 0x5a, 0x43, 0xff, 0x5b, 0xed,
734 0x80, 0x86, 0x07, 0x2b, 0xa1, 0xe7, 0xcc, 0x23,
735 0x58, 0xba, 0xec, 0xa1, 0x34, 0xc8, 0x25, 0xa7,
759 0x46, 0x34, 0x27, 0x0f, 0x70, 0x7b, 0x6a, 0x54,
760 0xda, 0xae, 0x75, 0x30, 0x46, 0x08, 0x42, 0xe2,
761 0x0e, 0x37, 0xed, 0x26, 0x5c, 0xee, 0xe9, 0xa4,
762 0x3e, 0x89, 0x24, 0xaa,
786 0x53, 0x04, 0x8e, 0x26, 0x81, 0x94, 0x1e, 0xf9,
787 0x9b, 0x2e, 0x29, 0xb7, 0x6b, 0x4c, 0x7d, 0xab,
788 0xe4, 0xc2, 0xd0, 0xc6, 0x34, 0xfc, 0x6d, 0x46,
789 0xe0, 0xe2, 0xf1, 0x31, 0x07, 0xe7, 0xaf, 0x23,
831#define MAJ( x, y, z ) ((((z) | (y)) & (x) ) | ((z) & (y)))
832#define CH( x, y, z ) ((((z) ^ (y)) & (x)) ^ (z))
843#define CSIGMA0( x ) (ROR64((ROR64((x), 6) ^ ROR64((x), 11) ^ (x)), 28))
844#define CSIGMA1( x ) (ROR64((ROR64((x), 4) ^ ROR64((x), 27) ^ (x)), 14))
845#define LSIGMA0( x ) (ROR64((x) ^ ROR64((x), 7), 1) ^ ((x)>> 7))
846#define LSIGMA1( x ) (ROR64((x) ^ ROR64((x), 42), 19) ^ ((x)>> 6))
875#define CROUND( a, b, c, d, e, f, g, h, r, r16 ) {;\
877 h += CSIGMA1(e) + CH(e, f, g) + SymCryptSha512K[r] + Wt;\
879 h += CSIGMA0(a) + MAJ(a, b, c);\
886#define IROUND( a, b, c, d, e, f, g, h, r ) {\
887 Wt = SYMCRYPT_LOAD_MSBFIRST64( &pbData[ 8*r ] );\
888 CROUND( a, b, c, d, e, f, g, h, r, r);\
895#define FROUND( a, b, c, d, e, f, g, h, r, r16 ) { \
896 Wt = LSIGMA1( W[(r16-2) & 15] ) + W[(r16-7) & 15] + \
897 LSIGMA0( W[(r16-15) & 15]) + W[r16 & 15]; \
898 CROUND( a, b, c, d, e, f, g, h, r, r16 ); \
971 pChain->H[0] =
A + pChain->H[0];
972 pChain->H[1] =
B + pChain->H[1];
973 pChain->H[2] =
C + pChain->H[2];
974 pChain->H[3] =
D + pChain->H[3];
975 pChain->H[4] = E + pChain->H[4];
976 pChain->H[5] =
F + pChain->H[5];
977 pChain->H[6] =
G + pChain->H[6];
978 pChain->H[7] =
H + pChain->H[7];
1025 ha[7] = pChain->H[0];
buf[3] = ha[7];
1026 ha[6] = pChain->H[1];
buf[2] = ha[6];
1027 ha[5] = pChain->H[2];
buf[1] = ha[5];
1028 ha[4] = pChain->H[3];
buf[0] = ha[4];
1029 ha[3] = pChain->H[4];
1030 ha[2] = pChain->H[5];
1031 ha[1] = pChain->H[6];
1032 ha[0] = pChain->H[7];
1040 for(
r=0;
r<16;
r+= 2 )
1052 for(
r=16;
r<80;
r+= 2 )
1062 #define EXPAND( a, b, c, d, r ) \
1064 b = d + LSIGMA1( b ) + W[r-7] + LSIGMA0( c ); \
1078 for(
r=0;
r<80;
r += 4 )
1090 #define DO_ROUND( a, b, c, d, t, r ) \
1091 t = W[r] + CSIGMA1( W[r-5] ) + W[r-8] + CH( W[r-5], W[r-6], W[r-7] ) + SymCryptSha512K[r]; \
1093 d = t + CSIGMA0( a ) + MAJ( c, b, a );
1115 pChain->H[0] = ha[7];
1116 pChain->H[1] = ha[6];
1117 pChain->H[2] = ha[5];
1118 pChain->H[3] = ha[4];
1119 pChain->H[4] = ha[3];
1120 pChain->H[5] = ha[2];
1121 pChain->H[6] = ha[1];
1122 pChain->H[7] = ha[0];
1158 ha[7] = pChain->H[0];
1159 ha[6] = pChain->H[1];
1160 ha[5] = pChain->H[2];
1161 ha[4] = pChain->H[3];
1162 ha[3] = pChain->H[4];
1163 ha[2] = pChain->H[5];
1164 ha[1] = pChain->H[6];
1165 ha[0] = pChain->H[7];
1173 for(
r=0;
r<16;
r+= 2 )
1185 for(
r=16;
r<80;
r+= 2 )
1195 #define EXPAND( a, b, c, d, r ) \
1197 b = d + LSIGMA1( b ) + W[r-7] + LSIGMA0( c ); \
1215 for(
r=0;
r<80;
r += 8 )
1226 #define DO_ROUND( a, b, c, d, e, f, g, h, r ) \
1227 h += W[r] + CSIGMA1( e ) + CH( e, f, g ) + SymCryptSha512K[r]; \
1229 h += CSIGMA0( a ) + MAJ( c, b, a );
1255 pChain->H[0] = ha[7];
1256 pChain->H[1] = ha[6];
1257 pChain->H[2] = ha[5];
1258 pChain->H[3] = ha[4];
1259 pChain->H[4] = ha[3];
1260 pChain->H[5] = ha[2];
1261 pChain->H[6] = ha[1];
1262 pChain->H[7] = ha[0];
1297#pragma clang attribute push (__attribute__((target("ssse3"))), apply_to=function)
1299#pragma GCC push_options
1300#pragma GCC target("ssse3")
1304#define XMMADD( _a, _b ) _mm_add_epi64((_a), (_b))
1305#define XMMAND( _a, _b ) _mm_and_si128((_a), (_b))
1306#define XMMOR( _a, _b ) _mm_or_si128((_a), (_b))
1307#define XMMROR( _a, _n ) _mm_xor_si128( _mm_slli_epi64( (_a), 64-(_n)), _mm_srli_epi64( (_a), (_n)) )
1308#define XMMSHR( _a, _n ) _mm_srli_epi64((_a), (_n))
1309#define XMMXOR( _a, _b ) _mm_xor_si128((_a), (_b))
1310#define XMMSTORE_UINT64( _a, _addr ) _mm_storel_epi64((__m128i*)(_addr), (_a))
1312#define XMMMAJ( x, y, z ) XMMOR( XMMAND( XMMOR( (z), (y)), (x)), XMMAND( (z), (y) ) )
1313#define XMMCH( x, y, z ) XMMXOR( XMMAND( XMMXOR( (z), (y) ), (x)), (z))
1314#define XMMCSIGMA0( x ) XMMXOR( XMMXOR( XMMROR((x), 28), XMMROR((x), 34)), XMMROR((x), 39))
1315#define XMMCSIGMA1( x ) XMMXOR( XMMXOR( XMMROR((x), 14), XMMROR((x), 18)), XMMROR((x), 41))
1316#define XMMLSIGMA0( x ) XMMXOR( XMMXOR( XMMROR((x), 1), XMMROR((x), 8)), XMMSHR((x), 7))
1317#define XMMLSIGMA1( x ) XMMXOR( XMMXOR( XMMROR((x), 19), XMMROR((x), 61)), XMMSHR((x), 6))
1324#define XMMCROUND( r16, r ) {;\
1325 ah[r16 & 7] = XMMADD( XMMADD( XMMADD( ah[r16 & 7], XMMCSIGMA1(ah[(r16+3)&7]) ), XMMCH(ah[(r16+3)&7], ah[(r16+2)&7], ah[(r16+1)&7]) ), Wt );\
1326 ah[(r16+4)&7] = XMMADD( ah[(r16+4)&7], ah[r16 &7] );\
1327 ah[r16 & 7] = XMMADD( XMMADD( ah[r16 & 7], XMMCSIGMA0(ah[(r16+7)&7])), XMMMAJ(ah[(r16+7)&7], ah[(r16+6)&7], ah[(r16+5)&7]) );\
1330#pragma warning( disable: 4127 )
1336#define XMMIROUND( r ) {\
1339 Wt = _mm_loadu_si128( (__m128i *)&pbData[ 8*r ] ); \
1340 Wt = _mm_shuffle_epi8( Wt, BYTE_REVERSE_64 ); \
1342 Wt = XMMADD( Wt, _mm_load_si128( (__m128i *)&SymCryptSha512K[r] ) ); \
1343 Ws = _mm_srli_si128( Wt, 8 ); \
1357#define XMMFROUND(r16, rb) { \
1358 if( (r16 & 1) == 0 ) \
1360 Wt = XMMADD( XMMADD( XMMADD( XMMLSIGMA1( W[((r16 - 2)&15)/2] ), \
1361 _mm_alignr_epi8( W[((r16 - 6)&15)/2], W[((r16 - 7)&15)/2], 8 ) ), \
1362 XMMLSIGMA0( _mm_alignr_epi8( W[((r16 - 14)&15)/2], W[((r16 - 15)&15)/2], 8 ) ) ), \
1363 W[((r16 - 16)&15)/2] ); \
1365 Ws = _mm_load_si128( (__m128i *)&SymCryptSha512K[r16 + rb] );\
1366 Wt = XMMADD( Ws , Wt );\
1367 Ws = _mm_srli_si128( Wt, 8 );\
1371 XMMCROUND( r16, r16+rb ); \
1387 const __m128i BYTE_REVERSE_64 =
_mm_set_epi8( 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7 );
1390 feedf[7] = ah[7] = Wt;
1393 feedf[5] = ah[5] = Wt;
1396 feedf[3] = ah[3] = Wt;
1399 feedf[1] = ah[1] = Wt;
1427 XMMFROUND( 0,
round );
1428 XMMFROUND( 1,
round );
1429 XMMFROUND( 2,
round );
1430 XMMFROUND( 3,
round );
1431 XMMFROUND( 4,
round );
1432 XMMFROUND( 5,
round );
1433 XMMFROUND( 6,
round );
1434 XMMFROUND( 7,
round );
1435 XMMFROUND( 8,
round );
1436 XMMFROUND( 9,
round );
1437 XMMFROUND( 10,
round );
1438 XMMFROUND( 11,
round );
1439 XMMFROUND( 12,
round );
1440 XMMFROUND( 13,
round );
1441 XMMFROUND( 14,
round );
1442 XMMFROUND( 15,
round );
1445 feedf[0] = ah[0] = XMMADD( ah[0], feedf[0] );
1446 feedf[1] = ah[1] = XMMADD( ah[1], feedf[1] );
1447 feedf[2] = ah[2] = XMMADD( ah[2], feedf[2] );
1448 feedf[3] = ah[3] = XMMADD( ah[3], feedf[3] );
1449 feedf[4] = ah[4] = XMMADD( ah[4], feedf[4] );
1450 feedf[5] = ah[5] = XMMADD( ah[5], feedf[5] );
1451 feedf[6] = ah[6] = XMMADD( ah[6], feedf[6] );
1452 feedf[7] = ah[7] = XMMADD( ah[7], feedf[7] );
1459 XMMSTORE_UINT64( ah[7], &(pChain->H[0]) );
1460 XMMSTORE_UINT64( ah[6], &(pChain->H[1]) );
1461 XMMSTORE_UINT64( ah[5], &(pChain->H[2]) );
1462 XMMSTORE_UINT64( ah[4], &(pChain->H[3]) );
1463 XMMSTORE_UINT64( ah[3], &(pChain->H[4]) );
1464 XMMSTORE_UINT64( ah[2], &(pChain->H[5]) );
1465 XMMSTORE_UINT64( ah[1], &(pChain->H[6]) );
1466 XMMSTORE_UINT64( ah[0], &(pChain->H[7]) );
1481#pragma clang attribute pop
1483#pragma GCC pop_options
1496#define ROR( _a, _n ) vorr_u64( vshl_n_u64( _a, 64 - _n ), vshr_n_u64( _a, _n ) )
1497#define ADD( x, y ) vadd_u64( (x), (y) )
1499#define MAJ( x, y, z ) vorr_u64( vand_u64( vorr_u64( (z), (y)), (x)), vand_u64( (z), (y) ) )
1500#define CH( x, y, z ) veor_u64( vand_u64( veor_u64( (z), (y) ), (x)), (z))
1501#define CSIGMA0( x ) veor_u64( veor_u64( ROR((x), 28), ROR((x), 34)), ROR((x), 39))
1502#define CSIGMA1( x ) veor_u64( veor_u64( ROR((x), 14), ROR((x), 18)), ROR((x), 41))
1503#define LSIGMA0( x ) veor_u64( veor_u64( ROR((x), 1), ROR((x), 8)), vshr_n_u64((x), 7))
1504#define LSIGMA1( x ) veor_u64( veor_u64( ROR((x), 19), ROR((x), 61)), vshr_n_u64((x), 6))
1509#define CROUND( a, b, c, d, e, f, g, h, r, r16 ) {\
1511 h = ADD( h, ADD( ADD( ADD( CSIGMA1(e), CH(e, f, g)), *(__n64 *)&SymCryptSha512K[r]), Wt ));\
1513 h = ADD( h, ADD( CSIGMA0(a), MAJ(a, b, c)));\
1520#define IROUND( a, b, c, d, e, f, g, h, r ) {\
1521 Wt = vmov_n_u64( SYMCRYPT_LOAD_MSBFIRST64( &pbData[ 8*r ] ) );\
1522 CROUND( a, b, c, d, e, f, g, h, r, r);\
1529#define FROUND( a, b, c, d, e, f, g, h, r, r16 ) { \
1530 Wt = ADD( ADD( LSIGMA1( W[(r16-2) & 15] ), LSIGMA0( W[(r16-15) & 15])) , ADD( W[(r16-7) & 15], W[r16 & 15])); \
1531 CROUND( a, b, c, d, e, f, g, h, r, r16 ); \
1540SymCryptSha512AppendBlocks_neon(
1550 __n64 * pH = (__n64 *) &pChain->H[0];
1604 pH[0] =
A = ADD(
A, pH[0] );
1605 pH[1] =
B = ADD(
B, pH[1] );
1606 pH[2] =
C = ADD(
C, pH[2] );
1607 pH[3] =
D = ADD(
D, pH[3] );
1608 pH[4] = E = ADD( E, pH[4] );
1609 pH[5] =
F = ADD(
F, pH[5] );
1610 pH[6] =
G = ADD(
G, pH[6] );
1611 pH[7] =
H = ADD(
H, pH[7] );
1649#if SYMCRYPT_CPU_AMD64
1679#elif SYMCRYPT_CPU_ARM
1683 SymCryptSha512AppendBlocks_neon( pChain,
pbData,
cbData, pcbRemaining );
1690#elif SYMCRYPT_CPU_X86
1692 SYMCRYPT_EXTENDED_SAVE_DATA
SaveData;
COMPILER_DEPENDENT_UINT64 UINT64
#define G(r, i, a, b, c, d)
VOID SaveData(HWND hwndDlg)
static cab_ULONG checksum(const cab_UBYTE *data, cab_UWORD bytes, cab_ULONG csum)
static void cleanup(void)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
__m128i _mm_set_epi8(char b15, char b14, char b13, char b12, char b11, char b10, char b9, char b8, char b7, char b6, char b5, char b4, char b3, char b2, char b1, char b0)
__m128i _mm_srli_si128(__m128i a, int imm)
__m128i _mm_loadu_si128(__m128i_u const *p)
GLuint GLuint GLsizei GLenum type
GLdouble GLdouble GLdouble r
GLenum GLuint GLenum GLsizei const GLchar * buf
#define memcpy(s1, s2, n)
#define _In_reads_bytes_(s)
#define _Out_writes_bytes_(s)
#define SYMCRYPT_BLOB_MAGIC
FORCEINLINE VOID SYMCRYPT_CALL SymCryptMsbFirstToUint64(_In_reads_(8 *cuResult) PCBYTE pbData, _Out_writes_(cuResult) PUINT64 puResult, SIZE_T cuResult)
@ SymCryptBlobTypeSha512_224State
@ SymCryptBlobTypeSha512_256State
@ SymCryptBlobTypeSha384State
@ SymCryptBlobTypeSha512State
VOID SYMCRYPT_CALL SymCryptInjectError(PBYTE pbData, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptSha512AppendBlocks_xmm(_Inout_ SYMCRYPT_SHA512_CHAINING_STATE *pChain, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_ SIZE_T *pcbRemaining)
const BYTE SymCryptTestMsg3[3]
FORCEINLINE VOID SYMCRYPT_CALL SymCryptUint64ToMsbFirst(_In_reads_(cuData) PCUINT64 puData, _Out_writes_(8 *cuData) PBYTE pbResult, SIZE_T cuData)
const PCSYMCRYPT_HASH SymCryptSha512_256Algorithm
VOID SYMCRYPT_CALL SymCryptSha512AppendBlocks(_Inout_ SYMCRYPT_SHA512_CHAINING_STATE *pChain, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_ SIZE_T *pcbRemaining)
VOID SYMCRYPT_CALL SymCryptSha512_224StateExport(_In_ PCSYMCRYPT_SHA512_224_STATE pState, _Out_writes_bytes_(SYMCRYPT_SHA512_224_STATE_EXPORT_SIZE) PBYTE pbBlob)
const BYTE SymCryptSha384KATAnswer[48]
VOID SYMCRYPT_CALL SymCryptSha384StateExport(_In_ PCSYMCRYPT_SHA384_STATE pState, _Out_writes_bytes_(SYMCRYPT_SHA384_STATE_EXPORT_SIZE) PBYTE pbBlob)
VOID SYMCRYPT_CALL SymCryptSha384Selftest(void)
VOID SYMCRYPT_CALL SymCryptSha512AppendBlocks_ull2(_Inout_ SYMCRYPT_SHA512_CHAINING_STATE *pChain, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_ SIZE_T *pcbRemaining)
VOID SYMCRYPT_CALL SymCryptSha512StateExportCore(_In_ PCSYMCRYPT_SHA512_STATE pState, _Out_writes_bytes_(SYMCRYPT_SHA512_STATE_EXPORT_SIZE) PBYTE pbBlob, _In_ UINT32 type)
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptSha384Result(_Inout_ PSYMCRYPT_SHA384_STATE pState, _Out_writes_(SYMCRYPT_SHA384_RESULT_SIZE) PBYTE pbResult)
const SYMCRYPT_HASH SymCryptSha512_256Algorithm_default
VOID SYMCRYPT_CALL SymCryptSha512AppendBlocks_ull(_Inout_ SYMCRYPT_SHA512_CHAINING_STATE *pChain, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_ SIZE_T *pcbRemaining)
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptSha384Append(_Inout_ PSYMCRYPT_SHA384_STATE pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
const UINT64 SymCryptSha512InitialState[8]
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptSha512Init(_Out_ PSYMCRYPT_SHA512_STATE pState)
const SYMCRYPT_HASH SymCryptSha512Algorithm_default
const UINT64 SymCryptSha384InitialState[8]
const BYTE SymCryptSha512_224KATAnswer[28]
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptSha384StateImport(_Out_ PSYMCRYPT_SHA384_STATE pState, _In_reads_bytes_(SYMCRYPT_SHA384_STATE_EXPORT_SIZE) PCBYTE pbBlob)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptSha512_256StateImport(_Out_ PSYMCRYPT_SHA512_256_STATE pState, _In_reads_bytes_(SYMCRYPT_SHA512_256_STATE_EXPORT_SIZE) PCBYTE pbBlob)
VOID SYMCRYPT_CALL SymCryptSha512_256StateExport(_In_ PCSYMCRYPT_SHA512_256_STATE pState, _Out_writes_bytes_(SYMCRYPT_SHA512_256_STATE_EXPORT_SIZE) PBYTE pbBlob)
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptSha512_256Init(_Out_ PSYMCRYPT_SHA512_256_STATE pState)
VOID SYMCRYPT_CALL SymCryptSha512StateExport(_In_ PCSYMCRYPT_SHA512_STATE pState, _Out_writes_bytes_(SYMCRYPT_SHA512_STATE_EXPORT_SIZE) PBYTE pbBlob)
const UINT64 SymCryptSha512_224InitialState[8]
const BYTE SymCryptSha512KATAnswer[64]
#define DO_ROUND(a, b, c, d, t, r)
const PCSYMCRYPT_HASH SymCryptSha512_224Algorithm
VOID SYMCRYPT_CALL SymCryptSha512_256Selftest(void)
VOID SYMCRYPT_CALL SymCryptSha512_224Selftest(void)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptSha512_224StateImport(_Out_ PSYMCRYPT_SHA512_224_STATE pState, _In_reads_bytes_(SYMCRYPT_SHA512_224_STATE_EXPORT_SIZE) PCBYTE pbBlob)
#define EXPAND(a, b, c, d, r)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptSha512StateImportCore(_Out_ PSYMCRYPT_SHA512_STATE pState, _In_reads_bytes_(SYMCRYPT_SHA512_STATE_EXPORT_SIZE) PCBYTE pbBlob, _In_ UINT32 type)
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptSha384Init(_Out_ PSYMCRYPT_SHA384_STATE pState)
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptSha512_224Result(_Inout_ PSYMCRYPT_SHA512_224_STATE pState, _Out_writes_(SYMCRYPT_SHA512_224_RESULT_SIZE) PBYTE pbResult)
const UINT64 SymCryptSha512_256InitialState[8]
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptSha512_224Append(_Inout_ PSYMCRYPT_SHA512_224_STATE pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
const SYMCRYPT_HASH SymCryptSha384Algorithm_default
const PCSYMCRYPT_HASH SymCryptSha512Algorithm
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptSha512_224Init(_Out_ PSYMCRYPT_SHA512_224_STATE pState)
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptSha512Append(_Inout_ PSYMCRYPT_SHA512_STATE pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptSha512StateImport(_Out_ PSYMCRYPT_SHA512_STATE pState, _In_reads_bytes_(SYMCRYPT_SHA512_STATE_EXPORT_SIZE) PCBYTE pbBlob)
const PCSYMCRYPT_HASH SymCryptSha384Algorithm
VOID SYMCRYPT_CALL SymCryptSha512AppendBlocks_ull3(_Inout_ SYMCRYPT_SHA512_CHAINING_STATE *pChain, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_ SIZE_T *pcbRemaining)
#define IROUND(a, b, c, d, e, f, g, h, r)
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptSha512_256Result(_Inout_ PSYMCRYPT_SHA512_256_STATE pState, _Out_writes_(SYMCRYPT_SHA512_256_RESULT_SIZE) PBYTE pbResult)
VOID SYMCRYPT_CALL SymCryptSha512Selftest(void)
const BYTE SymCryptSha512_256KATAnswer[32]
const SYMCRYPT_HASH SymCryptSha512_224Algorithm_default
#define FROUND(a, b, c, d, e, f, g, h, r, r16)
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptSha512_256Append(_Inout_ PSYMCRYPT_SHA512_256_STATE pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptSha512Result(_Inout_ PSYMCRYPT_SHA512_STATE pState, _Out_writes_(SYMCRYPT_SHA512_RESULT_SIZE) PBYTE pbResult)
static const BYTE pbResult[]
#define SYMCRYPT_ASSERT(_x)
#define SYMCRYPT_SHA512_256_RESULT_SIZE
VOID SYMCRYPT_CALL SymCryptMarvin32(_In_ PCSYMCRYPT_MARVIN32_EXPANDED_SEED pExpandedSeed, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_writes_(SYMCRYPT_MARVIN32_RESULT_SIZE) PBYTE pbResult)
FORCEINLINE VOID SYMCRYPT_CALL SymCryptWipeKnownSize(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
#define SYMCRYPT_SHA512_224_RESULT_SIZE
VOID SYMCRYPT_CALL SymCryptSha512_224StateCopy(_In_ PCSYMCRYPT_SHA512_224_STATE pSrc, _Out_ PSYMCRYPT_SHA512_224_STATE pDst)
VOID SYMCRYPT_CALL SymCryptWipe(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
_Analysis_noreturn_ VOID SYMCRYPT_CALL SymCryptFatal(UINT32 fatalCode)
#define SYMCRYPT_FORCE_WRITE64(_p, _v)
#define SYMCRYPT_LOAD_MSBFIRST64(p)
VOID SYMCRYPT_CALL SymCryptSha512_256(_In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_writes_(SYMCRYPT_SHA512_256_RESULT_SIZE) PBYTE pbResult)
#define SYMCRYPT_SHA512_224_INPUT_BLOCK_SIZE
#define SYMCRYPT_SHA384_INPUT_BLOCK_SIZE
VOID SYMCRYPT_CALL SymCryptSha512(_In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_writes_(SYMCRYPT_SHA512_RESULT_SIZE) PBYTE pbResult)
#define SYMCRYPT_SHA512_INPUT_BLOCK_SIZE
#define SYMCRYPT_SHA384_RESULT_SIZE
#define SYMCRYPT_SHA512_RESULT_SIZE
PCSYMCRYPT_MARVIN32_EXPANDED_SEED const SymCryptMarvin32DefaultSeed
VOID SYMCRYPT_CALL SymCryptSha512StateCopy(_In_ PCSYMCRYPT_SHA512_STATE pSrc, _Out_ PSYMCRYPT_SHA512_STATE pDst)
VOID SYMCRYPT_CALL SymCryptSha384(_In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_writes_(SYMCRYPT_SHA384_RESULT_SIZE) PBYTE pbResult)
VOID SYMCRYPT_CALL SymCryptSha512_256StateCopy(_In_ PCSYMCRYPT_SHA512_256_STATE pSrc, _Out_ PSYMCRYPT_SHA512_256_STATE pDst)
#define SYMCRYPT_STORE_MSBFIRST64(p, v)
VOID SYMCRYPT_CALL SymCryptSha384StateCopy(_In_ PCSYMCRYPT_SHA384_STATE pSrc, _Out_ PSYMCRYPT_SHA384_STATE pDst)
#define SYMCRYPT_SHA512_256_INPUT_BLOCK_SIZE
VOID SYMCRYPT_CALL SymCryptSha512_224(_In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_writes_(SYMCRYPT_SHA512_224_RESULT_SIZE) PBYTE pbResult)
const SYMCRYPT_SHA512_224_STATE * PCSYMCRYPT_SHA512_224_STATE
* PSYMCRYPT_SHA512_256_STATE
SYMCRYPT_SHA512_256_STATE
const SYMCRYPT_SHA512_256_STATE * PCSYMCRYPT_SHA512_256_STATE
struct _SYMCRYPT_HASH SYMCRYPT_HASH
#define SYMCRYPT_FIELD_SIZE(type, field)
const SYMCRYPT_SHA384_STATE * PCSYMCRYPT_SHA384_STATE
#define SYMCRYPT_CPU_FEATURES_PRESENT(x)
#define SYMCRYPT_ALIGN_AT(alignment)
SYMCRYPT_SHA512_CHAINING_STATE
const SYMCRYPT_HASH * PCSYMCRYPT_HASH
PCBYTE PBYTE SIZE_T cbData
#define SYMCRYPT_SET_MAGIC(p)
#define SYMCRYPT_FIELD_OFFSET(type, field)
#define SYMCRYPT_SHA384_STATE_EXPORT_SIZE
SYMCRYPT_SHA512_224_STATE
#define SYMCRYPT_SHA512_224_STATE_EXPORT_SIZE
PSYMCRYPT_COMMON_HASH_STATE pState
* PSYMCRYPT_SHA512_224_STATE
#define SYMCRYPT_SHA512_STATE_EXPORT_SIZE
#define SYMCRYPT_SHA512_256_STATE_EXPORT_SIZE
#define SYMCRYPT_CHECK_MAGIC(p)
const SYMCRYPT_SHA512_STATE * PCSYMCRYPT_SHA512_STATE