11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
18#if defined(PROMEKI_PLATFORM_WINDOWS)
21#elif defined(PROMEKI_PLATFORM_POSIX)
26PROMEKI_NAMESPACE_BEGIN
42inline void secureZero(
void *ptr,
size_t size) {
43 if (ptr ==
nullptr || size == 0)
return;
44#if defined(PROMEKI_PLATFORM_WINDOWS)
45 SecureZeroMemory(ptr, size);
46#elif defined(PROMEKI_LIBC_GLIBC) && \
47 (PROMEKI_LIBC_GLIBC_VERSION_MAJOR > 2 || \
48 (PROMEKI_LIBC_GLIBC_VERSION_MAJOR == 2 && PROMEKI_LIBC_GLIBC_VERSION_MINOR >= 25))
49 explicit_bzero(ptr, size);
50#elif defined(PROMEKI_PLATFORM_BSD)
51 explicit_bzero(ptr, size);
53 volatile unsigned char *p =
static_cast<volatile unsigned char *
>(ptr);
54 while (size--) *p++ = 0;
71Error secureLock(
void *ptr,
size_t size);
85Error secureUnlock(
void *ptr,
size_t size);