Windows Driver: fix "__chkstk" link error in debug build caused by some crypto functions using too much stack space for local variables.

This commit is contained in:
Mounir IDRASSI 2017-05-22 00:41:56 +02:00
parent e484d0caae
commit 7c78c4f4ac
No known key found for this signature in database
GPG Key ID: DD0C382D5FCFB8FC
3 changed files with 14 additions and 4 deletions

View File

@ -80,7 +80,7 @@ void serpent_encrypt_blocks(const unsigned __int8* in, unsigned __int8* out, siz
unsigned __int32 B0, B1, B2, B3;
unsigned __int32* round_key = ((unsigned __int32*) ks) + 8;
size_t i;
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE && (!defined (DEBUG) || !defined (TC_WINDOWS_DRIVER))
if(HasSSE2() && (blocks >= 4))
{
while(blocks >= 4)
@ -159,7 +159,7 @@ void serpent_decrypt_blocks(const unsigned __int8* in, unsigned __int8* out, siz
unsigned __int32 B0, B1, B2, B3;
unsigned __int32* round_key = ((unsigned __int32*) ks) + 8;
size_t i;
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE && (!defined (DEBUG) || !defined (TC_WINDOWS_DRIVER))
if(HasSSE2() && (blocks >= 4))
{
while(blocks >= 4)

View File

@ -218,7 +218,7 @@ typedef SIMD_4x32 SIMD_32;
} while(0);
#if (!defined (DEBUG) || !defined (TC_WINDOWS_DRIVER))
/*
* SIMD Serpent Encryption of 4 blocks in parallel
*/
@ -330,7 +330,7 @@ extern "C" void serpent_simd_decrypt_blocks_4(const unsigned __int8 in[], unsign
B2.store_le(out + 32);
B3.store_le(out + 48);
}
#endif
#undef key_xor
#undef transform
#undef i_transform

View File

@ -498,11 +498,20 @@ const uint_64t k512[80] =
VOID_RETURN sha512_compile(sha512_ctx ctx[1])
{ uint_64t v[8], *p = ctx->wbuf;
uint_32t j;
#if defined (TC_WINDOWS_DRIVER) && defined (DEBUG)
uint_32t i;
#endif
memcpy(v, ctx->hash, 8 * sizeof(uint_64t));
for(j = 0; j < 80; j += 16)
{
#if defined (TC_WINDOWS_DRIVER) && defined (DEBUG)
for (i = 0; i < 16; i++)
{
v_cycle( i, j);
}
#else
v_cycle( 0, j); v_cycle( 1, j);
v_cycle( 2, j); v_cycle( 3, j);
v_cycle( 4, j); v_cycle( 5, j);
@ -511,6 +520,7 @@ VOID_RETURN sha512_compile(sha512_ctx ctx[1])
v_cycle(10, j); v_cycle(11, j);
v_cycle(12, j); v_cycle(13, j);
v_cycle(14, j); v_cycle(15, j);
#endif
}
ctx->hash[0] += v[0]; ctx->hash[1] += v[1];