Add sodium_stackzero()

This commit is contained in:
Frank Denis
2017-11-10 20:48:05 +01:00
parent b9d6139178
commit b93d773f7b
2 changed files with 31 additions and 0 deletions
+3
View File
@@ -21,6 +21,9 @@ extern "C" {
SODIUM_EXPORT
void sodium_memzero(void * const pnt, const size_t len);
SODIUM_EXPORT
void sodium_stackzero(const size_t len);
/*
* WARNING: sodium_memcmp() must be used to verify if two secret keys
* are equal, in constant time.
+28
View File
@@ -21,6 +21,23 @@
# include <unistd.h>
#endif
#if HAVE_ALLOCA_H
# include <alloca.h>
#elif defined __GNUC__
# define alloca __builtin_alloca
#elif defined _AIX
# define alloca __alloca
#elif defined _MSC_VER
# include <malloc.h>
# define alloca _alloca
#else
# include <stddef.h>
# ifdef __cplusplus
extern "C"
# endif
void *alloca (size_t);
#endif
#include "core.h"
#include "randombytes.h"
#include "utils.h"
@@ -103,6 +120,17 @@ sodium_memzero(void *const pnt, const size_t len)
#endif
}
void
sodium_stackzero(const size_t len)
{
#ifdef HAVE_ALLOCA
sodium_memzero(alloca(len), len);
#elif __STDC_VERSION__ >= 199901L
unsigned char fodder[len];
sodium_memzero(fodder, len);
#endif
}
#ifdef HAVE_WEAK_SYMBOLS
__attribute__((weak)) void
_sodium_dummy_symbol_to_prevent_memcmp_lto(const unsigned char *b1,