From 3c18d54d1e3f10462ccdb2d44f220db1ee021477 Mon Sep 17 00:00:00 2001 From: Mounir IDRASSI Date: Wed, 30 Jan 2019 11:48:07 +0100 Subject: Windows driver: replace SHA512 by RIPEMD160 when calculating internal hash of master key to avoid calling KeSaveFloatingPointState/KeSaveExtendedProcessorState since SHA512 implementation uses SSE2/AVX and RIPEMD160 is pure C --- src/Common/Volumes.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/Common/Volumes.c') diff --git a/src/Common/Volumes.c b/src/Common/Volumes.c index 111a2287..53734abb 100644 --- a/src/Common/Volumes.c +++ b/src/Common/Volumes.c @@ -529,11 +529,12 @@ KeyReady: ; memcpy (keyInfo.master_keydata, header + HEADER_MASTER_KEYDATA_OFFSET, MASTER_KEYDATA_SIZE); #ifdef TC_WINDOWS_DRIVER { - sha512_ctx sha2; - sha512_begin (&sha2); - sha512_hash (keyInfo.master_keydata, MASTER_KEYDATA_SIZE, &sha2); - sha512_hash (header, sizeof(header), &sha2); - sha512_end (cryptoInfo->master_keydata_hash, &sha2); + RMD160_CTX ctx; + RMD160Init (&ctx); + RMD160Update (&ctx, keyInfo.master_keydata, MASTER_KEYDATA_SIZE); + RMD160Update (&ctx, header, sizeof(header)); + RMD160Final (cryptoInfo->master_keydata_hash, &ctx); + burn(&ctx, sizeof (ctx)); } #else memcpy (cryptoInfo->master_keydata, keyInfo.master_keydata, MASTER_KEYDATA_SIZE); -- cgit v1.2.3