From 85c22abe4e78516e5e665324d0f474bb0be3c328 Mon Sep 17 00:00:00 2001 From: David Garske Date: Fri, 15 Mar 2024 14:01:59 -0700 Subject: [PATCH] Fix for Zephyr `TimeNowInMilliseconds`. Resolves issue with TLS v1.3 server and session tickets time (uptime in sim < 1000 ms was being made 0). --- src/internal.c | 7 ++++++- src/tls13.c | 8 ++++++-- wolfcrypt/benchmark/benchmark.c | 6 +++--- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/internal.c b/src/internal.c index d889f3370..6848b47b9 100644 --- a/src/internal.c +++ b/src/internal.c @@ -9768,7 +9768,12 @@ ProtocolVersion MakeDTLSv1_3(void) word32 LowResTimer(void) { - return k_uptime_get() / 1000; + int64_t t; + #if defined(CONFIG_ARCH_POSIX) + k_cpu_idle(); + #endif + t = k_uptime_get(); /* returns current uptime in milliseconds */ + return (word32)(t / 1000); } #elif defined(WOLFSSL_LINUXKM) diff --git a/src/tls13.c b/src/tls13.c index 512d16e9c..713d3edff 100644 --- a/src/tls13.c +++ b/src/tls13.c @@ -1910,10 +1910,12 @@ end: #elif defined(WOLFSSL_ZEPHYR) word32 TimeNowInMilliseconds(void) { + int64_t t; #if defined(CONFIG_ARCH_POSIX) k_cpu_idle(); #endif - return (word32)k_uptime_get() / 1000; + t = k_uptime_get(); /* returns current uptime in milliseconds */ + return (word32)t; } #else @@ -2201,10 +2203,12 @@ end: #elif defined(WOLFSSL_ZEPHYR) sword64 TimeNowInMilliseconds(void) { + int64_t t; #if defined(CONFIG_ARCH_POSIX) k_cpu_idle(); #endif - return (sword64)k_uptime_get() / 1000; + t = k_uptime_get(); /* returns current uptime in milliseconds */ + return (sword64)t; } #else diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index 2f51aeffc..1367be546 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -12998,13 +12998,13 @@ void bench_sphincsKeySign(byte level, byte optim) double current_time(int reset) { + int64_t t; (void)reset; - #if defined(CONFIG_ARCH_POSIX) k_cpu_idle(); #endif - - return (double)k_uptime_get() / 1000; + t = k_uptime_get(); /* returns current uptime in milliseconds */ + return (double)(t / 1000); } #elif defined(WOLFSSL_NETBURNER)