mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-15 00:39:23 +01:00
![Tillmann Karras](/assets/img/avatar_default.png)
PolarSSL has been renamed to "mbed TLS" and version 2.0 dropped backwards compatibility. This commit adds only the necessary files without any modifications, so it doesn't compile yet.
215 lines
6.5 KiB
C
215 lines
6.5 KiB
C
/**
|
|
* \file platform.h
|
|
*
|
|
* \brief mbed TLS Platform abstraction layer
|
|
*
|
|
* 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_PLATFORM_H
|
|
#define MBEDTLS_PLATFORM_H
|
|
|
|
#if !defined(MBEDTLS_CONFIG_FILE)
|
|
#include "config.h"
|
|
#else
|
|
#include MBEDTLS_CONFIG_FILE
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* \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_PLATFORM_NO_STD_FUNCTIONS)
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
|
|
#if defined(_WIN32)
|
|
#define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf /**< Default snprintf to use */
|
|
#else
|
|
#define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf /**< Default snprintf to use */
|
|
#endif
|
|
#endif
|
|
#if !defined(MBEDTLS_PLATFORM_STD_PRINTF)
|
|
#define MBEDTLS_PLATFORM_STD_PRINTF printf /**< Default printf to use */
|
|
#endif
|
|
#if !defined(MBEDTLS_PLATFORM_STD_FPRINTF)
|
|
#define MBEDTLS_PLATFORM_STD_FPRINTF fprintf /**< Default fprintf to use */
|
|
#endif
|
|
#if !defined(MBEDTLS_PLATFORM_STD_CALLOC)
|
|
#define MBEDTLS_PLATFORM_STD_CALLOC calloc /**< Default allocator to use */
|
|
#endif
|
|
#if !defined(MBEDTLS_PLATFORM_STD_FREE)
|
|
#define MBEDTLS_PLATFORM_STD_FREE free /**< Default free to use */
|
|
#endif
|
|
#if !defined(MBEDTLS_PLATFORM_STD_EXIT)
|
|
#define MBEDTLS_PLATFORM_STD_EXIT exit /**< Default free to use */
|
|
#endif
|
|
#else /* MBEDTLS_PLATFORM_NO_STD_FUNCTIONS */
|
|
#if defined(MBEDTLS_PLATFORM_STD_MEM_HDR)
|
|
#include MBEDTLS_PLATFORM_STD_MEM_HDR
|
|
#endif
|
|
#endif /* MBEDTLS_PLATFORM_NO_STD_FUNCTIONS */
|
|
|
|
/* \} name SECTION: Module settings */
|
|
|
|
/*
|
|
* The function pointers for calloc and free
|
|
*/
|
|
#if defined(MBEDTLS_PLATFORM_MEMORY)
|
|
#if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \
|
|
defined(MBEDTLS_PLATFORM_CALLOC_MACRO)
|
|
#define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO
|
|
#define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO
|
|
#else
|
|
/* For size_t */
|
|
#include <stddef.h>
|
|
extern void * (*mbedtls_calloc)( size_t n, size_t size );
|
|
extern void (*mbedtls_free)( void *ptr );
|
|
|
|
/**
|
|
* \brief Set your own memory implementation function pointers
|
|
*
|
|
* \param calloc_func the calloc function implementation
|
|
* \param free_func the free function implementation
|
|
*
|
|
* \return 0 if successful
|
|
*/
|
|
int mbedtls_platform_set_calloc_free( void * (*calloc_func)( size_t, size_t ),
|
|
void (*free_func)( void * ) );
|
|
#endif /* MBEDTLS_PLATFORM_FREE_MACRO && MBEDTLS_PLATFORM_CALLOC_MACRO */
|
|
#else /* !MBEDTLS_PLATFORM_MEMORY */
|
|
#define mbedtls_free free
|
|
#define mbedtls_calloc calloc
|
|
#endif /* MBEDTLS_PLATFORM_MEMORY && !MBEDTLS_PLATFORM_{FREE,CALLOC}_MACRO */
|
|
|
|
/*
|
|
* The function pointers for fprintf
|
|
*/
|
|
#if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
|
|
/* We need FILE * */
|
|
#include <stdio.h>
|
|
extern int (*mbedtls_fprintf)( FILE *stream, const char *format, ... );
|
|
|
|
/**
|
|
* \brief Set your own fprintf function pointer
|
|
*
|
|
* \param fprintf_func the fprintf function implementation
|
|
*
|
|
* \return 0
|
|
*/
|
|
int mbedtls_platform_set_fprintf( int (*fprintf_func)( FILE *stream, const char *,
|
|
... ) );
|
|
#else
|
|
#if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO)
|
|
#define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO
|
|
#else
|
|
#define mbedtls_fprintf fprintf
|
|
#endif /* MBEDTLS_PLATFORM_FPRINTF_MACRO */
|
|
#endif /* MBEDTLS_PLATFORM_FPRINTF_ALT */
|
|
|
|
/*
|
|
* The function pointers for printf
|
|
*/
|
|
#if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
|
|
extern int (*mbedtls_printf)( const char *format, ... );
|
|
|
|
/**
|
|
* \brief Set your own printf function pointer
|
|
*
|
|
* \param printf_func the printf function implementation
|
|
*
|
|
* \return 0
|
|
*/
|
|
int mbedtls_platform_set_printf( int (*printf_func)( const char *, ... ) );
|
|
#else /* !MBEDTLS_PLATFORM_PRINTF_ALT */
|
|
#if defined(MBEDTLS_PLATFORM_PRINTF_MACRO)
|
|
#define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO
|
|
#else
|
|
#define mbedtls_printf printf
|
|
#endif /* MBEDTLS_PLATFORM_PRINTF_MACRO */
|
|
#endif /* MBEDTLS_PLATFORM_PRINTF_ALT */
|
|
|
|
/*
|
|
* The function pointers for snprintf
|
|
*
|
|
* The snprintf implementation should conform to C99:
|
|
* - it *must* always correctly zero-terminate the buffer
|
|
* (except when n == 0, then it must leave the buffer untouched)
|
|
* - however it is acceptable to return -1 instead of the required length when
|
|
* the destination buffer is too short.
|
|
*/
|
|
#if defined(_WIN32)
|
|
/* For Windows (inc. MSYS2), we provide our own fixed implementation */
|
|
int mbedtls_platform_win32_snprintf( char *s, size_t n, const char *fmt, ... );
|
|
#endif
|
|
|
|
#if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
|
|
extern int (*mbedtls_snprintf)( char * s, size_t n, const char * format, ... );
|
|
|
|
/**
|
|
* \brief Set your own snprintf function pointer
|
|
*
|
|
* \param snprintf_func the snprintf function implementation
|
|
*
|
|
* \return 0
|
|
*/
|
|
int mbedtls_platform_set_snprintf( int (*snprintf_func)( char * s, size_t n,
|
|
const char * format, ... ) );
|
|
#else /* MBEDTLS_PLATFORM_SNPRINTF_ALT */
|
|
#if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
|
|
#define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
|
|
#else
|
|
#define mbedtls_snprintf snprintf
|
|
#endif /* MBEDTLS_PLATFORM_SNPRINTF_MACRO */
|
|
#endif /* MBEDTLS_PLATFORM_SNPRINTF_ALT */
|
|
|
|
/*
|
|
* The function pointers for exit
|
|
*/
|
|
#if defined(MBEDTLS_PLATFORM_EXIT_ALT)
|
|
extern void (*mbedtls_exit)( int status );
|
|
|
|
/**
|
|
* \brief Set your own exit function pointer
|
|
*
|
|
* \param exit_func the exit function implementation
|
|
*
|
|
* \return 0
|
|
*/
|
|
int mbedtls_platform_set_exit( void (*exit_func)( int status ) );
|
|
#else
|
|
#if defined(MBEDTLS_PLATFORM_EXIT_MACRO)
|
|
#define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO
|
|
#else
|
|
#define mbedtls_exit exit
|
|
#endif /* MBEDTLS_PLATFORM_EXIT_MACRO */
|
|
#endif /* MBEDTLS_PLATFORM_EXIT_ALT */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* platform.h */
|