From b5b6af2663fdb7f57c30494607bade90810f6844 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Wed, 13 Jul 2016 14:46:18 +0100 Subject: [PATCH] Puts platform time abstraction into its own header Separates platform time abstraction into it's own header from the general platform abstraction as both depend on different build options. (MBEDTLS_PLATFORM_C vs MBEDTLS_HAVE_TIME) --- include/mbedtls/platform.h | 37 ++----------------- include/mbedtls/platform_time.h | 81 +++++++++++++++++++++++++++++++++++++++++ include/mbedtls/ssl.h | 2 +- library/net.c | 1 - library/ssl_cache.c | 2 - library/ssl_ciphersuites.c | 1 - library/ssl_cli.c | 4 +- library/ssl_cookie.c | 2 - library/ssl_srv.c | 4 +- library/ssl_ticket.c | 2 - library/ssl_tls.c | 1 - library/x509.c | 7 +++- programs/ssl/dtls_client.c | 1 - 13 files changed, 93 insertions(+), 52 deletions(-) create mode 100644 include/mbedtls/platform_time.h diff --git a/include/mbedtls/platform.h b/include/mbedtls/platform.h index caf8f25..b1b019e 100644 --- a/include/mbedtls/platform.h +++ b/include/mbedtls/platform.h @@ -29,6 +29,10 @@ #include MBEDTLS_CONFIG_FILE #endif +#if defined(MBEDTLS_HAVE_TIME) +#include "mbedtls/platform_time.h" +#endif + #ifdef __cplusplus extern "C" { #endif @@ -244,39 +248,6 @@ int mbedtls_platform_set_exit( void (*exit_func)( int status ) ); #endif /* - * The time_t datatype - */ -#if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO) -typedef MBEDTLS_PLATFORM_TIME_TYPE_MACRO mbedtls_time_t; -#else -/* For time_t */ -#include -typedef time_t mbedtls_time_t; -#endif /* MBEDTLS_PLATFORM_TIME_TYPE_MACRO */ - -/* - * The function pointers for time - */ -#if defined(MBEDTLS_PLATFORM_TIME_ALT) -extern mbedtls_time_t (*mbedtls_time)( mbedtls_time_t* time ); - -/** - * \brief Set your own time function pointer - * - * \param time_func the time function implementation - * - * \return 0 - */ -int mbedtls_platform_set_time( mbedtls_time_t (*time_func)( mbedtls_time_t* time ) ); -#else -#if defined(MBEDTLS_PLATFORM_TIME_MACRO) -#define mbedtls_time MBEDTLS_PLATFORM_TIME_MACRO -#else -#define mbedtls_time time -#endif /* MBEDTLS_PLATFORM_TIME_MACRO */ -#endif /* MBEDTLS_PLATFORM_TIME_ALT */ - -/* * The function pointers for reading from and writing a seed file to * Non-Volatile storage (NV) in a platform-independent way * diff --git a/include/mbedtls/platform_time.h b/include/mbedtls/platform_time.h new file mode 100644 index 0000000..abb3431 --- /dev/null +++ b/include/mbedtls/platform_time.h @@ -0,0 +1,81 @@ +/** + * \file platform_time.h + * + * \brief mbed TLS Platform time abstraction + * + * Copyright (C) 2006-2016, 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_TIME_H +#define MBEDTLS_PLATFORM_TIME_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. + * \{ + */ + +/* + * The time_t datatype + */ +#if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO) +typedef MBEDTLS_PLATFORM_TIME_TYPE_MACRO mbedtls_time_t; +#else +/* For time_t */ +#include +typedef time_t mbedtls_time_t; +#endif /* MBEDTLS_PLATFORM_TIME_TYPE_MACRO */ + +/* + * The function pointers for time + */ +#if defined(MBEDTLS_PLATFORM_TIME_ALT) +extern mbedtls_time_t (*mbedtls_time)( mbedtls_time_t* time ); + +/** + * \brief Set your own time function pointer + * + * \param time_func the time function implementation + * + * \return 0 + */ +int mbedtls_platform_set_time( mbedtls_time_t (*time_func)( mbedtls_time_t* time ) ); +#else +#if defined(MBEDTLS_PLATFORM_TIME_MACRO) +#define mbedtls_time MBEDTLS_PLATFORM_TIME_MACRO +#else +#define mbedtls_time time +#endif /* MBEDTLS_PLATFORM_TIME_MACRO */ +#endif /* MBEDTLS_PLATFORM_TIME_ALT */ + +#ifdef __cplusplus +} +#endif + +#endif /* platform_time.h */ diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index bc62336..c0bfd3e 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -52,7 +52,7 @@ #endif #if defined(MBEDTLS_HAVE_TIME) -#include +#include "mbedtls/platform_time.h" #endif /* diff --git a/library/net.c b/library/net.c index 4142bc0..8b96321 100644 --- a/library/net.c +++ b/library/net.c @@ -36,7 +36,6 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_time_t time_t #endif #include "mbedtls/net.h" diff --git a/library/ssl_cache.c b/library/ssl_cache.c index 01c66ae..9b62de2 100644 --- a/library/ssl_cache.c +++ b/library/ssl_cache.c @@ -37,8 +37,6 @@ #include #define mbedtls_calloc calloc #define mbedtls_free free -#define mbedtls_time time -#define mbedtls_time_t time_t #endif #include "mbedtls/ssl_cache.h" diff --git a/library/ssl_ciphersuites.c b/library/ssl_ciphersuites.c index 3546331..a762bf7 100644 --- a/library/ssl_ciphersuites.c +++ b/library/ssl_ciphersuites.c @@ -33,7 +33,6 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_time_t time_t #endif #include "mbedtls/ssl_ciphersuites.h" diff --git a/library/ssl_cli.c b/library/ssl_cli.c index cd39db0..358dc46 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -33,8 +33,6 @@ #include #define mbedtls_calloc calloc #define mbedtls_free free -#define mbedtls_time time -#define mbedtls_time_t time_t #endif #include "mbedtls/debug.h" @@ -46,7 +44,7 @@ #include #if defined(MBEDTLS_HAVE_TIME) -#include +#include "mbedtls/platform_time.h" #endif #if defined(MBEDTLS_SSL_SESSION_TICKETS) diff --git a/library/ssl_cookie.c b/library/ssl_cookie.c index f241c86..9fb32de 100644 --- a/library/ssl_cookie.c +++ b/library/ssl_cookie.c @@ -36,8 +36,6 @@ #else #define mbedtls_calloc calloc #define mbedtls_free free -#define mbedtls_time time -#define mbedtls_time_t time_t #endif #include "mbedtls/ssl_cookie.h" diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 7271045..ec59cc1 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -33,8 +33,6 @@ #include #define mbedtls_calloc calloc #define mbedtls_free free -#define mbedtls_time time -#define mbedtls_time_t time_t #endif #include "mbedtls/debug.h" @@ -48,7 +46,7 @@ #endif #if defined(MBEDTLS_HAVE_TIME) -#include +#include "mbedtls/platform_time.h" #endif #if defined(MBEDTLS_SSL_SESSION_TICKETS) diff --git a/library/ssl_ticket.c b/library/ssl_ticket.c index 5d77403..4d9116d 100644 --- a/library/ssl_ticket.c +++ b/library/ssl_ticket.c @@ -33,8 +33,6 @@ #include #define mbedtls_calloc calloc #define mbedtls_free free -#define mbedtls_time time -#define mbedtls_time_t time_t #endif #include "mbedtls/ssl_ticket.h" diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 80a908d..505bb6c 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -41,7 +41,6 @@ #include #define mbedtls_calloc calloc #define mbedtls_free free -#define mbedtls_time_t time_t #endif #include "mbedtls/debug.h" diff --git a/library/x509.c b/library/x509.c index a0df817..bc3bfe0 100644 --- a/library/x509.c +++ b/library/x509.c @@ -55,12 +55,15 @@ #include #define mbedtls_free free #define mbedtls_calloc calloc -#define mbedtls_time time -#define mbedtls_time_t time_t #define mbedtls_printf printf #define mbedtls_snprintf snprintf #endif + +#if defined(MBEDTLS_HAVE_TIME) +#include "mbedtls/platform_time.h" +#endif + #if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) #include #else diff --git a/programs/ssl/dtls_client.c b/programs/ssl/dtls_client.c index 14fb612..b37eb83 100644 --- a/programs/ssl/dtls_client.c +++ b/programs/ssl/dtls_client.c @@ -31,7 +31,6 @@ #include #define mbedtls_printf printf #define mbedtls_fprintf fprintf -#define mbedtls_time_t time_t #endif #if !defined(MBEDTLS_SSL_CLI_C) || !defined(MBEDTLS_SSL_PROTO_DTLS) || \