mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-12-02 04:54:14 +01:00
815e9a21a3
Remove cryptography related files and a few utility header files that are shared between Mbed TLS and Mbed Crypto. Mbed TLS will use an Mbed Crypto sourced version of each of these header files in order to ease the maintenance burden of both libraries, and to make it easier to keep Mbed TLS and Mbed Crypto in sync. As part of removing cryptography related files, tell Doxygen to source information from the removed the headers, so that it will consider them for inclusion within Doxygen output. Later, as part of the Mbed TLS 3.0 (API breaking version), we'll restructure the organization of the 3 libraries a bit, to move some things out of Mbed Crypto that don't belong there. Candidates of not belonging in Mbed Crypto, but are in libmbedcrypto.so for legacy reasons: - asn1.h - asn1write.h - base64.h - memory_buffer_alloc.h - platform.h - platform_time.h - platform_util.h - threading.h - timing.h - version.h
152 lines
5.0 KiB
C
152 lines
5.0 KiB
C
/**
|
|
* \file memory_buffer_alloc.h
|
|
*
|
|
* \brief Buffer-based memory allocator
|
|
*/
|
|
/*
|
|
* Copyright (C) 2006-2015, ARM Limited, All Rights Reserved
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
* not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
* This file is part of mbed TLS (https://tls.mbed.org)
|
|
*/
|
|
#ifndef MBEDTLS_MEMORY_BUFFER_ALLOC_H
|
|
#define MBEDTLS_MEMORY_BUFFER_ALLOC_H
|
|
|
|
#if !defined(MBEDTLS_CONFIG_FILE)
|
|
#include "mbedtls/config.h"
|
|
#else
|
|
#include MBEDTLS_CONFIG_FILE
|
|
#endif
|
|
|
|
#include <stddef.h>
|
|
|
|
/**
|
|
* \name SECTION: Module settings
|
|
*
|
|
* The configuration options you can set for this module are in this section.
|
|
* Either change them in config.h or define them on the compiler command line.
|
|
* \{
|
|
*/
|
|
|
|
#if !defined(MBEDTLS_MEMORY_ALIGN_MULTIPLE)
|
|
#define MBEDTLS_MEMORY_ALIGN_MULTIPLE 4 /**< Align on multiples of this value */
|
|
#endif
|
|
|
|
/* \} name SECTION: Module settings */
|
|
|
|
#define MBEDTLS_MEMORY_VERIFY_NONE 0
|
|
#define MBEDTLS_MEMORY_VERIFY_ALLOC (1 << 0)
|
|
#define MBEDTLS_MEMORY_VERIFY_FREE (1 << 1)
|
|
#define MBEDTLS_MEMORY_VERIFY_ALWAYS (MBEDTLS_MEMORY_VERIFY_ALLOC | MBEDTLS_MEMORY_VERIFY_FREE)
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* \brief Initialize use of stack-based memory allocator.
|
|
* The stack-based allocator does memory management inside the
|
|
* presented buffer and does not call calloc() and free().
|
|
* It sets the global mbedtls_calloc() and mbedtls_free() pointers
|
|
* to its own functions.
|
|
* (Provided mbedtls_calloc() and mbedtls_free() are thread-safe if
|
|
* MBEDTLS_THREADING_C is defined)
|
|
*
|
|
* \note This code is not optimized and provides a straight-forward
|
|
* implementation of a stack-based memory allocator.
|
|
*
|
|
* \param buf buffer to use as heap
|
|
* \param len size of the buffer
|
|
*/
|
|
void mbedtls_memory_buffer_alloc_init( unsigned char *buf, size_t len );
|
|
|
|
/**
|
|
* \brief Free the mutex for thread-safety and clear remaining memory
|
|
*/
|
|
void mbedtls_memory_buffer_alloc_free( void );
|
|
|
|
/**
|
|
* \brief Determine when the allocator should automatically verify the state
|
|
* of the entire chain of headers / meta-data.
|
|
* (Default: MBEDTLS_MEMORY_VERIFY_NONE)
|
|
*
|
|
* \param verify One of MBEDTLS_MEMORY_VERIFY_NONE, MBEDTLS_MEMORY_VERIFY_ALLOC,
|
|
* MBEDTLS_MEMORY_VERIFY_FREE or MBEDTLS_MEMORY_VERIFY_ALWAYS
|
|
*/
|
|
void mbedtls_memory_buffer_set_verify( int verify );
|
|
|
|
#if defined(MBEDTLS_MEMORY_DEBUG)
|
|
/**
|
|
* \brief Print out the status of the allocated memory (primarily for use
|
|
* after a program should have de-allocated all memory)
|
|
* Prints out a list of 'still allocated' blocks and their stack
|
|
* trace if MBEDTLS_MEMORY_BACKTRACE is defined.
|
|
*/
|
|
void mbedtls_memory_buffer_alloc_status( void );
|
|
|
|
/**
|
|
* \brief Get the peak heap usage so far
|
|
*
|
|
* \param max_used Peak number of bytes in use or committed. This
|
|
* includes bytes in allocated blocks too small to split
|
|
* into smaller blocks but larger than the requested size.
|
|
* \param max_blocks Peak number of blocks in use, including free and used
|
|
*/
|
|
void mbedtls_memory_buffer_alloc_max_get( size_t *max_used, size_t *max_blocks );
|
|
|
|
/**
|
|
* \brief Reset peak statistics
|
|
*/
|
|
void mbedtls_memory_buffer_alloc_max_reset( void );
|
|
|
|
/**
|
|
* \brief Get the current heap usage
|
|
*
|
|
* \param cur_used Current number of bytes in use or committed. This
|
|
* includes bytes in allocated blocks too small to split
|
|
* into smaller blocks but larger than the requested size.
|
|
* \param cur_blocks Current number of blocks in use, including free and used
|
|
*/
|
|
void mbedtls_memory_buffer_alloc_cur_get( size_t *cur_used, size_t *cur_blocks );
|
|
#endif /* MBEDTLS_MEMORY_DEBUG */
|
|
|
|
/**
|
|
* \brief Verifies that all headers in the memory buffer are correct
|
|
* and contain sane values. Helps debug buffer-overflow errors.
|
|
*
|
|
* Prints out first failure if MBEDTLS_MEMORY_DEBUG is defined.
|
|
* Prints out full header information if MBEDTLS_MEMORY_DEBUG
|
|
* is defined. (Includes stack trace information for each block if
|
|
* MBEDTLS_MEMORY_BACKTRACE is defined as well).
|
|
*
|
|
* \return 0 if verified, 1 otherwise
|
|
*/
|
|
int mbedtls_memory_buffer_alloc_verify( void );
|
|
|
|
#if defined(MBEDTLS_SELF_TEST)
|
|
/**
|
|
* \brief Checkup routine
|
|
*
|
|
* \return 0 if successful, or 1 if a test failed
|
|
*/
|
|
int mbedtls_memory_buffer_alloc_self_test( int verbose );
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* memory_buffer_alloc.h */
|