From f2561b3f694b8af2becd9dab0167dbb17135d3a2 Mon Sep 17 00:00:00 2001 From: Paul Bakker Date: Thu, 6 Feb 2014 15:11:55 +0100 Subject: [PATCH] Ability to provide alternate timing implementation --- ChangeLog | 1 + include/polarssl/config.h | 13 +++++++++++++ include/polarssl/timing.h | 12 +++++++++++- library/timing.c | 4 ++-- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index de84df058..3c26b017c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,7 @@ Features * Support for RSASSA-PSS keys and signatures in certificates, CSRs and CRLs * Single Platform compatilibity layer (for memory / printf / fprintf) + * Ability to provide alternate timing implementation Changes * Deprecated the Memory layer diff --git a/include/polarssl/config.h b/include/polarssl/config.h index cff574185..5c36ae6b3 100644 --- a/include/polarssl/config.h +++ b/include/polarssl/config.h @@ -159,6 +159,19 @@ * \{ */ +/** + * \def POLARSSL_TIMING_ALT + * + * Uncomment to provide your own alternate implementation for hardclock(), + * get_timer(), set_alarm() and m_sleep(). + * + * Only works if you have POLARSSL_TIMING_C enabled. + * + * You will need to provide a header "timing_alt.h" and an implementation at + * compile time. + */ +//#define POLARSSL_TIMING_ALT + /** * \def POLARSSL_XXX_ALT * diff --git a/include/polarssl/timing.h b/include/polarssl/timing.h index 5ab000e10..cb6abe35e 100644 --- a/include/polarssl/timing.h +++ b/include/polarssl/timing.h @@ -3,7 +3,7 @@ * * \brief Portable interface to the CPU cycle counter * - * Copyright (C) 2006-2013, Brainspark B.V. + * Copyright (C) 2006-2014, Brainspark B.V. * * This file is part of PolarSSL (http://www.polarssl.org) * Lead Maintainer: Paul Bakker @@ -27,6 +27,12 @@ #ifndef POLARSSL_TIMING_H #define POLARSSL_TIMING_H +#include "config.h" + +#if !defined(POLARSSL_TIMING_ALT) +// Regular implementation +// + #ifdef __cplusplus extern "C" { #endif @@ -72,4 +78,8 @@ void m_sleep( int milliseconds ); } #endif +#else /* POLARSSL_TIMING_ALT */ +#include "timing_alt.h" +#endif /* POLARSSL_TIMING_ALT */ + #endif /* timing.h */ diff --git a/library/timing.c b/library/timing.c index 1b4311cbc..c70b78c26 100644 --- a/library/timing.c +++ b/library/timing.c @@ -1,7 +1,7 @@ /* * Portable interface to the CPU cycle counter * - * Copyright (C) 2006-2010, Brainspark B.V. + * Copyright (C) 2006-2014, Brainspark B.V. * * This file is part of PolarSSL (http://www.polarssl.org) * Lead Maintainer: Paul Bakker @@ -25,7 +25,7 @@ #include "polarssl/config.h" -#if defined(POLARSSL_TIMING_C) +#if defined(POLARSSL_TIMING_C) && !defined(POLARSSL_TIMING_ALT) #include "polarssl/timing.h"