diff options
Diffstat (limited to 'src/lib/crypt.c')
| -rw-r--r-- | src/lib/crypt.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/lib/crypt.c b/src/lib/crypt.c index fdbae776..38dd9f29 100644 --- a/src/lib/crypt.c +++ b/src/lib/crypt.c @@ -1064,3 +1064,24 @@ void crypt_secure_free(void * ptr, free(ptr); #endif } + +void crypt_secure_clear(void * ptr, + size_t size) +{ + volatile uint8_t * p; + + if (ptr == NULL) + return; + +#ifdef HAVE_OPENSSL + (void) p; + openssl_secure_clear(ptr, size); +#elif defined(HAVE_EXPLICIT_BZERO) + (void) p; + explicit_bzero(ptr, size); +#else /* best effort to avoid optimizing out */ + p = ptr; + while (size-- > 0) + *p++ = 0; +#endif +} |
