diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/utils/zero_mem.cpp | 13 |
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 } } |