aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorJack Lloyd <[email protected]>2020-02-09 11:48:20 -0500
committerJack Lloyd <[email protected]>2020-02-09 11:48:20 -0500
commit4552f66295c8b8c22e9c4a19ac481a7a7157f7b9 (patch)
treef01275efc923087396ddb760b83ef721c027ecf7 /src/lib
parent6080cc155bb2103f1321815261ce16df20bbd102 (diff)
parent81005289c1ca9649292df99dcfb7f62067b5316c (diff)
Merge GH #2261 Remove use of Toolhelp32 library
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/entropy/win32_stats/es_win32.cpp92
-rw-r--r--src/lib/entropy/win32_stats/info.txt6
2 files changed, 16 insertions, 82 deletions
diff --git a/src/lib/entropy/win32_stats/es_win32.cpp b/src/lib/entropy/win32_stats/es_win32.cpp
index 86d1f2caf..3a175bf19 100644
--- a/src/lib/entropy/win32_stats/es_win32.cpp
+++ b/src/lib/entropy/win32_stats/es_win32.cpp
@@ -1,6 +1,5 @@
/*
-* Win32 EntropySource
-* (C) 1999-2009,2016 Jack Lloyd
+* (C) 1999-2009,2016,2020 Jack Lloyd
*
* Botan is released under the Simplified BSD License (see license.txt)
*/
@@ -10,22 +9,11 @@
#define NOMINMAX 1
#define _WINSOCKAPI_ // stop windows.h including winsock.h
#include <windows.h>
-#include <tlhelp32.h>
namespace Botan {
-/**
-* Win32 poll using stats functions including Tooltip32
-*/
size_t Win32_EntropySource::poll(RandomNumberGenerator& rng)
{
- const size_t POLL_TARGET = 128;
- const size_t EST_ENTROPY_HEAP_INFO = 4;
- const size_t EST_ENTROPY_THREAD_INFO = 2;
-
- /*
- First query a bunch of basic statistical stuff
- */
rng.add_entropy_T(::GetTickCount());
rng.add_entropy_T(::GetMessagePos());
rng.add_entropy_T(::GetMessageTime());
@@ -50,72 +38,22 @@ size_t Win32_EntropySource::poll(RandomNumberGenerator& rng)
rng.add_entropy_T(point);
/*
- Now use the Tooltip library to iterate through various objects on
- the system, including processes, threads, and heap objects.
+ Potential other sources to investigate
+
+ GetProductInfo
+ GetComputerNameExA
+ GetSystemFirmwareTable
+ GetVersionExA
+ GetProcessorSystemCycleTime
+ GetProcessHandleCount(GetCurrentProcess())
+ GetThreadTimes(GetCurrentThread())
+ QueryThreadCycleTime
+ QueryIdleProcessorCycleTime
+ QueryUnbiasedInterruptTime
*/
- HANDLE snapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
- size_t collected = 0;
-
-#define TOOLHELP32_ITER(DATA_TYPE, FUNC_FIRST, FUNC_NEXT) \
- if(collected < POLL_TARGET) \
- { \
- DATA_TYPE info; \
- info.dwSize = sizeof(DATA_TYPE); \
- if(FUNC_FIRST(snapshot, &info)) \
- { \
- do \
- { \
- rng.add_entropy_T(info); \
- collected += EST_ENTROPY_THREAD_INFO; \
- if(collected >= POLL_TARGET) \
- break; \
- } while(FUNC_NEXT(snapshot, &info)); \
- } \
- }
-
- TOOLHELP32_ITER(MODULEENTRY32, ::Module32First, ::Module32Next);
- TOOLHELP32_ITER(PROCESSENTRY32, ::Process32First, ::Process32Next);
- TOOLHELP32_ITER(THREADENTRY32, ::Thread32First, ::Thread32Next);
-
-#undef TOOLHELP32_ITER
-
- if(collected < POLL_TARGET)
- {
- HEAPLIST32 heap_list;
- heap_list.dwSize = sizeof(HEAPLIST32);
-
- if(::Heap32ListFirst(snapshot, &heap_list))
- {
- do
- {
- rng.add_entropy_T(heap_list);
-
- HEAPENTRY32 heap_entry;
- heap_entry.dwSize = sizeof(HEAPENTRY32);
- if(::Heap32First(&heap_entry,
- heap_list.th32ProcessID,
- heap_list.th32HeapID))
- {
- do
- {
- rng.add_entropy_T(heap_entry);
- collected += EST_ENTROPY_HEAP_INFO;
- if(collected >= POLL_TARGET)
- break;
- } while(::Heap32Next(&heap_entry));
- }
-
- if(collected >= POLL_TARGET)
- break;
-
- } while(::Heap32ListNext(snapshot, &heap_list));
- }
- }
-
- ::CloseHandle(snapshot);
-
- return collected;
+ // We assume all of the above is basically junk
+ return 0;
}
}
diff --git a/src/lib/entropy/win32_stats/info.txt b/src/lib/entropy/win32_stats/info.txt
index 065d48cda..1123403b5 100644
--- a/src/lib/entropy/win32_stats/info.txt
+++ b/src/lib/entropy/win32_stats/info.txt
@@ -1,11 +1,7 @@
<defines>
-ENTROPY_SRC_WIN32 -> 20131128
+ENTROPY_SRC_WIN32 -> 20200209
</defines>
-<warning>
-This module can cause false positives with antivirus systems
-</warning>
-
<header:internal>
es_win32.h
</header:internal>