diff options
author | Pauli <pauli@openssl.org> | 2022-08-29 14:52:44 +1000 |
---|---|---|
committer | Pauli <pauli@openssl.org> | 2022-09-13 21:13:22 +1000 |
commit | 02d0f87a8ba143eaeaee3334a2f63543b10148a9 (patch) | |
tree | c6ca88a3790d90db7dcf13c65032e0fe4f54cfb2 /crypto | |
parent | 4fc04c71acf180dad0b4418d12b3ed31ba46179a (diff) | |
download | openssl-new-02d0f87a8ba143eaeaee3334a2f63543b10148a9.tar.gz |
time: move OSSL_TIME to libcrypto
Keep building it for libssl without exposing any symbols.
Reviewed-by: Todd Short <todd.short@me.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19082)
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/build.info | 2 | ||||
-rw-r--r-- | crypto/time.c | 48 |
2 files changed, 49 insertions, 1 deletions
diff --git a/crypto/build.info b/crypto/build.info index e384b94d57..35e012d5d2 100644 --- a/crypto/build.info +++ b/crypto/build.info @@ -99,7 +99,7 @@ $UTIL_COMMON=\ threads_pthread.c threads_win.c threads_none.c initthread.c \ context.c sparse_array.c asn1_dsa.c packet.c param_build.c \ param_build_set.c der_writer.c threads_lib.c params_dup.c \ - quic_vlint.c + quic_vlint.c time.c SOURCE[../libssl]=sparse_array.c diff --git a/crypto/time.c b/crypto/time.c new file mode 100644 index 0000000000..a90aa76788 --- /dev/null +++ b/crypto/time.c @@ -0,0 +1,48 @@ +/* + * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include <errno.h> +#include <openssl/err.h> +#include "internal/time.h" + +OSSL_TIME ossl_time_now(void) +{ + OSSL_TIME r; + +#if defined(_WIN32) + SYSTEMTIME st; + union { + unsigned __int64 ul; + FILETIME ft; + } now; + + GetSystemTime(&st); + SystemTimeToFileTime(&st, &now.ft); + /* re-bias to 1/1/1970 */ +# ifdef __MINGW32__ + now.ul -= 116444736000000000ULL; +# else + now.ul -= 116444736000000000UI64; +# endif + r.t = ((uint64_t)now.ul) * (OSSL_TIME_SECOND / 10000000); +#else /* defined(_WIN32) */ + struct timeval t; + + if (gettimeofday(&t, NULL) < 0) { + ERR_raise_data(ERR_LIB_SYS, get_last_sys_error(), + "calling gettimeofday()"); + return ossl_time_zero(); + } + if (t.tv_sec <= 0) + r.t = t.tv_usec <= 0 ? 0 : t.tv_usec * OSSL_TIME_US; + else + r.t = ((uint64_t)t.tv_sec * 1000000 + t.tv_usec) * OSSL_TIME_US; +#endif /* defined(_WIN32) */ + return r; +} |