NCBI C++ ToolKit
Macros | Functions | Variables
platform_util.c File Reference
#include "common.h"
#include "mbedtls/platform_util.h"
#include "mbedtls/platform.h"
#include "mbedtls/threading.h"
#include <stddef.h>
#include <string.h>
+ Include dependency graph for platform_util.c:

Go to the source code of this file.

Go to the SVN repository for this file.

Macros

#define _POSIX_C_SOURCE   200112L
 
#define _GNU_SOURCE
 
#define __STDC_WANT_LIB_EXT1__   1 /* Ask for the C11 gmtime_s() and memset_s() if available */
 

Functions

void mbedtls_platform_zeroize (void *buf, size_t len)
 Securely zeroize a buffer. More...
 
void mbedtls_zeroize_and_free (void *buf, size_t len)
 Securely zeroize a buffer then free it. More...
 

Variables

static void *(*constvolatile memset_func )(void *, int, size_t) = memset
 

Macro Definition Documentation

◆ __STDC_WANT_LIB_EXT1__

#define __STDC_WANT_LIB_EXT1__   1 /* Ask for the C11 gmtime_s() and memset_s() if available */

Definition at line 32 of file platform_util.c.

◆ _GNU_SOURCE

#define _GNU_SOURCE

Definition at line 20 of file platform_util.c.

◆ _POSIX_C_SOURCE

#define _POSIX_C_SOURCE   200112L

Definition at line 15 of file platform_util.c.

Function Documentation

◆ mbedtls_platform_zeroize()

void mbedtls_platform_zeroize ( void *  buf,
size_t  len 
)

Securely zeroize a buffer.

The function is meant to wipe the data contained in a buffer so that it can no longer be recovered even if the program memory is later compromised. Call this function on sensitive data stored on the stack before returning from a function, and on sensitive data stored on the heap before freeing the heap object.

It is extremely difficult to guarantee that calls to mbedtls_platform_zeroize() are not removed by aggressive compiler optimizations in a portable way. For this reason, Mbed TLS provides the configuration option MBEDTLS_PLATFORM_ZEROIZE_ALT, which allows users to configure mbedtls_platform_zeroize() to use a suitable implementation for their platform and needs

Parameters
bufBuffer to be zeroized
lenLength of the buffer in bytes

Definition at line 94 of file platform_util.c.

References buf, len, and memset_func.

Referenced by mbedtls_zeroize_and_free().

◆ mbedtls_zeroize_and_free()

void mbedtls_zeroize_and_free ( void *  buf,
size_t  len 
)

Securely zeroize a buffer then free it.

Similar to making consecutive calls to mbedtls_platform_zeroize() and mbedtls_free(), but has code size savings, and potential for optimisation in the future.

Guaranteed to be a no-op if buf is NULL and len is 0.

Parameters
bufBuffer to be zeroized then freed.
lenLength of the buffer in bytes

Definition at line 139 of file platform_util.c.

References buf, len, mbedtls_free, mbedtls_platform_zeroize(), and NULL.

Variable Documentation

◆ memset_func

void*(*constvolatile memset_func) (void *, int, size_t) ( void *  ,
int  ,
size_t   
) = memset
static

Definition at line 91 of file platform_util.c.

Referenced by mbedtls_platform_zeroize().

Modified on Tue Jun 25 13:35:58 2024 by modify_doxy.py rev. 669887