--- truecrypt/common/random.h 2018/04/24 16:45:41 1.1.1.8 +++ truecrypt/common/random.h 2018/04/24 17:02:30 1.1.1.15 @@ -1,28 +1,43 @@ -/* Legal Notice: The source code contained in this file has been derived from - the source code of Encryption for the Masses 2.02a, which is Copyright (c) - 1998-99 Paul Le Roux and which is covered by the 'License Agreement for - Encryption for the Masses'. Modifications and additions to that source code - contained in this file are Copyright (c) 2004-2006 TrueCrypt Foundation and - Copyright (c) 2004 TrueCrypt Team, and are covered by TrueCrypt License 2.1 - the full text of which is contained in the file License.txt included in - TrueCrypt binary and source code distribution archives. */ +/* + Legal Notice: Some portions of the source code contained in this file were + derived from the source code of Encryption for the Masses 2.02a, which is + Copyright (c) 1998-2000 Paul Le Roux and which is governed by the 'License + Agreement for Encryption for the Masses'. Modifications and additions to + the original source code (contained in this file) and all other portions of + this file are Copyright (c) 2003-2009 TrueCrypt Foundation and are governed + by the TrueCrypt License 2.7 the full text of which is contained in the + file License.txt included in TrueCrypt binary and source code distribution + packages. */ #include "Crypto.h" +#ifdef __cplusplus +extern "C" { +#endif + /* RNG defines & pool pointers */ -#define RNG_POOL_SIZE 320 // Must be divisible by the size of the output of each of the implemented hash functions. (in bytes) -#if RNG_POOL_SIZE % SHA1_DIGESTSIZE || RNG_POOL_SIZE % WHIRLPOOL_DIGESTSIZE || RNG_POOL_SIZE % RIPEMD160_DIGESTSIZE +#define RNG_POOL_SIZE 640 // Must be divisible by the size of the output of each of the implemented hash functions. (in bytes) +#if RNG_POOL_SIZE % SHA512_DIGESTSIZE || RNG_POOL_SIZE % WHIRLPOOL_DIGESTSIZE || RNG_POOL_SIZE % RIPEMD160_DIGESTSIZE #error RNG_POOL_SIZE must be divisible by the size of the output of each of the implemented hash functions. #endif #define RANDOMPOOL_ALLOCSIZE RNG_POOL_SIZE +// After every RANDMIX_BYTE_INTERVAL-th byte written to the pool, the pool mixing function is applied to the entire pool +#define RANDMIX_BYTE_INTERVAL 16 + +// FastPoll interval (in milliseconds) +#define FASTPOLL_INTERVAL 500 + void RandAddInt ( unsigned __int32 x ); int Randinit ( void ); -void Randfree ( void ); +void RandStop (BOOL freePool); +BOOL IsRandomNumberGeneratorStarted (); void RandSetHashFunction ( int hash_algo_id ); int RandGetHashFunction (void); +void SetRandomPoolEnrichedByUserStatus (BOOL enriched); +BOOL IsRandomPoolEnrichedByUser (); BOOL Randmix ( void ); void RandaddBuf ( void *buf , int len ); BOOL FastPoll ( void ); @@ -40,3 +55,7 @@ LRESULT CALLBACK KeyboardProc ( int nCod void ThreadSafeThreadFunction ( void *dummy ); #endif + +#ifdef __cplusplus +} +#endif