aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/utils/zero_mem.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/lib/utils/zero_mem.cpp b/src/lib/utils/zero_mem.cpp
index e812ced0c..833b54aca 100644
--- a/src/lib/utils/zero_mem.cpp
+++ b/src/lib/utils/zero_mem.cpp
@@ -7,14 +7,27 @@
#include <botan/mem_ops.h>
+#if defined(BOTAN_TARGET_OS_HAS_RTLSECUREZEROMEMORY)
+ #include <windows.h>
+#elif defined(BOTAN_TARGET_OS_HAS_MEMSET_S)
+ #define __STDC_WANT_LIB_EXT1__ 1
+ #include <string.h>
+#endif
+
namespace Botan {
void zero_mem(void* ptr, size_t n)
{
+#if defined(BOTAN_TARGET_OS_HAS_RTLSECUREZEROMEMORY)
+ ::RtlSecureZeroMemory(ptr, n);
+#elif defined(BOTAN_TARGET_OS_HAS_MEMSET_S)
+ ::memset_s(ptr, n, 0, n);
+#else
volatile byte* p = reinterpret_cast<volatile byte*>(ptr);
for(size_t i = 0; i != n; ++i)
p[i] = 0;
+#endif
}
}