aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/botan/src/lib/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/3rdparty/botan/src/lib/utils')
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/assert.cpp54
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/assert.h157
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/bit_ops.h161
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/bswap.h99
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/calendar.cpp119
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/calendar.h91
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/charset.cpp283
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/charset.h78
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/codec_base.h165
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/compiler.h203
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid.cpp195
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid.h363
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid_arm.cpp232
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid_ppc.cpp129
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid_x86.cpp178
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/cpuid/info.txt7
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/ct_utils.h215
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/data_src.cpp214
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/data_src.h181
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/database.h74
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/donna128.h143
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/dyn_load/dyn_load.cpp79
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/dyn_load/dyn_load.h68
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/dyn_load/info.txt17
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/exceptn.cpp116
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/exceptn.h236
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/filesystem.cpp204
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/filesystem.h33
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/info.txt43
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/loadstor.h697
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/mem_ops.cpp63
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/mem_ops.h272
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/mul128.h123
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/mutex.h58
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/os_utils.cpp461
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/os_utils.h124
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/parsing.cpp478
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/parsing.h176
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/prefetch.h39
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/read_cfg.cpp63
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/read_kv.cpp85
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/rotate.h104
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/rounding.h59
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/safeint.h39
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/simd/info.txt7
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/simd/simd_32.h654
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/simd/simd_avx2/info.txt16
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/simd/simd_avx2/simd_avx2.h198
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/stl_compatibility.h77
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/stl_util.h110
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/timer.cpp118
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/timer.h216
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/types.h105
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/version.cpp92
-rw-r--r--src/libs/3rdparty/botan/src/lib/utils/version.h101
55 files changed, 0 insertions, 8672 deletions
diff --git a/src/libs/3rdparty/botan/src/lib/utils/assert.cpp b/src/libs/3rdparty/botan/src/lib/utils/assert.cpp
deleted file mode 100644
index 31a35374a6..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/assert.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-* Runtime assertion checking
-* (C) 2010,2012,2018 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/exceptn.h>
-#include <sstream>
-
-namespace Botan {
-
-void throw_invalid_argument(const char* message,
- const char* func,
- const char* file)
- {
- std::ostringstream format;
- format << message << " in " << func << ":" << file;
- throw Invalid_Argument(format.str());
- }
-
-void throw_invalid_state(const char* expr,
- const char* func,
- const char* file)
- {
- std::ostringstream format;
- format << "Invalid state: " << expr << " was false in " << func << ":" << file;
- throw Invalid_State(format.str());
- }
-
-void assertion_failure(const char* expr_str,
- const char* assertion_made,
- const char* func,
- const char* file,
- int line)
- {
- std::ostringstream format;
-
- format << "False assertion ";
-
- if(assertion_made && assertion_made[0] != 0)
- format << "'" << assertion_made << "' (expression " << expr_str << ") ";
- else
- format << expr_str << " ";
-
- if(func)
- format << "in " << func << " ";
-
- format << "@" << file << ":" << line;
-
- throw Exception(format.str());
- }
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/assert.h b/src/libs/3rdparty/botan/src/lib/utils/assert.h
deleted file mode 100644
index 20e15ac0ea..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/assert.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
-* Runtime assertion checking
-* (C) 2010,2018 Jack Lloyd
-* 2017 Simon Warta (Kullo GmbH)
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_ASSERTION_CHECKING_H_
-#define BOTAN_ASSERTION_CHECKING_H_
-
-#include <botan/build.h>
-#include <botan/compiler.h>
-
-namespace Botan {
-
-/**
-* Called when an assertion fails
-* Throws an Exception object
-*/
-BOTAN_NORETURN void BOTAN_PUBLIC_API(2,0)
- assertion_failure(const char* expr_str,
- const char* assertion_made,
- const char* func,
- const char* file,
- int line);
-
-/**
-* Called when an invalid argument is used
-* Throws Invalid_Argument
-*/
-BOTAN_NORETURN void BOTAN_UNSTABLE_API throw_invalid_argument(const char* message,
- const char* func,
- const char* file);
-
-
-#define BOTAN_ARG_CHECK(expr, msg) \
- do { if(!(expr)) Botan::throw_invalid_argument(msg, BOTAN_CURRENT_FUNCTION, __FILE__); } while(0)
-
-/**
-* Called when an invalid state is encountered
-* Throws Invalid_State
-*/
-BOTAN_NORETURN void BOTAN_UNSTABLE_API throw_invalid_state(const char* message,
- const char* func,
- const char* file);
-
-
-#define BOTAN_STATE_CHECK(expr) \
- do { if(!(expr)) Botan::throw_invalid_state(#expr, BOTAN_CURRENT_FUNCTION, __FILE__); } while(0)
-
-/**
-* Make an assertion
-*/
-#define BOTAN_ASSERT(expr, assertion_made) \
- do { \
- if(!(expr)) \
- Botan::assertion_failure(#expr, \
- assertion_made, \
- BOTAN_CURRENT_FUNCTION, \
- __FILE__, \
- __LINE__); \
- } while(0)
-
-/**
-* Make an assertion
-*/
-#define BOTAN_ASSERT_NOMSG(expr) \
- do { \
- if(!(expr)) \
- Botan::assertion_failure(#expr, \
- "", \
- BOTAN_CURRENT_FUNCTION, \
- __FILE__, \
- __LINE__); \
- } while(0)
-
-/**
-* Assert that value1 == value2
-*/
-#define BOTAN_ASSERT_EQUAL(expr1, expr2, assertion_made) \
- do { \
- if((expr1) != (expr2)) \
- Botan::assertion_failure(#expr1 " == " #expr2, \
- assertion_made, \
- BOTAN_CURRENT_FUNCTION, \
- __FILE__, \
- __LINE__); \
- } while(0)
-
-/**
-* Assert that expr1 (if true) implies expr2 is also true
-*/
-#define BOTAN_ASSERT_IMPLICATION(expr1, expr2, msg) \
- do { \
- if((expr1) && !(expr2)) \
- Botan::assertion_failure(#expr1 " implies " #expr2, \
- msg, \
- BOTAN_CURRENT_FUNCTION, \
- __FILE__, \
- __LINE__); \
- } while(0)
-
-/**
-* Assert that a pointer is not null
-*/
-#define BOTAN_ASSERT_NONNULL(ptr) \
- do { \
- if((ptr) == nullptr) \
- Botan::assertion_failure(#ptr " is not null", \
- "", \
- BOTAN_CURRENT_FUNCTION, \
- __FILE__, \
- __LINE__); \
- } while(0)
-
-#if defined(BOTAN_ENABLE_DEBUG_ASSERTS)
-
-#define BOTAN_DEBUG_ASSERT(expr) BOTAN_ASSERT_NOMSG(expr)
-
-#else
-
-#define BOTAN_DEBUG_ASSERT(expr) do {} while(0)
-
-#endif
-
-/**
-* Mark variable as unused. Takes between 1 and 9 arguments and marks all as unused,
-* e.g. BOTAN_UNUSED(a); or BOTAN_UNUSED(x, y, z);
-*/
-#define _BOTAN_UNUSED_IMPL1(a) static_cast<void>(a)
-#define _BOTAN_UNUSED_IMPL2(a, b) static_cast<void>(a); _BOTAN_UNUSED_IMPL1(b)
-#define _BOTAN_UNUSED_IMPL3(a, b, c) static_cast<void>(a); _BOTAN_UNUSED_IMPL2(b, c)
-#define _BOTAN_UNUSED_IMPL4(a, b, c, d) static_cast<void>(a); _BOTAN_UNUSED_IMPL3(b, c, d)
-#define _BOTAN_UNUSED_IMPL5(a, b, c, d, e) static_cast<void>(a); _BOTAN_UNUSED_IMPL4(b, c, d, e)
-#define _BOTAN_UNUSED_IMPL6(a, b, c, d, e, f) static_cast<void>(a); _BOTAN_UNUSED_IMPL5(b, c, d, e, f)
-#define _BOTAN_UNUSED_IMPL7(a, b, c, d, e, f, g) static_cast<void>(a); _BOTAN_UNUSED_IMPL6(b, c, d, e, f, g)
-#define _BOTAN_UNUSED_IMPL8(a, b, c, d, e, f, g, h) static_cast<void>(a); _BOTAN_UNUSED_IMPL7(b, c, d, e, f, g, h)
-#define _BOTAN_UNUSED_IMPL9(a, b, c, d, e, f, g, h, i) static_cast<void>(a); _BOTAN_UNUSED_IMPL8(b, c, d, e, f, g, h, i)
-#define _BOTAN_UNUSED_GET_IMPL(_1, _2, _3, _4, _5, _6, _7, _8, _9, IMPL_NAME, ...) IMPL_NAME
-
-#define BOTAN_UNUSED(...) _BOTAN_UNUSED_GET_IMPL(__VA_ARGS__, \
- _BOTAN_UNUSED_IMPL9, \
- _BOTAN_UNUSED_IMPL8, \
- _BOTAN_UNUSED_IMPL7, \
- _BOTAN_UNUSED_IMPL6, \
- _BOTAN_UNUSED_IMPL5, \
- _BOTAN_UNUSED_IMPL4, \
- _BOTAN_UNUSED_IMPL3, \
- _BOTAN_UNUSED_IMPL2, \
- _BOTAN_UNUSED_IMPL1, \
- unused dummy rest value \
- ) /* we got an one of _BOTAN_UNUSED_IMPL*, now call it */ (__VA_ARGS__)
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/bit_ops.h b/src/libs/3rdparty/botan/src/lib/utils/bit_ops.h
deleted file mode 100644
index c7e4014923..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/bit_ops.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
-* Bit/Word Operations
-* (C) 1999-2008 Jack Lloyd
-* (C) Copyright Projet SECRET, INRIA, Rocquencourt
-* (C) Bhaskar Biswas and Nicolas Sendrier
-* (C) 2014 cryptosource GmbH
-* (C) 2014 Falko Strenzke fstrenzke@cryptosource.de
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_BIT_OPS_H_
-#define BOTAN_BIT_OPS_H_
-
-#include <botan/types.h>
-
-namespace Botan {
-
-/**
-* Power of 2 test. T should be an unsigned integer type
-* @param arg an integer value
-* @return true iff arg is 2^n for some n > 0
-*/
-template<typename T>
-inline bool is_power_of_2(T arg)
- {
- return ((arg != 0 && arg != 1) && ((arg & (arg-1)) == 0));
- }
-
-/**
-* Return the index of the highest set bit
-* T is an unsigned integer type
-* @param n an integer value
-* @return index of the highest set bit in n
-*/
-template<typename T>
-inline size_t high_bit(T n)
- {
- for(size_t i = 8*sizeof(T); i > 0; --i)
- if((n >> (i - 1)) & 0x01)
- return i;
- return 0;
- }
-
-/**
-* Return the index of the lowest set bit
-* T is an unsigned integer type
-* @param n an integer value
-* @return index of the lowest set bit in n
-*/
-template<typename T>
-inline size_t low_bit(T n)
- {
- for(size_t i = 0; i != 8*sizeof(T); ++i)
- if((n >> i) & 0x01)
- return (i + 1);
- return 0;
- }
-
-/**
-* Return the number of significant bytes in n
-* @param n an integer value
-* @return number of significant bytes in n
-*/
-template<typename T>
-inline size_t significant_bytes(T n)
- {
- for(size_t i = 0; i != sizeof(T); ++i)
- if(get_byte(i, n))
- return sizeof(T)-i;
- return 0;
- }
-
-/**
-* Compute Hamming weights
-* @param n an integer value
-* @return number of bits in n set to 1
-*/
-template<typename T>
-inline size_t hamming_weight(T n)
- {
- const uint8_t NIBBLE_WEIGHTS[] = {
- 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 };
-
- size_t weight = 0;
- for(size_t i = 0; i != 2*sizeof(T); ++i)
- weight += NIBBLE_WEIGHTS[(n >> (4*i)) & 0x0F];
- return weight;
- }
-
-/**
-* Count the trailing zero bits in n
-* @param n an integer value
-* @return maximum x st 2^x divides n
-*/
-template<typename T>
-inline size_t ctz(T n)
- {
- for(size_t i = 0; i != 8*sizeof(T); ++i)
- if((n >> i) & 0x01)
- return i;
- return 8*sizeof(T);
- }
-
-#if defined(BOTAN_BUILD_COMPILER_IS_GCC) || defined(BOTAN_BUILD_COMPILER_IS_CLANG)
-
-template<>
-inline size_t ctz(uint32_t n)
- {
- if(n == 0)
- return 32;
- return __builtin_ctz(n);
- }
-
-template<>
-inline size_t ctz(uint64_t n)
- {
- if(n == 0)
- return 64;
- return __builtin_ctzll(n);
- }
-
-template<>
-inline size_t high_bit(uint32_t x)
- {
- if(x == 0)
- return 0;
- return (32 - __builtin_clz(x));
- }
-
-template<>
-inline size_t high_bit(uint64_t x)
- {
- if(x == 0)
- return 0;
- return (64 - __builtin_clzll(x));
- }
-
-#endif
-
-template<typename T>
-size_t ceil_log2(T x)
- {
- if(x >> (sizeof(T)*8-1))
- return sizeof(T)*8;
-
- size_t result = 0;
- T compare = 1;
-
- while(compare < x)
- {
- compare <<= 1;
- result++;
- }
-
- return result;
- }
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/bswap.h b/src/libs/3rdparty/botan/src/lib/utils/bswap.h
deleted file mode 100644
index 8d5731f1b0..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/bswap.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-* Byte Swapping Operations
-* (C) 1999-2011 Jack Lloyd
-* (C) 2007 Yves Jerschow
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_BYTE_SWAP_H_
-#define BOTAN_BYTE_SWAP_H_
-
-#include <botan/types.h>
-#include <botan/rotate.h>
-
-#if defined(BOTAN_BUILD_COMPILER_IS_MSVC)
- #include <stdlib.h>
-#endif
-
-namespace Botan {
-
-/**
-* Swap a 16 bit integer
-*/
-inline uint16_t reverse_bytes(uint16_t val)
- {
- return rotl<8>(val);
- }
-
-/**
-* Swap a 32 bit integer
-*/
-inline uint32_t reverse_bytes(uint32_t val)
- {
-#if defined(BOTAN_BUILD_COMPILER_IS_GCC) || defined(BOTAN_BUILD_COMPILER_IS_CLANG)
- return __builtin_bswap32(val);
-
-#elif defined(BOTAN_BUILD_COMPILER_IS_MSVC)
- return _byteswap_ulong(val);
-
-#elif defined(BOTAN_USE_GCC_INLINE_ASM) && defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
-
- // GCC-style inline assembly for x86 or x86-64
- asm("bswapl %0" : "=r" (val) : "0" (val));
- return val;
-
-#else
-
- // Generic implementation
- return (rotr<8>(val) & 0xFF00FF00) | (rotl<8>(val) & 0x00FF00FF);
-
-#endif
- }
-
-/**
-* Swap a 64 bit integer
-*/
-inline uint64_t reverse_bytes(uint64_t val)
- {
-#if defined(BOTAN_BUILD_COMPILER_IS_GCC) || defined(BOTAN_BUILD_COMPILER_IS_CLANG)
- return __builtin_bswap64(val);
-
-#elif defined(BOTAN_BUILD_COMPILER_IS_MSVC)
- return _byteswap_uint64(val);
-
-#elif defined(BOTAN_USE_GCC_INLINE_ASM) && defined(BOTAN_TARGET_ARCH_IS_X86_64)
- // GCC-style inline assembly for x86-64
- asm("bswapq %0" : "=r" (val) : "0" (val));
- return val;
-
-#else
- /* Generic implementation. Defined in terms of 32-bit bswap so any
- * optimizations in that version can help.
- */
-
- uint32_t hi = static_cast<uint32_t>(val >> 32);
- uint32_t lo = static_cast<uint32_t>(val);
-
- hi = reverse_bytes(hi);
- lo = reverse_bytes(lo);
-
- return (static_cast<uint64_t>(lo) << 32) | hi;
-#endif
- }
-
-/**
-* Swap 4 Ts in an array
-*/
-template<typename T>
-inline void bswap_4(T x[4])
- {
- x[0] = reverse_bytes(x[0]);
- x[1] = reverse_bytes(x[1]);
- x[2] = reverse_bytes(x[2]);
- x[3] = reverse_bytes(x[3]);
- }
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/calendar.cpp b/src/libs/3rdparty/botan/src/lib/utils/calendar.cpp
deleted file mode 100644
index fe04f1d239..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/calendar.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
-* Calendar Functions
-* (C) 1999-2010,2017 Jack Lloyd
-* (C) 2015 Simon Warta (Kullo GmbH)
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/calendar.h>
-#include <botan/exceptn.h>
-#include <ctime>
-#include <sstream>
-#include <iomanip>
-#include <stdlib.h>
-
-namespace Botan {
-
-namespace {
-
-std::tm do_gmtime(std::time_t time_val)
- {
- std::tm tm;
-
-#if defined(BOTAN_TARGET_OS_HAS_WIN32)
- ::gmtime_s(&tm, &time_val); // Windows
-#elif defined(BOTAN_TARGET_OS_HAS_POSIX1)
- ::gmtime_r(&time_val, &tm); // Unix/SUSv2
-#else
- std::tm* tm_p = std::gmtime(&time_val);
- if (tm_p == nullptr)
- throw Encoding_Error("time_t_to_tm could not convert");
- tm = *tm_p;
-#endif
-
- return tm;
- }
-
-/*
-Portable replacement for timegm, _mkgmtime, etc
-
-Algorithm due to Howard Hinnant
-
-See https://howardhinnant.github.io/date_algorithms.html#days_from_civil
-for details and explaination. The code is slightly simplified by our assumption
-that the date is at least 1970, which is sufficient for our purposes.
-*/
-size_t days_since_epoch(uint32_t year, uint32_t month, uint32_t day)
- {
- if(month <= 2)
- year -= 1;
- const uint32_t era = year / 400;
- const uint32_t yoe = year - era * 400; // [0, 399]
- const uint32_t doy = (153*(month + (month > 2 ? -3 : 9)) + 2)/5 + day-1; // [0, 365]
- const uint32_t doe = yoe * 365 + yoe/4 - yoe/100 + doy; // [0, 146096]
- return era * 146097 + doe - 719468;
- }
-
-}
-
-std::chrono::system_clock::time_point calendar_point::to_std_timepoint() const
- {
- if(get_year() < 1970)
- throw Invalid_Argument("calendar_point::to_std_timepoint() does not support years before 1970");
-
- // 32 bit time_t ends at January 19, 2038
- // https://msdn.microsoft.com/en-us/library/2093ets1.aspx
- // Throw after 2037 if 32 bit time_t is used
- if(get_year() > 2037 && sizeof(std::time_t) == 4)
- {
- throw Invalid_Argument("calendar_point::to_std_timepoint() does not support years after 2037 on this system");
- }
- else if(get_year() >= 2400)
- {
- // This upper bound is somewhat arbitrary
- throw Invalid_Argument("calendar_point::to_std_timepoint() does not support years after 2400");
- }
-
- const uint64_t seconds_64 = (days_since_epoch(get_year(), get_month(), get_day()) * 86400) +
- (get_hour() * 60 * 60) + (get_minutes() * 60) + get_seconds();
-
- const time_t seconds_time_t = static_cast<time_t>(seconds_64);
-
- if(seconds_64 - seconds_time_t != 0)
- {
- throw Invalid_Argument("calendar_point::to_std_timepoint time_t overflow");
- }
-
- return std::chrono::system_clock::from_time_t(seconds_time_t);
- }
-
-std::string calendar_point::to_string() const
- {
- // desired format: <YYYY>-<MM>-<dd>T<HH>:<mm>:<ss>
- std::stringstream output;
- output << std::setfill('0')
- << std::setw(4) << get_year() << "-"
- << std::setw(2) << get_month() << "-"
- << std::setw(2) << get_day() << "T"
- << std::setw(2) << get_hour() << ":"
- << std::setw(2) << get_minutes() << ":"
- << std::setw(2) << get_seconds();
- return output.str();
- }
-
-
-calendar_point calendar_value(
- const std::chrono::system_clock::time_point& time_point)
- {
- std::tm tm = do_gmtime(std::chrono::system_clock::to_time_t(time_point));
-
- return calendar_point(tm.tm_year + 1900,
- tm.tm_mon + 1,
- tm.tm_mday,
- tm.tm_hour,
- tm.tm_min,
- tm.tm_sec);
- }
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/calendar.h b/src/libs/3rdparty/botan/src/lib/utils/calendar.h
deleted file mode 100644
index 83759070b8..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/calendar.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-* Calendar Functions
-* (C) 1999-2009,2015 Jack Lloyd
-* (C) 2015 Simon Warta (Kullo GmbH)
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_CALENDAR_H_
-#define BOTAN_CALENDAR_H_
-
-#include <botan/types.h>
-#include <chrono>
-#include <string>
-
-namespace Botan {
-
-/**
-* Struct representing a particular date and time
-*/
-class BOTAN_PUBLIC_API(2,0) calendar_point
- {
- public:
-
- /** The year */
- uint32_t get_year() const { return year; }
-
- /** The month, 1 through 12 for Jan to Dec */
- uint32_t get_month() const { return month; }
-
- /** The day of the month, 1 through 31 (or 28 or 30 based on month */
- uint32_t get_day() const { return day; }
-
- /** Hour in 24-hour form, 0 to 23 */
- uint32_t get_hour() const { return hour; }
-
- /** Minutes in the hour, 0 to 60 */
- uint32_t get_minutes() const { return minutes; }
-
- /** Seconds in the minute, 0 to 60, but might be slightly
- larger to deal with leap seconds on some systems
- */
- uint32_t get_seconds() const { return seconds; }
-
- /**
- * Initialize a calendar_point
- * @param y the year
- * @param mon the month
- * @param d the day
- * @param h the hour
- * @param min the minute
- * @param sec the second
- */
- calendar_point(uint32_t y, uint32_t mon, uint32_t d, uint32_t h, uint32_t min, uint32_t sec) :
- year(y), month(mon), day(d), hour(h), minutes(min), seconds(sec) {}
-
- /**
- * Returns an STL timepoint object
- */
- std::chrono::system_clock::time_point to_std_timepoint() const;
-
- /**
- * Returns a human readable string of the struct's components.
- * Formatting might change over time. Currently it is RFC339 'iso-date-time'.
- */
- std::string to_string() const;
-
- BOTAN_DEPRECATED_PUBLIC_MEMBER_VARIABLES:
- /*
- The member variables are public for historical reasons. Use the get_xxx() functions
- defined above. These members will be made private in a future major release.
- */
- uint32_t year;
- uint32_t month;
- uint32_t day;
- uint32_t hour;
- uint32_t minutes;
- uint32_t seconds;
- };
-
-/**
-* Convert a time_point to a calendar_point
-* @param time_point a time point from the system clock
-* @return calendar_point object representing this time point
-*/
-BOTAN_PUBLIC_API(2,0) calendar_point calendar_value(
- const std::chrono::system_clock::time_point& time_point);
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/charset.cpp b/src/libs/3rdparty/botan/src/lib/utils/charset.cpp
deleted file mode 100644
index ca32c652db..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/charset.cpp
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
-* Character Set Handling
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/charset.h>
-#include <botan/exceptn.h>
-#include <botan/loadstor.h>
-#include <cctype>
-
-namespace Botan {
-
-namespace {
-
-void append_utf8_for(std::string& s, uint32_t c)
- {
- if(c >= 0xD800 && c < 0xE000)
- throw Decoding_Error("Invalid Unicode character");
-
- if(c <= 0x7F)
- {
- const uint8_t b0 = static_cast<uint8_t>(c);
- s.push_back(static_cast<char>(b0));
- }
- else if(c <= 0x7FF)
- {
- const uint8_t b0 = 0xC0 | static_cast<uint8_t>(c >> 6);
- const uint8_t b1 = 0x80 | static_cast<uint8_t>(c & 0x3F);
- s.push_back(static_cast<char>(b0));
- s.push_back(static_cast<char>(b1));
- }
- else if(c <= 0xFFFF)
- {
- const uint8_t b0 = 0xE0 | static_cast<uint8_t>(c >> 12);
- const uint8_t b1 = 0x80 | static_cast<uint8_t>((c >> 6) & 0x3F);
- const uint8_t b2 = 0x80 | static_cast<uint8_t>(c & 0x3F);
- s.push_back(static_cast<char>(b0));
- s.push_back(static_cast<char>(b1));
- s.push_back(static_cast<char>(b2));
- }
- else if(c <= 0x10FFFF)
- {
- const uint8_t b0 = 0xF0 | static_cast<uint8_t>(c >> 18);
- const uint8_t b1 = 0x80 | static_cast<uint8_t>((c >> 12) & 0x3F);
- const uint8_t b2 = 0x80 | static_cast<uint8_t>((c >> 6) & 0x3F);
- const uint8_t b3 = 0x80 | static_cast<uint8_t>(c & 0x3F);
- s.push_back(static_cast<char>(b0));
- s.push_back(static_cast<char>(b1));
- s.push_back(static_cast<char>(b2));
- s.push_back(static_cast<char>(b3));
- }
- else
- throw Decoding_Error("Invalid Unicode character");
-
- }
-
-}
-
-std::string ucs2_to_utf8(const uint8_t ucs2[], size_t len)
- {
- if(len % 2 != 0)
- throw Decoding_Error("Invalid length for UCS-2 string");
-
- const size_t chars = len / 2;
-
- std::string s;
- for(size_t i = 0; i != chars; ++i)
- {
- const uint16_t c = load_be<uint16_t>(ucs2, i);
- append_utf8_for(s, c);
- }
-
- return s;
- }
-
-std::string ucs4_to_utf8(const uint8_t ucs4[], size_t len)
- {
- if(len % 4 != 0)
- throw Decoding_Error("Invalid length for UCS-4 string");
-
- const size_t chars = len / 4;
-
- std::string s;
- for(size_t i = 0; i != chars; ++i)
- {
- const uint32_t c = load_be<uint32_t>(ucs4, i);
- append_utf8_for(s, c);
- }
-
- return s;
- }
-
-/*
-* Convert from UTF-8 to ISO 8859-1
-*/
-std::string utf8_to_latin1(const std::string& utf8)
- {
- std::string iso8859;
-
- size_t position = 0;
- while(position != utf8.size())
- {
- const uint8_t c1 = static_cast<uint8_t>(utf8[position++]);
-
- if(c1 <= 0x7F)
- {
- iso8859 += static_cast<char>(c1);
- }
- else if(c1 >= 0xC0 && c1 <= 0xC7)
- {
- if(position == utf8.size())
- throw Decoding_Error("UTF-8: sequence truncated");
-
- const uint8_t c2 = static_cast<uint8_t>(utf8[position++]);
- const uint8_t iso_char = ((c1 & 0x07) << 6) | (c2 & 0x3F);
-
- if(iso_char <= 0x7F)
- throw Decoding_Error("UTF-8: sequence longer than needed");
-
- iso8859 += static_cast<char>(iso_char);
- }
- else
- throw Decoding_Error("UTF-8: Unicode chars not in Latin1 used");
- }
-
- return iso8859;
- }
-
-namespace Charset {
-
-namespace {
-
-/*
-* Convert from UCS-2 to ISO 8859-1
-*/
-std::string ucs2_to_latin1(const std::string& ucs2)
- {
- if(ucs2.size() % 2 == 1)
- throw Decoding_Error("UCS-2 string has an odd number of bytes");
-
- std::string latin1;
-
- for(size_t i = 0; i != ucs2.size(); i += 2)
- {
- const uint8_t c1 = ucs2[i];
- const uint8_t c2 = ucs2[i+1];
-
- if(c1 != 0)
- throw Decoding_Error("UCS-2 has non-Latin1 characters");
-
- latin1 += static_cast<char>(c2);
- }
-
- return latin1;
- }
-
-/*
-* Convert from ISO 8859-1 to UTF-8
-*/
-std::string latin1_to_utf8(const std::string& iso8859)
- {
- std::string utf8;
- for(size_t i = 0; i != iso8859.size(); ++i)
- {
- const uint8_t c = static_cast<uint8_t>(iso8859[i]);
-
- if(c <= 0x7F)
- utf8 += static_cast<char>(c);
- else
- {
- utf8 += static_cast<char>((0xC0 | (c >> 6)));
- utf8 += static_cast<char>((0x80 | (c & 0x3F)));
- }
- }
- return utf8;
- }
-
-}
-
-/*
-* Perform character set transcoding
-*/
-std::string transcode(const std::string& str,
- Character_Set to, Character_Set from)
- {
- if(to == LOCAL_CHARSET)
- to = LATIN1_CHARSET;
- if(from == LOCAL_CHARSET)
- from = LATIN1_CHARSET;
-
- if(to == from)
- return str;
-
- if(from == LATIN1_CHARSET && to == UTF8_CHARSET)
- return latin1_to_utf8(str);
- if(from == UTF8_CHARSET && to == LATIN1_CHARSET)
- return utf8_to_latin1(str);
- if(from == UCS2_CHARSET && to == LATIN1_CHARSET)
- return ucs2_to_latin1(str);
-
- throw Invalid_Argument("Unknown transcoding operation from " +
- std::to_string(from) + " to " + std::to_string(to));
- }
-
-/*
-* Check if a character represents a digit
-*/
-bool is_digit(char c)
- {
- if(c == '0' || c == '1' || c == '2' || c == '3' || c == '4' ||
- c == '5' || c == '6' || c == '7' || c == '8' || c == '9')
- return true;
- return false;
- }
-
-/*
-* Check if a character represents whitespace
-*/
-bool is_space(char c)
- {
- if(c == ' ' || c == '\t' || c == '\n' || c == '\r')
- return true;
- return false;
- }
-
-/*
-* Convert a character to a digit
-*/
-uint8_t char2digit(char c)
- {
- switch(c)
- {
- case '0': return 0;
- case '1': return 1;
- case '2': return 2;
- case '3': return 3;
- case '4': return 4;
- case '5': return 5;
- case '6': return 6;
- case '7': return 7;
- case '8': return 8;
- case '9': return 9;
- }
-
- throw Invalid_Argument("char2digit: Input is not a digit character");
- }
-
-/*
-* Convert a digit to a character
-*/
-char digit2char(uint8_t b)
- {
- switch(b)
- {
- case 0: return '0';
- case 1: return '1';
- case 2: return '2';
- case 3: return '3';
- case 4: return '4';
- case 5: return '5';
- case 6: return '6';
- case 7: return '7';
- case 8: return '8';
- case 9: return '9';
- }
-
- throw Invalid_Argument("digit2char: Input is not a digit");
- }
-
-/*
-* Case-insensitive character comparison
-*/
-bool caseless_cmp(char a, char b)
- {
- return (std::tolower(static_cast<unsigned char>(a)) ==
- std::tolower(static_cast<unsigned char>(b)));
- }
-
-}
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/charset.h b/src/libs/3rdparty/botan/src/lib/utils/charset.h
deleted file mode 100644
index 4913f0a5aa..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/charset.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-* Character Set Handling
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_CHARSET_H_
-#define BOTAN_CHARSET_H_
-
-#include <botan/types.h>
-#include <string>
-
-namespace Botan {
-
-/**
-* Convert a sequence of UCS-2 (big endian) characters to a UTF-8 string
-* This is used for ASN.1 BMPString type
-* @param ucs2 the sequence of UCS-2 characters
-* @param len length of ucs2 in bytes, must be a multiple of 2
-*/
-std::string BOTAN_UNSTABLE_API ucs2_to_utf8(const uint8_t ucs2[], size_t len);
-
-/**
-* Convert a sequence of UCS-4 (big endian) characters to a UTF-8 string
-* This is used for ASN.1 UniversalString type
-* @param ucs4 the sequence of UCS-4 characters
-* @param len length of ucs4 in bytes, must be a multiple of 4
-*/
-std::string BOTAN_UNSTABLE_API ucs4_to_utf8(const uint8_t ucs4[], size_t len);
-
-/**
-* Convert a UTF-8 string to Latin-1
-* If a character outside the Latin-1 range is encountered, an exception is thrown.
-*/
-std::string BOTAN_UNSTABLE_API utf8_to_latin1(const std::string& utf8);
-
-/**
-* The different charsets (nominally) supported by Botan.
-*/
-enum Character_Set {
- LOCAL_CHARSET,
- UCS2_CHARSET,
- UTF8_CHARSET,
- LATIN1_CHARSET
-};
-
-namespace Charset {
-
-/*
-* Character set conversion - avoid this.
-* For specific conversions, use the functions above like
-* ucs2_to_utf8 and utf8_to_latin1
-*
-* If you need something more complex than that, use a real library
-* such as iconv, Boost.Locale, or ICU
-*/
-std::string BOTAN_PUBLIC_API(2,0)
- BOTAN_DEPRECATED("Avoid. See comment in header.")
- transcode(const std::string& str,
- Character_Set to,
- Character_Set from);
-
-/*
-* Simple character classifier functions
-*/
-bool BOTAN_PUBLIC_API(2,0) is_digit(char c);
-bool BOTAN_PUBLIC_API(2,0) is_space(char c);
-bool BOTAN_PUBLIC_API(2,0) caseless_cmp(char x, char y);
-
-uint8_t BOTAN_PUBLIC_API(2,0) char2digit(char c);
-char BOTAN_PUBLIC_API(2,0) digit2char(uint8_t b);
-
-}
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/codec_base.h b/src/libs/3rdparty/botan/src/lib/utils/codec_base.h
deleted file mode 100644
index e7dbc33e4c..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/codec_base.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
-* Base Encoding and Decoding
-* (C) 2018 Erwan Chaussy
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_BASE_CODEC_H_
-#define BOTAN_BASE_CODEC_H_
-
-#include <botan/secmem.h>
-#include <vector>
-#include <string>
-
-namespace Botan {
-
-/**
-* Perform encoding using the base provided
-* @param base object giving access to the encodings specifications
-* @param output an array of at least base.encode_max_output bytes
-* @param input is some binary data
-* @param input_length length of input in bytes
-* @param input_consumed is an output parameter which says how many
-* bytes of input were actually consumed. If less than
-* input_length, then the range input[consumed:length]
-* should be passed in later along with more input.
-* @param final_inputs true iff this is the last input, in which case
- padding chars will be applied if needed
-* @return number of bytes written to output
-*/
-template <class Base>
-size_t base_encode(Base&& base,
- char output[],
- const uint8_t input[],
- size_t input_length,
- size_t& input_consumed,
- bool final_inputs)
- {
- input_consumed = 0;
-
- const size_t encoding_bytes_in = base.encoding_bytes_in();
- const size_t encoding_bytes_out = base.encoding_bytes_out();
-
- size_t input_remaining = input_length;
- size_t output_produced = 0;
-
- while(input_remaining >= encoding_bytes_in)
- {
- base.encode(output + output_produced, input + input_consumed);
-
- input_consumed += encoding_bytes_in;
- output_produced += encoding_bytes_out;
- input_remaining -= encoding_bytes_in;
- }
-
- if(final_inputs && input_remaining)
- {
- std::vector<uint8_t> remainder(encoding_bytes_in, 0);
- for(size_t i = 0; i != input_remaining; ++i)
- { remainder[i] = input[input_consumed + i]; }
-
- base.encode(output + output_produced, remainder.data());
-
- const size_t bits_consumed = base.bits_consumed();
- const size_t remaining_bits_before_padding = base.remaining_bits_before_padding();
-
- size_t empty_bits = 8 * (encoding_bytes_in - input_remaining);
- size_t index = output_produced + encoding_bytes_out - 1;
- while(empty_bits >= remaining_bits_before_padding)
- {
- output[index--] = '=';
- empty_bits -= bits_consumed;
- }
-
- input_consumed += input_remaining;
- output_produced += encoding_bytes_out;
- }
-
- return output_produced;
- }
-
-/**
-* Perform decoding using the base provided
-* @param base object giving access to the encodings specifications
-* @param output an array of at least base.decode_max_output bytes
-* @param input some base input
-* @param input_length length of input in bytes
-* @param input_consumed is an output parameter which says how many
-* bytes of input were actually consumed. If less than
-* input_length, then the range input[consumed:length]
-* should be passed in later along with more input.
-* @param final_inputs true iff this is the last input, in which case
- padding is allowed
-* @param ignore_ws ignore whitespace on input; if false, throw an
- exception if whitespace is encountered
-* @return number of bytes written to output
-*/
-template <typename Base>
-size_t base_decode(Base&& base,
- uint8_t output[],
- const char input[],
- size_t input_length,
- size_t& input_consumed,
- bool final_inputs,
- bool ignore_ws = true)
- {
- const size_t decoding_bytes_in = base.decoding_bytes_in();
- const size_t decoding_bytes_out = base.decoding_bytes_out();
-
- uint8_t* out_ptr = output;
- std::vector<uint8_t> decode_buf(decoding_bytes_in, 0);
- size_t decode_buf_pos = 0;
- size_t final_truncate = 0;
-
- clear_mem(output, base.decode_max_output(input_length));
-
- for(size_t i = 0; i != input_length; ++i)
- {
- const uint8_t bin = base.lookup_binary_value(input[i]);
-
- if(base.check_bad_char(bin, input[i], ignore_ws)) // May throw Invalid_Argument
- {
- decode_buf[decode_buf_pos] = bin;
- ++decode_buf_pos;
- }
-
- /*
- * If we're at the end of the input, pad with 0s and truncate
- */
- if(final_inputs && (i == input_length - 1))
- {
- if(decode_buf_pos)
- {
- for(size_t j = decode_buf_pos; j < decoding_bytes_in; ++j)
- { decode_buf[j] = 0; }
-
- final_truncate = decoding_bytes_in - decode_buf_pos;
- decode_buf_pos = decoding_bytes_in;
- }
- }
-
- if(decode_buf_pos == decoding_bytes_in)
- {
- base.decode(out_ptr, decode_buf.data());
-
- out_ptr += decoding_bytes_out;
- decode_buf_pos = 0;
- input_consumed = i+1;
- }
- }
-
- while(input_consumed < input_length &&
- base.lookup_binary_value(input[input_consumed]) == 0x80)
- {
- ++input_consumed;
- }
-
- size_t written = (out_ptr - output) - base.bytes_to_remove(final_truncate);
-
- return written;
- }
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/compiler.h b/src/libs/3rdparty/botan/src/lib/utils/compiler.h
deleted file mode 100644
index 202b5cb755..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/compiler.h
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
-* Define useful compiler-specific macros
-* (C) 2016 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-/* This header is included in both C++ and C (via ffi.h) and should only
- contain macro definitions.
-*/
-
-#ifndef BOTAN_UTIL_COMPILER_FLAGS_H_
-#define BOTAN_UTIL_COMPILER_FLAGS_H_
-
-/* Should we use GCC-style inline assembler? */
-#if !defined(BOTAN_USE_GCC_INLINE_ASM) && (defined(__GNUC__) || defined(__xlc__) || defined(__SUNPRO_CC))
- #define BOTAN_USE_GCC_INLINE_ASM 1
-#endif
-
-/**
-* Used to annotate API exports which are public and supported.
-* These APIs will not be broken/removed unless strictly required for
-* functionality or security, and only in new major versions.
-* @param maj The major version this public API was released in
-* @param min The minor version this public API was released in
-*/
-#define BOTAN_PUBLIC_API(maj,min) BOTAN_DLL
-
-/**
-* Used to annotate API exports which are public and can be used by
-* applications if needed, but which are intentionally not documented,
-* and which may change incompatibly in a future major version.
-*/
-#define BOTAN_UNSTABLE_API BOTAN_DLL
-
-/**
-* Used to annotate API exports which are exported but only for the
-* purposes of testing. They should not be used by applications and
-* may be removed or changed without notice.
-*/
-#define BOTAN_TEST_API BOTAN_DLL
-
-/*
-* Define BOTAN_GCC_VERSION
-*/
-#ifdef __GNUC__
- #define BOTAN_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__ * 10 + __GNUC_PATCHLEVEL__)
-#else
- #define BOTAN_GCC_VERSION 0
-#endif
-
-/*
-* Define BOTAN_CLANG_VERSION
-*/
-#ifdef __clang__
- #define BOTAN_CLANG_VERSION (__clang_major__ * 10 + __clang_minor__)
-#else
- #define BOTAN_CLANG_VERSION 0
-#endif
-
-/*
-* Define special macro when building under MSVC 2013 since there are
-* many compiler workarounds required for that version.
-*/
-#if defined(_MSC_VER) && (_MSC_VER < 1900)
- #define BOTAN_BUILD_COMPILER_IS_MSVC_2013
-#endif
-
-/*
-* Define BOTAN_FUNC_ISA
-*/
-#if (defined(__GNUG__) && !defined(__clang__)) || (BOTAN_CLANG_VERSION > 38)
- #define BOTAN_FUNC_ISA(isa) __attribute__ ((target(isa)))
-#else
- #define BOTAN_FUNC_ISA(isa)
-#endif
-
-/*
-* Define BOTAN_WARN_UNUSED_RESULT
-*/
-#if defined(__GNUG__) || defined(__clang__)
- #define BOTAN_WARN_UNUSED_RESULT __attribute__ ((warn_unused_result))
-#else
- #define BOTAN_WARN_UNUSED_RESULT
-#endif
-
-/*
-* Define BOTAN_MALLOC_FN
-*/
-#if defined(__GNUG__) || defined(__clang__)
- #define BOTAN_MALLOC_FN __attribute__ ((malloc))
-#elif defined(_MSC_VER)
- #define BOTAN_MALLOC_FN __declspec(restrict)
-#else
- #define BOTAN_MALLOC_FN
-#endif
-
-/*
-* Define BOTAN_DEPRECATED
-*/
-#if !defined(BOTAN_NO_DEPRECATED_WARNINGS)
-
- #if defined(__clang__)
- #define BOTAN_DEPRECATED(msg) __attribute__ ((deprecated))
-
- #elif defined(_MSC_VER)
- #define BOTAN_DEPRECATED(msg) __declspec(deprecated(msg))
-
- #elif defined(__GNUG__)
- // msg supported since GCC 4.5, earliest we support is 4.8
- #define BOTAN_DEPRECATED(msg) __attribute__ ((deprecated(msg)))
- #endif
-
-#endif
-
-#if !defined(BOTAN_DEPRECATED)
- #define BOTAN_DEPRECATED(msg)
-#endif
-
-/*
-* Define BOTAN_NORETURN
-*/
-#if !defined(BOTAN_NORETURN)
-
- #if defined (__clang__) || defined (__GNUG__)
- #define BOTAN_NORETURN __attribute__ ((__noreturn__))
-
- #elif defined (_MSC_VER)
- #define BOTAN_NORETURN __declspec(noreturn)
-
- #else
- #define BOTAN_NORETURN
- #endif
-
-#endif
-
-/*
-* Define BOTAN_CURRENT_FUNCTION
-*/
-#if defined(BOTAN_BUILD_COMPILER_IS_MSVC_2013)
- #define BOTAN_CURRENT_FUNCTION __FUNCTION__
-#else
- #define BOTAN_CURRENT_FUNCTION __func__
-#endif
-
-/*
-* Define BOTAN_NOEXCEPT (for MSVC 2013)
-*/
-#if defined(BOTAN_BUILD_COMPILER_IS_MSVC_2013)
- // noexcept is not supported in VS 2013
- #include <yvals.h>
- #define BOTAN_NOEXCEPT _NOEXCEPT
-#else
- #define BOTAN_NOEXCEPT noexcept
-#endif
-
-/*
-* Define BOTAN_CONSTEXPR (for MSVC 2013)
-*/
-#if defined(BOTAN_BUILD_COMPILER_IS_MSVC_2013)
- #define BOTAN_CONSTEXPR /**/
-#else
- #define BOTAN_CONSTEXPR constexpr
-#endif
-
-/*
-* Define BOTAN_ALIGNAS (for MSVC 2013)
-*/
-#if defined(BOTAN_BUILD_COMPILER_IS_MSVC_2013)
- #define BOTAN_ALIGNAS(n) /**/
-#else
- #define BOTAN_ALIGNAS(n) alignas(n)
-#endif
-
-/*
-* Define BOTAN_PARALLEL_FOR
-*/
-#if !defined(BOTAN_PARALLEL_FOR)
-
-#if defined(BOTAN_TARGET_HAS_OPENMP)
- #define BOTAN_PARALLEL_FOR _Pragma("omp parallel for") for
-#else
- #define BOTAN_PARALLEL_FOR for
-#endif
-
-#endif
-
-/*
-* Define BOTAN_PARALLEL_SIMD_FOR
-*/
-#if !defined(BOTAN_PARALLEL_SIMD_FOR)
-
-#if defined(BOTAN_TARGET_HAS_OPENMP)
- #define BOTAN_PARALLEL_SIMD_FOR _Pragma("omp simd") for
-#elif defined(BOTAN_BUILD_COMPILER_IS_GCC) && (BOTAN_GCC_VERSION >= 490)
- #define BOTAN_PARALLEL_SIMD_FOR _Pragma("GCC ivdep") for
-#else
- #define BOTAN_PARALLEL_SIMD_FOR for
-#endif
-
-#endif
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid.cpp b/src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid.cpp
deleted file mode 100644
index d2d08dd435..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid.cpp
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
-* Runtime CPU detection
-* (C) 2009,2010,2013,2017 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/cpuid.h>
-#include <botan/types.h>
-#include <botan/exceptn.h>
-#include <botan/parsing.h>
-#include <ostream>
-
-namespace Botan {
-
-uint64_t CPUID::g_processor_features = 0;
-size_t CPUID::g_cache_line_size = BOTAN_TARGET_CPU_DEFAULT_CACHE_LINE_SIZE;
-CPUID::Endian_status CPUID::g_endian_status = ENDIAN_UNKNOWN;
-
-bool CPUID::has_simd_32()
- {
-#if defined(BOTAN_TARGET_SUPPORTS_SSE2)
- return CPUID::has_sse2();
-#elif defined(BOTAN_TARGET_SUPPORTS_ALTIVEC)
- return CPUID::has_altivec();
-#elif defined(BOTAN_TARGET_SUPPORTS_NEON)
- return CPUID::has_neon();
-#else
- return true;
-#endif
- }
-
-//static
-std::string CPUID::to_string()
- {
- std::vector<std::string> flags;
-
-#define CPUID_PRINT(flag) do { if(has_##flag()) { flags.push_back(#flag); } } while(0)
-
-#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
- CPUID_PRINT(sse2);
- CPUID_PRINT(ssse3);
- CPUID_PRINT(sse41);
- CPUID_PRINT(sse42);
- CPUID_PRINT(avx2);
- CPUID_PRINT(avx512f);
-
- CPUID_PRINT(rdtsc);
- CPUID_PRINT(bmi1);
- CPUID_PRINT(bmi2);
- CPUID_PRINT(adx);
-
- CPUID_PRINT(aes_ni);
- CPUID_PRINT(clmul);
- CPUID_PRINT(rdrand);
- CPUID_PRINT(rdseed);
- CPUID_PRINT(intel_sha);
-#endif
-
-#if defined(BOTAN_TARGET_CPU_IS_PPC_FAMILY)
- CPUID_PRINT(altivec);
- CPUID_PRINT(ppc_crypto);
-#endif
-
-#if defined(BOTAN_TARGET_CPU_IS_ARM_FAMILY)
- CPUID_PRINT(neon);
- CPUID_PRINT(arm_sve);
-
- CPUID_PRINT(arm_sha1);
- CPUID_PRINT(arm_sha2);
- CPUID_PRINT(arm_aes);
- CPUID_PRINT(arm_pmull);
- CPUID_PRINT(arm_sha2_512);
- CPUID_PRINT(arm_sha3);
- CPUID_PRINT(arm_sm3);
- CPUID_PRINT(arm_sm4);
-#endif
-
-#undef CPUID_PRINT
-
- return string_join(flags, ' ');
- }
-
-//static
-void CPUID::print(std::ostream& o)
- {
- o << "CPUID flags: " << CPUID::to_string() << "\n";
- }
-
-//static
-void CPUID::initialize()
- {
- g_processor_features = 0;
-
-#if defined(BOTAN_TARGET_CPU_IS_PPC_FAMILY) || \
- defined(BOTAN_TARGET_CPU_IS_ARM_FAMILY) || \
- defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
-
- g_processor_features = CPUID::detect_cpu_features(&g_cache_line_size);
-
-#endif
-
- g_endian_status = runtime_check_endian();
- g_processor_features |= CPUID::CPUID_INITIALIZED_BIT;
- }
-
-//static
-CPUID::Endian_status CPUID::runtime_check_endian()
- {
- // Check runtime endian
- const uint32_t endian32 = 0x01234567;
- const uint8_t* e8 = reinterpret_cast<const uint8_t*>(&endian32);
-
- Endian_status endian = ENDIAN_UNKNOWN;
-
- if(e8[0] == 0x01 && e8[1] == 0x23 && e8[2] == 0x45 && e8[3] == 0x67)
- {
- endian = ENDIAN_BIG;
- }
- else if(e8[0] == 0x67 && e8[1] == 0x45 && e8[2] == 0x23 && e8[3] == 0x01)
- {
- endian = ENDIAN_LITTLE;
- }
- else
- {
- throw Internal_Error("Unexpected endian at runtime, neither big nor little");
- }
-
- // If we were compiled with a known endian, verify it matches at runtime
-#if defined(BOTAN_TARGET_CPU_IS_LITTLE_ENDIAN)
- BOTAN_ASSERT(endian == ENDIAN_LITTLE, "Build and runtime endian match");
-#elif defined(BOTAN_TARGET_CPU_IS_BIG_ENDIAN)
- BOTAN_ASSERT(endian == ENDIAN_BIG, "Build and runtime endian match");
-#endif
-
- return endian;
- }
-
-std::vector<Botan::CPUID::CPUID_bits>
-CPUID::bit_from_string(const std::string& tok)
- {
-#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
- if(tok == "sse2" || tok == "simd")
- return {Botan::CPUID::CPUID_SSE2_BIT};
- if(tok == "ssse3")
- return {Botan::CPUID::CPUID_SSSE3_BIT};
- if(tok == "aesni")
- return {Botan::CPUID::CPUID_AESNI_BIT};
- if(tok == "clmul")
- return {Botan::CPUID::CPUID_CLMUL_BIT};
- if(tok == "avx2")
- return {Botan::CPUID::CPUID_AVX2_BIT};
- if(tok == "sha")
- return {Botan::CPUID::CPUID_SHA_BIT};
- if(tok == "bmi2")
- return {Botan::CPUID::CPUID_BMI2_BIT};
- if(tok == "adx")
- return {Botan::CPUID::CPUID_ADX_BIT};
- if(tok == "intel_sha")
- return {Botan::CPUID::CPUID_SHA_BIT};
-
-#elif defined(BOTAN_TARGET_CPU_IS_PPC_FAMILY)
- if(tok == "altivec" || tok == "simd")
- return {Botan::CPUID::CPUID_ALTIVEC_BIT};
- if(tok == "ppc_crypto")
- return {Botan::CPUID::CPUID_PPC_CRYPTO_BIT};
-
-#elif defined(BOTAN_TARGET_CPU_IS_ARM_FAMILY)
- if(tok == "neon" || tok == "simd")
- return {Botan::CPUID::CPUID_ARM_NEON_BIT};
- if(tok == "armv8sha1")
- return {Botan::CPUID::CPUID_ARM_SHA1_BIT};
- if(tok == "armv8sha2")
- return {Botan::CPUID::CPUID_ARM_SHA2_BIT};
- if(tok == "armv8aes")
- return {Botan::CPUID::CPUID_ARM_AES_BIT};
- if(tok == "armv8pmull")
- return {Botan::CPUID::CPUID_ARM_PMULL_BIT};
- if(tok == "armv8sha3")
- return {Botan::CPUID::CPUID_ARM_SHA3_BIT};
- if(tok == "armv8sha2_512")
- return {Botan::CPUID::CPUID_ARM_SHA2_512_BIT};
- if(tok == "armv8sm3")
- return {Botan::CPUID::CPUID_ARM_SM3_BIT};
- if(tok == "armv8sm4")
- return {Botan::CPUID::CPUID_ARM_SM4_BIT};
-
-#else
- BOTAN_UNUSED(tok);
-#endif
-
- return {};
- }
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid.h b/src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid.h
deleted file mode 100644
index 95f6d687bb..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid.h
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
-* Runtime CPU detection
-* (C) 2009,2010,2013,2017 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_CPUID_H_
-#define BOTAN_CPUID_H_
-
-#include <botan/types.h>
-#include <vector>
-#include <string>
-#include <iosfwd>
-
-namespace Botan {
-
-/**
-* A class handling runtime CPU feature detection. It is limited to
-* just the features necessary to implement CPU specific code in Botan,
-* rather than being a general purpose utility.
-*
-* This class supports:
-*
-* - x86 features using CPUID. x86 is also the only processor with
-* accurate cache line detection currently.
-*
-* - PowerPC AltiVec detection on Linux, NetBSD, OpenBSD, and Darwin
-*
-* - ARM NEON and crypto extensions detection. On Linux and Android
-* systems which support getauxval, that is used to access CPU
-* feature information. Otherwise a relatively portable but
-* thread-unsafe mechanism involving executing probe functions which
-* catching SIGILL signal is used.
-*/
-class BOTAN_PUBLIC_API(2,1) CPUID final
- {
- public:
- /**
- * Probe the CPU and see what extensions are supported
- */
- static void initialize();
-
- static bool has_simd_32();
-
- /**
- * Deprecated equivalent to
- * o << "CPUID flags: " << CPUID::to_string() << "\n";
- */
- BOTAN_DEPRECATED("Use CPUID::to_string")
- static void print(std::ostream& o);
-
- /**
- * Return a possibly empty string containing list of known CPU
- * extensions. Each name will be seperated by a space, and the ordering
- * will be arbitrary. This list only contains values that are useful to
- * Botan (for example FMA instructions are not checked).
- *
- * Example outputs "sse2 ssse3 rdtsc", "neon arm_aes", "altivec"
- */
- static std::string to_string();
-
- /**
- * Return a best guess of the cache line size
- */
- static size_t cache_line_size()
- {
- if(g_processor_features == 0)
- {
- initialize();
- }
- return g_cache_line_size;
- }
-
- static bool is_little_endian()
- {
- return endian_status() == ENDIAN_LITTLE;
- }
-
- static bool is_big_endian()
- {
- return endian_status() == ENDIAN_BIG;
- }
-
- enum CPUID_bits : uint64_t {
-#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
- // These values have no relation to cpuid bitfields
-
- // SIMD instruction sets
- CPUID_SSE2_BIT = (1ULL << 0),
- CPUID_SSSE3_BIT = (1ULL << 1),
- CPUID_SSE41_BIT = (1ULL << 2),
- CPUID_SSE42_BIT = (1ULL << 3),
- CPUID_AVX2_BIT = (1ULL << 4),
- CPUID_AVX512F_BIT = (1ULL << 5),
-
- // Misc useful instructions
- CPUID_RDTSC_BIT = (1ULL << 10),
- CPUID_BMI2_BIT = (1ULL << 11),
- CPUID_ADX_BIT = (1ULL << 12),
- CPUID_BMI1_BIT = (1ULL << 13),
-
- // Crypto-specific ISAs
- CPUID_AESNI_BIT = (1ULL << 16),
- CPUID_CLMUL_BIT = (1ULL << 17),
- CPUID_RDRAND_BIT = (1ULL << 18),
- CPUID_RDSEED_BIT = (1ULL << 19),
- CPUID_SHA_BIT = (1ULL << 20),
-#endif
-
-#if defined(BOTAN_TARGET_CPU_IS_PPC_FAMILY)
- CPUID_ALTIVEC_BIT = (1ULL << 0),
- CPUID_PPC_CRYPTO_BIT = (1ULL << 1),
-#endif
-
-#if defined(BOTAN_TARGET_CPU_IS_ARM_FAMILY)
- CPUID_ARM_NEON_BIT = (1ULL << 0),
- CPUID_ARM_SVE_BIT = (1ULL << 1),
- CPUID_ARM_AES_BIT = (1ULL << 16),
- CPUID_ARM_PMULL_BIT = (1ULL << 17),
- CPUID_ARM_SHA1_BIT = (1ULL << 18),
- CPUID_ARM_SHA2_BIT = (1ULL << 19),
- CPUID_ARM_SHA3_BIT = (1ULL << 20),
- CPUID_ARM_SHA2_512_BIT = (1ULL << 21),
- CPUID_ARM_SM3_BIT = (1ULL << 22),
- CPUID_ARM_SM4_BIT = (1ULL << 23),
-#endif
-
- CPUID_INITIALIZED_BIT = (1ULL << 63)
- };
-
-#if defined(BOTAN_TARGET_CPU_IS_PPC_FAMILY)
- /**
- * Check if the processor supports AltiVec/VMX
- */
- static bool has_altivec()
- { return has_cpuid_bit(CPUID_ALTIVEC_BIT); }
-
- /**
- * Check if the processor supports POWER8 crypto extensions
- */
- static bool has_ppc_crypto()
- { return has_cpuid_bit(CPUID_PPC_CRYPTO_BIT); }
-
-#endif
-
-#if defined(BOTAN_TARGET_CPU_IS_ARM_FAMILY)
- /**
- * Check if the processor supports NEON SIMD
- */
- static bool has_neon()
- { return has_cpuid_bit(CPUID_ARM_NEON_BIT); }
-
- /**
- * Check if the processor supports ARMv8 SVE
- */
- static bool has_arm_sve()
- { return has_cpuid_bit(CPUID_ARM_SVE_BIT); }
-
- /**
- * Check if the processor supports ARMv8 SHA1
- */
- static bool has_arm_sha1()
- { return has_cpuid_bit(CPUID_ARM_SHA1_BIT); }
-
- /**
- * Check if the processor supports ARMv8 SHA2
- */
- static bool has_arm_sha2()
- { return has_cpuid_bit(CPUID_ARM_SHA2_BIT); }
-
- /**
- * Check if the processor supports ARMv8 AES
- */
- static bool has_arm_aes()
- { return has_cpuid_bit(CPUID_ARM_AES_BIT); }
-
- /**
- * Check if the processor supports ARMv8 PMULL
- */
- static bool has_arm_pmull()
- { return has_cpuid_bit(CPUID_ARM_PMULL_BIT); }
-
- /**
- * Check if the processor supports ARMv8 SHA-512
- */
- static bool has_arm_sha2_512()
- { return has_cpuid_bit(CPUID_ARM_SHA2_512_BIT); }
-
- /**
- * Check if the processor supports ARMv8 SHA-3
- */
- static bool has_arm_sha3()
- { return has_cpuid_bit(CPUID_ARM_SHA3_BIT); }
-
- /**
- * Check if the processor supports ARMv8 SM3
- */
- static bool has_arm_sm3()
- { return has_cpuid_bit(CPUID_ARM_SM3_BIT); }
-
- /**
- * Check if the processor supports ARMv8 SM4
- */
- static bool has_arm_sm4()
- { return has_cpuid_bit(CPUID_ARM_SM4_BIT); }
-
-#endif
-
-#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
-
- /**
- * Check if the processor supports RDTSC
- */
- static bool has_rdtsc()
- { return has_cpuid_bit(CPUID_RDTSC_BIT); }
-
- /**
- * Check if the processor supports SSE2
- */
- static bool has_sse2()
- { return has_cpuid_bit(CPUID_SSE2_BIT); }
-
- /**
- * Check if the processor supports SSSE3
- */
- static bool has_ssse3()
- { return has_cpuid_bit(CPUID_SSSE3_BIT); }
-
- /**
- * Check if the processor supports SSE4.1
- */
- static bool has_sse41()
- { return has_cpuid_bit(CPUID_SSE41_BIT); }
-
- /**
- * Check if the processor supports SSE4.2
- */
- static bool has_sse42()
- { return has_cpuid_bit(CPUID_SSE42_BIT); }
-
- /**
- * Check if the processor supports AVX2
- */
- static bool has_avx2()
- { return has_cpuid_bit(CPUID_AVX2_BIT); }
-
- /**
- * Check if the processor supports AVX-512F
- */
- static bool has_avx512f()
- { return has_cpuid_bit(CPUID_AVX512F_BIT); }
-
- /**
- * Check if the processor supports BMI1
- */
- static bool has_bmi1()
- { return has_cpuid_bit(CPUID_BMI1_BIT); }
-
- /**
- * Check if the processor supports BMI2
- */
- static bool has_bmi2()
- { return has_cpuid_bit(CPUID_BMI2_BIT); }
-
- /**
- * Check if the processor supports AES-NI
- */
- static bool has_aes_ni()
- { return has_cpuid_bit(CPUID_AESNI_BIT); }
-
- /**
- * Check if the processor supports CLMUL
- */
- static bool has_clmul()
- { return has_cpuid_bit(CPUID_CLMUL_BIT); }
-
- /**
- * Check if the processor supports Intel SHA extension
- */
- static bool has_intel_sha()
- { return has_cpuid_bit(CPUID_SHA_BIT); }
-
- /**
- * Check if the processor supports ADX extension
- */
- static bool has_adx()
- { return has_cpuid_bit(CPUID_ADX_BIT); }
-
- /**
- * Check if the processor supports RDRAND
- */
- static bool has_rdrand()
- { return has_cpuid_bit(CPUID_RDRAND_BIT); }
-
- /**
- * Check if the processor supports RDSEED
- */
- static bool has_rdseed()
- { return has_cpuid_bit(CPUID_RDSEED_BIT); }
-#endif
-
- /*
- * Clear a CPUID bit
- * Call CPUID::initialize to reset
- *
- * This is only exposed for testing, don't use unless you know
- * what you are doing.
- */
- static void clear_cpuid_bit(CPUID_bits bit)
- {
- const uint64_t mask = ~(static_cast<uint64_t>(bit));
- g_processor_features &= mask;
- }
-
- /*
- * Don't call this function, use CPUID::has_xxx above
- * It is only exposed for the tests.
- */
- static bool has_cpuid_bit(CPUID_bits elem)
- {
- if(g_processor_features == 0)
- initialize();
-
- const uint64_t elem64 = static_cast<uint64_t>(elem);
- return ((g_processor_features & elem64) == elem64);
- }
-
- static std::vector<CPUID::CPUID_bits> bit_from_string(const std::string& tok);
- private:
- enum Endian_status : uint32_t {
- ENDIAN_UNKNOWN = 0x00000000,
- ENDIAN_BIG = 0x01234567,
- ENDIAN_LITTLE = 0x67452301,
- };
-
-#if defined(BOTAN_TARGET_CPU_IS_PPC_FAMILY) || \
- defined(BOTAN_TARGET_CPU_IS_ARM_FAMILY) || \
- defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
-
- static uint64_t detect_cpu_features(size_t* cache_line_size);
-
-#endif
-
- static Endian_status runtime_check_endian();
-
- static Endian_status endian_status()
- {
- if(g_endian_status == ENDIAN_UNKNOWN)
- {
- g_endian_status = runtime_check_endian();
- }
- return g_endian_status;
- }
-
- static uint64_t g_processor_features;
- static size_t g_cache_line_size;
- static Endian_status g_endian_status;
- };
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid_arm.cpp b/src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid_arm.cpp
deleted file mode 100644
index beb80f7d06..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid_arm.cpp
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
-* Runtime CPU detection for ARM
-* (C) 2009,2010,2013,2017 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/cpuid.h>
-
-#if defined(BOTAN_TARGET_CPU_IS_ARM_FAMILY)
-
-#if defined(BOTAN_TARGET_OS_HAS_GETAUXVAL)
- #include <sys/auxv.h>
-
-#elif defined(BOTAN_TARGET_OS_IS_IOS)
- #include <sys/types.h>
- #include <sys/sysctl.h>
-
-#else
- #include <botan/internal/os_utils.h>
-
-#endif
-
-#endif
-
-namespace Botan {
-
-#if defined(BOTAN_TARGET_CPU_IS_ARM_FAMILY)
-
-#if defined(BOTAN_TARGET_OS_IS_IOS)
-
-namespace {
-
-uint64_t flags_by_ios_machine_type(const std::string& machine)
- {
- /*
- * This relies on a map of known machine names to features. This
- * will quickly grow out of date as new products are introduced, but
- * is apparently the best we can do for iOS.
- */
-
- struct version_info {
- std::string name;
- size_t min_version_neon;
- size_t min_version_armv8;
- };
-
- static const version_info min_versions[] = {
- { "iPhone", 2, 6 },
- { "iPad", 1, 4 },
- { "iPod", 4, 7 },
- { "AppleTV", 2, 5 },
- };
-
- if(machine.size() < 3)
- return 0;
-
- auto comma = machine.find(',');
-
- // Simulator, or something we don't know about
- if(comma == std::string::npos)
- return 0;
-
- std::string product = machine.substr(0, comma);
-
- size_t version = 0;
- size_t place = 1;
- while(product.size() > 1 && ::isdigit(product.back()))
- {
- const size_t digit = product.back() - '0';
- version += digit * place;
- place *= 10;
- product.pop_back();
- }
-
- if(version == 0)
- return 0;
-
- for(const version_info& info : min_versions)
- {
- if(info.name != product)
- continue;
-
- if(version >= info.min_version_armv8)
- {
- return CPUID::CPUID_ARM_AES_BIT |
- CPUID::CPUID_ARM_PMULL_BIT |
- CPUID::CPUID_ARM_SHA1_BIT |
- CPUID::CPUID_ARM_SHA2_BIT |
- CPUID::CPUID_ARM_NEON_BIT;
- }
-
- if(version >= info.min_version_neon)
- return CPUID::CPUID_ARM_NEON_BIT;
- }
-
- // Some other product we don't know about
- return 0;
- }
-
-}
-
-#endif
-
-uint64_t CPUID::detect_cpu_features(size_t* cache_line_size)
- {
- uint64_t detected_features = 0;
-
-#if defined(BOTAN_TARGET_OS_HAS_GETAUXVAL)
- /*
- * On systems with getauxval these bits should normally be defined
- * in bits/auxv.h but some buggy? glibc installs seem to miss them.
- * These following values are all fixed, for the Linux ELF format,
- * so we just hardcode them in ARM_hwcap_bit enum.
- */
-
- enum ARM_hwcap_bit {
-#if defined(BOTAN_TARGET_ARCH_IS_ARM32)
- NEON_bit = (1 << 12),
- AES_bit = (1 << 0),
- PMULL_bit = (1 << 1),
- SHA1_bit = (1 << 2),
- SHA2_bit = (1 << 3),
-
- ARCH_hwcap_neon = 16, // AT_HWCAP
- ARCH_hwcap_crypto = 26, // AT_HWCAP2
-#elif defined(BOTAN_TARGET_ARCH_IS_ARM64)
- NEON_bit = (1 << 1),
- AES_bit = (1 << 3),
- PMULL_bit = (1 << 4),
- SHA1_bit = (1 << 5),
- SHA2_bit = (1 << 6),
- SHA3_bit = (1 << 17),
- SM3_bit = (1 << 18),
- SM4_bit = (1 << 19),
- SHA2_512_bit = (1 << 21),
- SVE_bit = (1 << 22),
-
- ARCH_hwcap_neon = 16, // AT_HWCAP
- ARCH_hwcap_crypto = 16, // AT_HWCAP
-#endif
- };
-
-#if defined(AT_DCACHEBSIZE)
- const unsigned long dcache_line = ::getauxval(AT_DCACHEBSIZE);
-
- // plausibility check
- if(dcache_line == 32 || dcache_line == 64 || dcache_line == 128)
- *cache_line_size = static_cast<size_t>(dcache_line);
-#endif
-
- const unsigned long hwcap_neon = ::getauxval(ARM_hwcap_bit::ARCH_hwcap_neon);
- if(hwcap_neon & ARM_hwcap_bit::NEON_bit)
- detected_features |= CPUID::CPUID_ARM_NEON_BIT;
-
- /*
- On aarch64 this ends up calling getauxval twice with AT_HWCAP
- It doesn't seem worth optimizing this out, since getauxval is
- just reading a field in the ELF header.
- */
- const unsigned long hwcap_crypto = ::getauxval(ARM_hwcap_bit::ARCH_hwcap_crypto);
- if(hwcap_crypto & ARM_hwcap_bit::AES_bit)
- detected_features |= CPUID::CPUID_ARM_AES_BIT;
- if(hwcap_crypto & ARM_hwcap_bit::PMULL_bit)
- detected_features |= CPUID::CPUID_ARM_PMULL_BIT;
- if(hwcap_crypto & ARM_hwcap_bit::SHA1_bit)
- detected_features |= CPUID::CPUID_ARM_SHA1_BIT;
- if(hwcap_crypto & ARM_hwcap_bit::SHA2_bit)
- detected_features |= CPUID::CPUID_ARM_SHA2_BIT;
-
-#if defined(BOTAN_TARGET_ARCH_IS_ARM64)
- if(hwcap_crypto & ARM_hwcap_bit::SHA3_bit)
- detected_features |= CPUID::CPUID_ARM_SHA3_BIT;
- if(hwcap_crypto & ARM_hwcap_bit::SM3_bit)
- detected_features |= CPUID::CPUID_ARM_SM3_BIT;
- if(hwcap_crypto & ARM_hwcap_bit::SM4_bit)
- detected_features |= CPUID::CPUID_ARM_SM4_BIT;
- if(hwcap_crypto & ARM_hwcap_bit::SHA2_512_bit)
- detected_features |= CPUID::CPUID_ARM_SHA2_512_BIT;
- if(hwcap_crypto & ARM_hwcap_bit::SVE_bit)
- detected_features |= CPUID::CPUID_ARM_SVE_BIT;
-#endif
-
-#elif defined(BOTAN_TARGET_OS_IS_IOS)
-
- char machine[64] = { 0 };
- size_t size = sizeof(machine) - 1;
- ::sysctlbyname("hw.machine", machine, &size, nullptr, 0);
-
- detected_features = flags_by_ios_machine_type(machine);
-
-#elif defined(BOTAN_USE_GCC_INLINE_ASM) && defined(BOTAN_TARGET_ARCH_IS_ARM64)
-
- /*
- No getauxval API available, fall back on probe functions. We only
- bother with Aarch64 here to simplify the code and because going to
- extreme contortions to support detect NEON on devices that probably
- don't support it doesn't seem worthwhile.
-
- NEON registers v0-v7 are caller saved in Aarch64
- */
-
- auto neon_probe = []() -> int { asm("and v0.16b, v0.16b, v0.16b"); return 1; };
- auto aes_probe = []() -> int { asm(".word 0x4e284800"); return 1; };
- auto pmull_probe = []() -> int { asm(".word 0x0ee0e000"); return 1; };
- auto sha1_probe = []() -> int { asm(".word 0x5e280800"); return 1; };
- auto sha2_probe = []() -> int { asm(".word 0x5e282800"); return 1; };
-
- // Only bother running the crypto detection if we found NEON
-
- if(OS::run_cpu_instruction_probe(neon_probe) == 1)
- {
- detected_features |= CPUID::CPUID_ARM_NEON_BIT;
-
- if(OS::run_cpu_instruction_probe(aes_probe) == 1)
- detected_features |= CPUID::CPUID_ARM_AES_BIT;
- if(OS::run_cpu_instruction_probe(pmull_probe) == 1)
- detected_features |= CPUID::CPUID_ARM_PMULL_BIT;
- if(OS::run_cpu_instruction_probe(sha1_probe) == 1)
- detected_features |= CPUID::CPUID_ARM_SHA1_BIT;
- if(OS::run_cpu_instruction_probe(sha2_probe) == 1)
- detected_features |= CPUID::CPUID_ARM_SHA2_BIT;
- }
-
-#endif
-
- return detected_features;
- }
-
-#endif
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid_ppc.cpp b/src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid_ppc.cpp
deleted file mode 100644
index 43b6847852..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid_ppc.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
-* Runtime CPU detection for POWER/PowerPC
-* (C) 2009,2010,2013,2017 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/cpuid.h>
-#include <botan/internal/os_utils.h>
-
-#if defined(BOTAN_TARGET_CPU_IS_PPC_FAMILY)
-
-/*
-* On Darwin and OpenBSD ppc, use sysctl to detect AltiVec
-*/
-#if defined(BOTAN_TARGET_OS_IS_DARWIN)
- #include <sys/sysctl.h>
-#elif defined(BOTAN_TARGET_OS_IS_OPENBSD)
- #include <sys/param.h>
- #include <sys/sysctl.h>
- #include <machine/cpu.h>
-#elif defined(BOTAN_TARGET_OS_HAS_GETAUXVAL)
- #include <sys/auxv.h>
-#endif
-
-#endif
-
-namespace Botan {
-
-#if defined(BOTAN_TARGET_CPU_IS_PPC_FAMILY)
-
-/*
-* PowerPC specific block: check for AltiVec using either
-* sysctl or by reading processor version number register.
-*/
-uint64_t CPUID::detect_cpu_features(size_t* cache_line_size)
- {
- BOTAN_UNUSED(cache_line_size);
-
-#if defined(BOTAN_TARGET_OS_IS_DARWIN) || defined(BOTAN_TARGET_OS_IS_OPENBSD)
- // On Darwin/OS X and OpenBSD, use sysctl
-
- int sels[2] = {
-#if defined(BOTAN_TARGET_OS_IS_OPENBSD)
- CTL_MACHDEP, CPU_ALTIVEC
-#else
- CTL_HW, HW_VECTORUNIT
-#endif
- };
-
- int vector_type = 0;
- size_t length = sizeof(vector_type);
- int error = ::sysctl(sels, 2, &vector_type, &length, NULL, 0);
-
- if(error == 0 && vector_type > 0)
- return CPUID::CPUID_ALTIVEC_BIT;
-
-#elif defined(BOTAN_TARGET_OS_HAS_GETAUXVAL) && defined(BOTAN_TARGET_ARCH_IS_PPC64)
-
- enum PPC_hwcap_bit {
- ALTIVEC_bit = (1 << 28),
- CRYPTO_bit = (1 << 25),
-
- ARCH_hwcap_altivec = 16, // AT_HWCAP
- ARCH_hwcap_crypto = 26, // AT_HWCAP2
- };
-
- uint64_t detected_features = 0;
-
- const unsigned long hwcap_altivec = ::getauxval(PPC_hwcap_bit::ARCH_hwcap_altivec);
- if(hwcap_altivec & PPC_hwcap_bit::ALTIVEC_bit)
- detected_features |= CPUID::CPUID_ALTIVEC_BIT;
-
- const unsigned long hwcap_crypto = ::getauxval(PPC_hwcap_bit::ARCH_hwcap_crypto);
- if(hwcap_crypto & PPC_hwcap_bit::CRYPTO_bit)
- detected_features |= CPUID::CPUID_PPC_CRYPTO_BIT;
-
- return detected_features;
-
-#else
-
- /*
- On PowerPC, MSR 287 is PVR, the Processor Version Number
- Normally it is only accessible to ring 0, but Linux and NetBSD
- (others, too, maybe?) will trap and emulate it for us.
- */
-
- int pvr = OS::run_cpu_instruction_probe([]() -> int {
- uint32_t pvr = 0;
- asm volatile("mfspr %0, 287" : "=r" (pvr));
- // Top 16 bits suffice to identify the model
- return static_cast<int>(pvr >> 16);
- });
-
- if(pvr > 0)
- {
- const uint16_t ALTIVEC_PVR[] = {
- 0x003E, // IBM POWER6
- 0x003F, // IBM POWER7
- 0x004A, // IBM POWER7p
- 0x004D, // IBM POWER8
- 0x004B, // IBM POWER8E
- 0x000C, // G4-7400
- 0x0039, // G5 970
- 0x003C, // G5 970FX
- 0x0044, // G5 970MP
- 0x0070, // Cell PPU
- 0, // end
- };
-
- for(size_t i = 0; ALTIVEC_PVR[i]; ++i)
- {
- if(pvr == ALTIVEC_PVR[i])
- return CPUID::CPUID_ALTIVEC_BIT;
- }
-
- return 0;
- }
-
- // TODO try direct instruction probing
-
-#endif
-
- return 0;
- }
-
-#endif
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid_x86.cpp b/src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid_x86.cpp
deleted file mode 100644
index 5387a801ec..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/cpuid/cpuid_x86.cpp
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
-* Runtime CPU detection for x86
-* (C) 2009,2010,2013,2017 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/cpuid.h>
-#include <botan/mem_ops.h>
-#include <botan/loadstor.h>
-
-#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
-
-#if defined(BOTAN_BUILD_COMPILER_IS_MSVC)
- #include <intrin.h>
-#elif defined(BOTAN_BUILD_COMPILER_IS_INTEL)
- #include <ia32intrin.h>
-#elif defined(BOTAN_BUILD_COMPILER_IS_GCC) || defined(BOTAN_BUILD_COMPILER_IS_CLANG)
- #include <cpuid.h>
-#endif
-
-#endif
-
-namespace Botan {
-
-#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
-
-uint64_t CPUID::detect_cpu_features(size_t* cache_line_size)
- {
-#if defined(BOTAN_BUILD_COMPILER_IS_MSVC)
- #define X86_CPUID(type, out) do { __cpuid((int*)out, type); } while(0)
- #define X86_CPUID_SUBLEVEL(type, level, out) do { __cpuidex((int*)out, type, level); } while(0)
-
-#elif defined(BOTAN_BUILD_COMPILER_IS_INTEL)
- #define X86_CPUID(type, out) do { __cpuid(out, type); } while(0)
- #define X86_CPUID_SUBLEVEL(type, level, out) do { __cpuidex((int*)out, type, level); } while(0)
-
-#elif defined(BOTAN_TARGET_ARCH_IS_X86_64) && defined(BOTAN_USE_GCC_INLINE_ASM)
- #define X86_CPUID(type, out) \
- asm("cpuid\n\t" : "=a" (out[0]), "=b" (out[1]), "=c" (out[2]), "=d" (out[3]) \
- : "0" (type))
-
- #define X86_CPUID_SUBLEVEL(type, level, out) \
- asm("cpuid\n\t" : "=a" (out[0]), "=b" (out[1]), "=c" (out[2]), "=d" (out[3]) \
- : "0" (type), "2" (level))
-
-#elif defined(BOTAN_BUILD_COMPILER_IS_GCC) || defined(BOTAN_BUILD_COMPILER_IS_CLANG)
- #define X86_CPUID(type, out) do { __get_cpuid(type, out, out+1, out+2, out+3); } while(0)
-
- #define X86_CPUID_SUBLEVEL(type, level, out) \
- do { __cpuid_count(type, level, out[0], out[1], out[2], out[3]); } while(0)
-#else
- #warning "No way of calling x86 cpuid instruction for this compiler"
- #define X86_CPUID(type, out) do { clear_mem(out, 4); } while(0)
- #define X86_CPUID_SUBLEVEL(type, level, out) do { clear_mem(out, 4); } while(0)
-#endif
-
- uint64_t features_detected = 0;
- uint32_t cpuid[4] = { 0 };
-
- // CPUID 0: vendor identification, max sublevel
- X86_CPUID(0, cpuid);
-
- const uint32_t max_supported_sublevel = cpuid[0];
-
- const uint32_t INTEL_CPUID[3] = { 0x756E6547, 0x6C65746E, 0x49656E69 };
- const uint32_t AMD_CPUID[3] = { 0x68747541, 0x444D4163, 0x69746E65 };
- const bool is_intel = same_mem(cpuid + 1, INTEL_CPUID, 3);
- const bool is_amd = same_mem(cpuid + 1, AMD_CPUID, 3);
-
- if(max_supported_sublevel >= 1)
- {
- // CPUID 1: feature bits
- X86_CPUID(1, cpuid);
- const uint64_t flags0 = (static_cast<uint64_t>(cpuid[2]) << 32) | cpuid[3];
-
- enum x86_CPUID_1_bits : uint64_t {
- RDTSC = (1ULL << 4),
- SSE2 = (1ULL << 26),
- CLMUL = (1ULL << 33),
- SSSE3 = (1ULL << 41),
- SSE41 = (1ULL << 51),
- SSE42 = (1ULL << 52),
- AESNI = (1ULL << 57),
- RDRAND = (1ULL << 62)
- };
-
- if(flags0 & x86_CPUID_1_bits::RDTSC)
- features_detected |= CPUID::CPUID_RDTSC_BIT;
- if(flags0 & x86_CPUID_1_bits::SSE2)
- features_detected |= CPUID::CPUID_SSE2_BIT;
- if(flags0 & x86_CPUID_1_bits::CLMUL)
- features_detected |= CPUID::CPUID_CLMUL_BIT;
- if(flags0 & x86_CPUID_1_bits::SSSE3)
- features_detected |= CPUID::CPUID_SSSE3_BIT;
- if(flags0 & x86_CPUID_1_bits::SSE41)
- features_detected |= CPUID::CPUID_SSE41_BIT;
- if(flags0 & x86_CPUID_1_bits::SSE42)
- features_detected |= CPUID::CPUID_SSE42_BIT;
- if(flags0 & x86_CPUID_1_bits::AESNI)
- features_detected |= CPUID::CPUID_AESNI_BIT;
- if(flags0 & x86_CPUID_1_bits::RDRAND)
- features_detected |= CPUID::CPUID_RDRAND_BIT;
- }
-
- if(is_intel)
- {
- // Intel cache line size is in cpuid(1) output
- *cache_line_size = 8 * get_byte(2, cpuid[1]);
- }
- else if(is_amd)
- {
- // AMD puts it in vendor zone
- X86_CPUID(0x80000005, cpuid);
- *cache_line_size = get_byte(3, cpuid[2]);
- }
-
- if(max_supported_sublevel >= 7)
- {
- clear_mem(cpuid, 4);
- X86_CPUID_SUBLEVEL(7, 0, cpuid);
-
- enum x86_CPUID_7_bits : uint64_t {
- BMI1 = (1ULL << 3),
- AVX2 = (1ULL << 5),
- BMI2 = (1ULL << 8),
- AVX512F = (1ULL << 16),
- RDSEED = (1ULL << 18),
- ADX = (1ULL << 19),
- SHA = (1ULL << 29),
- };
- uint64_t flags7 = (static_cast<uint64_t>(cpuid[2]) << 32) | cpuid[1];
-
- if(flags7 & x86_CPUID_7_bits::AVX2)
- features_detected |= CPUID::CPUID_AVX2_BIT;
- if(flags7 & x86_CPUID_7_bits::BMI1)
- {
- features_detected |= CPUID::CPUID_BMI1_BIT;
- /*
- We only set the BMI2 bit if BMI1 is also supported, so BMI2
- code can safely use both extensions. No known processor
- implements BMI2 but not BMI1.
- */
- if(flags7 & x86_CPUID_7_bits::BMI2)
- features_detected |= CPUID::CPUID_BMI2_BIT;
- }
-
- if(flags7 & x86_CPUID_7_bits::AVX512F)
- features_detected |= CPUID::CPUID_AVX512F_BIT;
- if(flags7 & x86_CPUID_7_bits::RDSEED)
- features_detected |= CPUID::CPUID_RDSEED_BIT;
- if(flags7 & x86_CPUID_7_bits::ADX)
- features_detected |= CPUID::CPUID_ADX_BIT;
- if(flags7 & x86_CPUID_7_bits::SHA)
- features_detected |= CPUID::CPUID_SHA_BIT;
- }
-
-#undef X86_CPUID
-#undef X86_CPUID_SUBLEVEL
-
- /*
- * If we don't have access to CPUID, we can still safely assume that
- * any x86-64 processor has SSE2 and RDTSC
- */
-#if defined(BOTAN_TARGET_ARCH_IS_X86_64)
- if(features_detected == 0)
- {
- features_detected |= CPUID::CPUID_SSE2_BIT;
- features_detected |= CPUID::CPUID_RDTSC_BIT;
- }
-#endif
-
- return features_detected;
- }
-
-#endif
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/cpuid/info.txt b/src/libs/3rdparty/botan/src/lib/utils/cpuid/info.txt
deleted file mode 100644
index 987d7eae4d..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/cpuid/info.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-<defines>
-CPUID -> 20170917
-</defines>
-
-<header:public>
-cpuid.h
-</header:public>
diff --git a/src/libs/3rdparty/botan/src/lib/utils/ct_utils.h b/src/libs/3rdparty/botan/src/lib/utils/ct_utils.h
deleted file mode 100644
index f4f8818713..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/ct_utils.h
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
-* Functions for constant time operations on data and testing of
-* constant time annotations using valgrind.
-*
-* For more information about constant time programming see
-* Wagner, Molnar, et al "The Program Counter Security Model"
-*
-* (C) 2010 Falko Strenzke
-* (C) 2015,2016 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_TIMING_ATTACK_CM_H_
-#define BOTAN_TIMING_ATTACK_CM_H_
-
-#include <botan/secmem.h>
-#include <type_traits>
-#include <vector>
-
-#if defined(BOTAN_HAS_VALGRIND)
- #include <valgrind/memcheck.h>
-#endif
-
-namespace Botan {
-
-namespace CT {
-
-/**
-* Use valgrind to mark the contents of memory as being undefined.
-* Valgrind will accept operations which manipulate undefined values,
-* but will warn if an undefined value is used to decided a conditional
-* jump or a load/store address. So if we poison all of our inputs we
-* can confirm that the operations in question are truly const time
-* when compiled by whatever compiler is in use.
-*
-* Even better, the VALGRIND_MAKE_MEM_* macros work even when the
-* program is not run under valgrind (though with a few cycles of
-* overhead, which is unfortunate in final binaries as these
-* annotations tend to be used in fairly important loops).
-*
-* This approach was first used in ctgrind (https://github.com/agl/ctgrind)
-* but calling the valgrind mecheck API directly works just as well and
-* doesn't require a custom patched valgrind.
-*/
-template<typename T>
-inline void poison(const T* p, size_t n)
- {
-#if defined(BOTAN_HAS_VALGRIND)
- VALGRIND_MAKE_MEM_UNDEFINED(p, n * sizeof(T));
-#else
- BOTAN_UNUSED(p);
- BOTAN_UNUSED(n);
-#endif
- }
-
-template<typename T>
-inline void unpoison(const T* p, size_t n)
- {
-#if defined(BOTAN_HAS_VALGRIND)
- VALGRIND_MAKE_MEM_DEFINED(p, n * sizeof(T));
-#else
- BOTAN_UNUSED(p);
- BOTAN_UNUSED(n);
-#endif
- }
-
-template<typename T>
-inline void unpoison(T& p)
- {
-#if defined(BOTAN_HAS_VALGRIND)
- VALGRIND_MAKE_MEM_DEFINED(&p, sizeof(T));
-#else
- BOTAN_UNUSED(p);
-#endif
- }
-
-/* Mask generation */
-
-template<typename T>
-inline T expand_top_bit(T a)
- {
- static_assert(std::is_unsigned<T>::value, "unsigned integer type required");
- return static_cast<T>(0) - (a >> (sizeof(T)*8-1));
- }
-
-template<typename T>
-inline T is_zero(T x)
- {
- static_assert(std::is_unsigned<T>::value, "unsigned integer type required");
- return expand_top_bit<T>(~x & (x - 1));
- }
-
-/*
-* T should be an unsigned machine integer type
-* Expand to a mask used for other operations
-* @param in an integer
-* @return If n is zero, returns zero. Otherwise
-* returns a T with all bits set for use as a mask with
-* select.
-*/
-template<typename T>
-inline T expand_mask(T x)
- {
- static_assert(std::is_unsigned<T>::value, "unsigned integer type required");
- return ~is_zero(x);
- }
-
-template<typename T>
-inline T select(T mask, T from0, T from1)
- {
- static_assert(std::is_unsigned<T>::value, "unsigned integer type required");
- return static_cast<T>((from0 & mask) | (from1 & ~mask));
- }
-
-template<typename T>
-inline T select2(T mask0, T val0, T mask1, T val1, T val2)
- {
- return select<T>(mask0, val0, select<T>(mask1, val1, val2));
- }
-
-template<typename T>
-inline T select3(T mask0, T val0, T mask1, T val1, T mask2, T val2, T val3)
- {
- return select2<T>(mask0, val0, mask1, val1, select<T>(mask2, val2, val3));
- }
-
-template<typename PredT, typename ValT>
-inline ValT val_or_zero(PredT pred_val, ValT val)
- {
- return select(CT::expand_mask<ValT>(pred_val), val, static_cast<ValT>(0));
- }
-
-template<typename T>
-inline T is_equal(T x, T y)
- {
- return is_zero<T>(x ^ y);
- }
-
-template<typename T>
-inline T is_less(T a, T b)
- {
- return expand_top_bit<T>(a ^ ((a^b) | ((a-b)^a)));
- }
-
-template<typename T>
-inline T is_lte(T a, T b)
- {
- return CT::is_less(a, b) | CT::is_equal(a, b);
- }
-
-template<typename C, typename T>
-inline T conditional_return(C condvar, T left, T right)
- {
- const T val = CT::select(CT::expand_mask<T>(condvar), left, right);
- CT::unpoison(val);
- return val;
- }
-
-template<typename T>
-inline T conditional_copy_mem(T value,
- T* to,
- const T* from0,
- const T* from1,
- size_t elems)
- {
- const T mask = CT::expand_mask(value);
-
- for(size_t i = 0; i != elems; ++i)
- {
- to[i] = CT::select(mask, from0[i], from1[i]);
- }
-
- return mask;
- }
-
-template<typename T>
-inline void cond_zero_mem(T cond,
- T* array,
- size_t elems)
- {
- const T mask = CT::expand_mask(cond);
- const T zero(0);
-
- for(size_t i = 0; i != elems; ++i)
- {
- array[i] = CT::select(mask, zero, array[i]);
- }
- }
-
-inline secure_vector<uint8_t> strip_leading_zeros(const uint8_t in[], size_t length)
- {
- size_t leading_zeros = 0;
-
- uint8_t only_zeros = 0xFF;
-
- for(size_t i = 0; i != length; ++i)
- {
- only_zeros = only_zeros & CT::is_zero<uint8_t>(in[i]);
- leading_zeros += CT::select<uint8_t>(only_zeros, 1, 0);
- }
-
- return secure_vector<uint8_t>(in + leading_zeros, in + length);
- }
-
-inline secure_vector<uint8_t> strip_leading_zeros(const secure_vector<uint8_t>& in)
- {
- return strip_leading_zeros(in.data(), in.size());
- }
-
-}
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/data_src.cpp b/src/libs/3rdparty/botan/src/lib/utils/data_src.cpp
deleted file mode 100644
index c5689534ff..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/data_src.cpp
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
-* DataSource
-* (C) 1999-2007 Jack Lloyd
-* 2005 Matthew Gregan
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/data_src.h>
-#include <botan/exceptn.h>
-#include <algorithm>
-#include <istream>
-
-#if defined(BOTAN_TARGET_OS_HAS_FILESYSTEM)
- #include <fstream>
-#endif
-
-namespace Botan {
-
-/*
-* Read a single byte from the DataSource
-*/
-size_t DataSource::read_byte(uint8_t& out)
- {
- return read(&out, 1);
- }
-
-/*
-* Peek a single byte from the DataSource
-*/
-size_t DataSource::peek_byte(uint8_t& out) const
- {
- return peek(&out, 1, 0);
- }
-
-/*
-* Discard the next N bytes of the data
-*/
-size_t DataSource::discard_next(size_t n)
- {
- uint8_t buf[64] = { 0 };
- size_t discarded = 0;
-
- while(n)
- {
- const size_t got = this->read(buf, std::min(n, sizeof(buf)));
- discarded += got;
- n -= got;
-
- if(got == 0)
- break;
- }
-
- return discarded;
- }
-
-/*
-* Read from a memory buffer
-*/
-size_t DataSource_Memory::read(uint8_t out[], size_t length)
- {
- const size_t got = std::min<size_t>(m_source.size() - m_offset, length);
- copy_mem(out, m_source.data() + m_offset, got);
- m_offset += got;
- return got;
- }
-
-bool DataSource_Memory::check_available(size_t n)
- {
- return (n <= (m_source.size() - m_offset));
- }
-
-/*
-* Peek into a memory buffer
-*/
-size_t DataSource_Memory::peek(uint8_t out[], size_t length,
- size_t peek_offset) const
- {
- const size_t bytes_left = m_source.size() - m_offset;
- if(peek_offset >= bytes_left) return 0;
-
- const size_t got = std::min(bytes_left - peek_offset, length);
- copy_mem(out, &m_source[m_offset + peek_offset], got);
- return got;
- }
-
-/*
-* Check if the memory buffer is empty
-*/
-bool DataSource_Memory::end_of_data() const
- {
- return (m_offset == m_source.size());
- }
-
-/*
-* DataSource_Memory Constructor
-*/
-DataSource_Memory::DataSource_Memory(const std::string& in) :
- m_source(cast_char_ptr_to_uint8(in.data()),
- cast_char_ptr_to_uint8(in.data()) + in.length()),
- m_offset(0)
- {
- }
-
-/*
-* Read from a stream
-*/
-size_t DataSource_Stream::read(uint8_t out[], size_t length)
- {
- m_source.read(cast_uint8_ptr_to_char(out), length);
- if(m_source.bad())
- throw Stream_IO_Error("DataSource_Stream::read: Source failure");
-
- const size_t got = static_cast<size_t>(m_source.gcount());
- m_total_read += got;
- return got;
- }
-
-bool DataSource_Stream::check_available(size_t n)
- {
- const std::streampos orig_pos = m_source.tellg();
- m_source.seekg(0, std::ios::end);
- const size_t avail = static_cast<size_t>(m_source.tellg() - orig_pos);
- m_source.seekg(orig_pos);
- return (avail >= n);
- }
-
-/*
-* Peek into a stream
-*/
-size_t DataSource_Stream::peek(uint8_t out[], size_t length, size_t offset) const
- {
- if(end_of_data())
- throw Invalid_State("DataSource_Stream: Cannot peek when out of data");
-
- size_t got = 0;
-
- if(offset)
- {
- secure_vector<uint8_t> buf(offset);
- m_source.read(cast_uint8_ptr_to_char(buf.data()), buf.size());
- if(m_source.bad())
- throw Stream_IO_Error("DataSource_Stream::peek: Source failure");
- got = static_cast<size_t>(m_source.gcount());
- }
-
- if(got == offset)
- {
- m_source.read(cast_uint8_ptr_to_char(out), length);
- if(m_source.bad())
- throw Stream_IO_Error("DataSource_Stream::peek: Source failure");
- got = static_cast<size_t>(m_source.gcount());
- }
-
- if(m_source.eof())
- m_source.clear();
- m_source.seekg(m_total_read, std::ios::beg);
-
- return got;
- }
-
-/*
-* Check if the stream is empty or in error
-*/
-bool DataSource_Stream::end_of_data() const
- {
- return (!m_source.good());
- }
-
-/*
-* Return a human-readable ID for this stream
-*/
-std::string DataSource_Stream::id() const
- {
- return m_identifier;
- }
-
-#if defined(BOTAN_TARGET_OS_HAS_FILESYSTEM)
-
-/*
-* DataSource_Stream Constructor
-*/
-DataSource_Stream::DataSource_Stream(const std::string& path,
- bool use_binary) :
- m_identifier(path),
- m_source_memory(new std::ifstream(path, use_binary ? std::ios::binary : std::ios::in)),
- m_source(*m_source_memory),
- m_total_read(0)
- {
- if(!m_source.good())
- {
- throw Stream_IO_Error("DataSource: Failure opening file " + path);
- }
- }
-
-#endif
-
-/*
-* DataSource_Stream Constructor
-*/
-DataSource_Stream::DataSource_Stream(std::istream& in,
- const std::string& name) :
- m_identifier(name),
- m_source(in),
- m_total_read(0)
- {
- }
-
-DataSource_Stream::~DataSource_Stream()
- {
- // for ~unique_ptr
- }
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/data_src.h b/src/libs/3rdparty/botan/src/lib/utils/data_src.h
deleted file mode 100644
index 09c1bffdf7..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/data_src.h
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
-* DataSource
-* (C) 1999-2007 Jack Lloyd
-* 2012 Markus Wanner
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_DATA_SRC_H_
-#define BOTAN_DATA_SRC_H_
-
-#include <botan/secmem.h>
-#include <string>
-#include <iosfwd>
-
-namespace Botan {
-
-/**
-* This class represents an abstract data source object.
-*/
-class BOTAN_PUBLIC_API(2,0) DataSource
- {
- public:
- /**
- * Read from the source. Moves the internal offset so that every
- * call to read will return a new portion of the source.
- *
- * @param out the byte array to write the result to
- * @param length the length of the byte array out
- * @return length in bytes that was actually read and put
- * into out
- */
- virtual size_t read(uint8_t out[], size_t length) BOTAN_WARN_UNUSED_RESULT = 0;
-
- virtual bool check_available(size_t n) = 0;
-
- /**
- * Read from the source but do not modify the internal
- * offset. Consecutive calls to peek() will return portions of
- * the source starting at the same position.
- *
- * @param out the byte array to write the output to
- * @param length the length of the byte array out
- * @param peek_offset the offset into the stream to read at
- * @return length in bytes that was actually read and put
- * into out
- */
- virtual size_t peek(uint8_t out[], size_t length, size_t peek_offset) const BOTAN_WARN_UNUSED_RESULT = 0;
-
- /**
- * Test whether the source still has data that can be read.
- * @return true if there is no more data to read, false otherwise
- */
- virtual bool end_of_data() const = 0;
- /**
- * return the id of this data source
- * @return std::string representing the id of this data source
- */
- virtual std::string id() const { return ""; }
-
- /**
- * Read one byte.
- * @param out the byte to read to
- * @return length in bytes that was actually read and put
- * into out
- */
- size_t read_byte(uint8_t& out);
-
- /**
- * Peek at one byte.
- * @param out an output byte
- * @return length in bytes that was actually read and put
- * into out
- */
- size_t peek_byte(uint8_t& out) const;
-
- /**
- * Discard the next N bytes of the data
- * @param N the number of bytes to discard
- * @return number of bytes actually discarded
- */
- size_t discard_next(size_t N);
-
- /**
- * @return number of bytes read so far.
- */
- virtual size_t get_bytes_read() const = 0;
-
- DataSource() = default;
- virtual ~DataSource() = default;
- DataSource& operator=(const DataSource&) = delete;
- DataSource(const DataSource&) = delete;
- };
-
-/**
-* This class represents a Memory-Based DataSource
-*/
-class BOTAN_PUBLIC_API(2,0) DataSource_Memory final : public DataSource
- {
- public:
- size_t read(uint8_t[], size_t) override;
- size_t peek(uint8_t[], size_t, size_t) const override;
- bool check_available(size_t n) override;
- bool end_of_data() const override;
-
- /**
- * Construct a memory source that reads from a string
- * @param in the string to read from
- */
- explicit DataSource_Memory(const std::string& in);
-
- /**
- * Construct a memory source that reads from a byte array
- * @param in the byte array to read from
- * @param length the length of the byte array
- */
- DataSource_Memory(const uint8_t in[], size_t length) :
- m_source(in, in + length), m_offset(0) {}
-
- /**
- * Construct a memory source that reads from a secure_vector
- * @param in the MemoryRegion to read from
- */
- explicit DataSource_Memory(const secure_vector<uint8_t>& in) :
- m_source(in), m_offset(0) {}
-
- /**
- * Construct a memory source that reads from a std::vector
- * @param in the MemoryRegion to read from
- */
- explicit DataSource_Memory(const std::vector<uint8_t>& in) :
- m_source(in.begin(), in.end()), m_offset(0) {}
-
- size_t get_bytes_read() const override { return m_offset; }
- private:
- secure_vector<uint8_t> m_source;
- size_t m_offset;
- };
-
-/**
-* This class represents a Stream-Based DataSource.
-*/
-class BOTAN_PUBLIC_API(2,0) DataSource_Stream final : public DataSource
- {
- public:
- size_t read(uint8_t[], size_t) override;
- size_t peek(uint8_t[], size_t, size_t) const override;
- bool check_available(size_t n) override;
- bool end_of_data() const override;
- std::string id() const override;
-
- DataSource_Stream(std::istream&,
- const std::string& id = "<std::istream>");
-
-#if defined(BOTAN_TARGET_OS_HAS_FILESYSTEM)
- /**
- * Construct a Stream-Based DataSource from filesystem path
- * @param file the path to the file
- * @param use_binary whether to treat the file as binary or not
- */
- DataSource_Stream(const std::string& file, bool use_binary = false);
-#endif
-
- DataSource_Stream(const DataSource_Stream&) = delete;
-
- DataSource_Stream& operator=(const DataSource_Stream&) = delete;
-
- ~DataSource_Stream();
-
- size_t get_bytes_read() const override { return m_total_read; }
- private:
- const std::string m_identifier;
-
- std::unique_ptr<std::istream> m_source_memory;
- std::istream& m_source;
- size_t m_total_read;
- };
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/database.h b/src/libs/3rdparty/botan/src/lib/utils/database.h
deleted file mode 100644
index 21a207445a..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/database.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
-* SQL database interface
-* (C) 2014 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_SQL_DATABASE_H_
-#define BOTAN_SQL_DATABASE_H_
-
-#include <botan/types.h>
-#include <botan/exceptn.h>
-#include <string>
-#include <chrono>
-#include <vector>
-
-namespace Botan {
-
-class BOTAN_PUBLIC_API(2,0) SQL_Database
- {
- public:
-
- class BOTAN_PUBLIC_API(2,0) SQL_DB_Error final : public Exception
- {
- public:
- explicit SQL_DB_Error(const std::string& what) : Exception("SQL database", what) {}
- };
-
- class BOTAN_PUBLIC_API(2,0) Statement
- {
- public:
- /* Bind statement parameters */
- virtual void bind(int column, const std::string& str) = 0;
-
- virtual void bind(int column, size_t i) = 0;
-
- virtual void bind(int column, std::chrono::system_clock::time_point time) = 0;
-
- virtual void bind(int column, const std::vector<uint8_t>& blob) = 0;
-
- virtual void bind(int column, const uint8_t* data, size_t len) = 0;
-
- /* Get output */
- virtual std::pair<const uint8_t*, size_t> get_blob(int column) = 0;
-
- virtual std::string get_str(int column) = 0;
-
- virtual size_t get_size_t(int column) = 0;
-
- /* Run to completion */
- virtual size_t spin() = 0;
-
- /* Maybe update */
- virtual bool step() = 0;
-
- virtual ~Statement() = default;
- };
-
- /*
- * Create a new statement for execution.
- * Use ?1, ?2, ?3, etc for parameters to set later with bind
- */
- virtual std::shared_ptr<Statement> new_statement(const std::string& base_sql) const = 0;
-
- virtual size_t row_count(const std::string& table_name) = 0;
-
- virtual void create_table(const std::string& table_schema) = 0;
-
- virtual ~SQL_Database() = default;
-};
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/donna128.h b/src/libs/3rdparty/botan/src/lib/utils/donna128.h
deleted file mode 100644
index ff571906d8..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/donna128.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
-* A minimal 128-bit integer type for curve25519-donna
-* (C) 2014 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_CURVE25519_DONNA128_H_
-#define BOTAN_CURVE25519_DONNA128_H_
-
-#include <botan/mul128.h>
-
-namespace Botan {
-
-class donna128 final
- {
- public:
- donna128(uint64_t ll = 0, uint64_t hh = 0) { l = ll; h = hh; }
-
- donna128(const donna128&) = default;
- donna128& operator=(const donna128&) = default;
-
- friend donna128 operator>>(const donna128& x, size_t shift)
- {
- donna128 z = x;
- if(shift > 0)
- {
- const uint64_t carry = z.h << (64 - shift);
- z.h = (z.h >> shift);
- z.l = (z.l >> shift) | carry;
- }
- return z;
- }
-
- friend donna128 operator<<(const donna128& x, size_t shift)
- {
- donna128 z = x;
- if(shift > 0)
- {
- const uint64_t carry = z.l >> (64 - shift);
- z.l = (z.l << shift);
- z.h = (z.h << shift) | carry;
- }
- return z;
- }
-
- friend uint64_t operator&(const donna128& x, uint64_t mask)
- {
- return x.l & mask;
- }
-
- uint64_t operator&=(uint64_t mask)
- {
- h = 0;
- l &= mask;
- return l;
- }
-
- donna128& operator+=(const donna128& x)
- {
- l += x.l;
- h += x.h;
-
- const uint64_t carry = (l < x.l);
- h += carry;
- return *this;
- }
-
- donna128& operator+=(uint64_t x)
- {
- l += x;
- const uint64_t carry = (l < x);
- h += carry;
- return *this;
- }
-
- uint64_t lo() const { return l; }
- uint64_t hi() const { return h; }
- private:
- uint64_t h = 0, l = 0;
- };
-
-inline donna128 operator*(const donna128& x, uint64_t y)
- {
- BOTAN_ARG_CHECK(x.hi() == 0, "High 64 bits of donna128 set to zero during multiply");
-
- uint64_t lo = 0, hi = 0;
- mul64x64_128(x.lo(), y, &lo, &hi);
- return donna128(lo, hi);
- }
-
-inline donna128 operator*(uint64_t y, const donna128& x)
- {
- return x * y;
- }
-
-inline donna128 operator+(const donna128& x, const donna128& y)
- {
- donna128 z = x;
- z += y;
- return z;
- }
-
-inline donna128 operator+(const donna128& x, uint64_t y)
- {
- donna128 z = x;
- z += y;
- return z;
- }
-
-inline donna128 operator|(const donna128& x, const donna128& y)
- {
- return donna128(x.lo() | y.lo(), x.hi() | y.hi());
- }
-
-inline uint64_t carry_shift(const donna128& a, size_t shift)
- {
- return (a >> shift).lo();
- }
-
-inline uint64_t combine_lower(const donna128& a, size_t s1,
- const donna128& b, size_t s2)
- {
- donna128 z = (a >> s1) | (b << s2);
- return z.lo();
- }
-
-#if defined(BOTAN_TARGET_HAS_NATIVE_UINT128)
-inline uint64_t carry_shift(const uint128_t a, size_t shift)
- {
- return static_cast<uint64_t>(a >> shift);
- }
-
-inline uint64_t combine_lower(const uint128_t a, size_t s1,
- const uint128_t b, size_t s2)
- {
- return static_cast<uint64_t>((a >> s1) | (b << s2));
- }
-#endif
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/dyn_load/dyn_load.cpp b/src/libs/3rdparty/botan/src/lib/utils/dyn_load/dyn_load.cpp
deleted file mode 100644
index 1bbcffbdb5..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/dyn_load/dyn_load.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-* Dynamically Loaded Object
-* (C) 2010 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/dyn_load.h>
-#include <botan/exceptn.h>
-
-#if defined(BOTAN_TARGET_OS_HAS_POSIX1)
- #include <dlfcn.h>
-#elif defined(BOTAN_TARGET_OS_HAS_WIN32)
- #define NOMINMAX 1
- #define _WINSOCKAPI_ // stop windows.h including winsock.h
- #include <windows.h>
-#endif
-
-namespace Botan {
-
-namespace {
-
-void raise_runtime_loader_exception(const std::string& lib_name,
- const char* msg)
- {
- throw Exception("Failed to load " + lib_name + ": " +
- (msg ? msg : "Unknown error"));
- }
-
-}
-
-Dynamically_Loaded_Library::Dynamically_Loaded_Library(
- const std::string& library) :
- m_lib_name(library), m_lib(nullptr)
- {
-#if defined(BOTAN_TARGET_OS_HAS_POSIX1)
- m_lib = ::dlopen(m_lib_name.c_str(), RTLD_LAZY);
-
- if(!m_lib)
- raise_runtime_loader_exception(m_lib_name, ::dlerror());
-
-#elif defined(BOTAN_TARGET_OS_HAS_WIN32)
- m_lib = ::LoadLibraryA(m_lib_name.c_str());
-
- if(!m_lib)
- raise_runtime_loader_exception(m_lib_name, "LoadLibrary failed");
-#endif
-
- if(!m_lib)
- raise_runtime_loader_exception(m_lib_name, "Dynamic load not supported");
- }
-
-Dynamically_Loaded_Library::~Dynamically_Loaded_Library()
- {
-#if defined(BOTAN_TARGET_OS_HAS_POSIX1)
- ::dlclose(m_lib);
-#elif defined(BOTAN_TARGET_OS_HAS_WIN32)
- ::FreeLibrary((HMODULE)m_lib);
-#endif
- }
-
-void* Dynamically_Loaded_Library::resolve_symbol(const std::string& symbol)
- {
- void* addr = nullptr;
-
-#if defined(BOTAN_TARGET_OS_HAS_POSIX1)
- addr = ::dlsym(m_lib, symbol.c_str());
-#elif defined(BOTAN_TARGET_OS_HAS_WIN32)
- addr = reinterpret_cast<void*>(::GetProcAddress((HMODULE)m_lib, symbol.c_str()));
-#endif
-
- if(!addr)
- throw Exception("Failed to resolve symbol " + symbol +
- " in " + m_lib_name);
-
- return addr;
- }
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/dyn_load/dyn_load.h b/src/libs/3rdparty/botan/src/lib/utils/dyn_load/dyn_load.h
deleted file mode 100644
index 3caf65f277..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/dyn_load/dyn_load.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-* Dynamically Loaded Object
-* (C) 2010 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_DYNAMIC_LOADER_H_
-#define BOTAN_DYNAMIC_LOADER_H_
-
-#include <botan/types.h>
-#include <string>
-
-namespace Botan {
-
-/**
-* Represents a DLL or shared object
-*/
-class BOTAN_PUBLIC_API(2,0) Dynamically_Loaded_Library final
- {
- public:
- /**
- * Load a DLL (or fail with an exception)
- * @param lib_name name or path to a library
- *
- * If you don't use a full path, the search order will be defined
- * by whatever the system linker does by default. Always using fully
- * qualified pathnames can help prevent code injection attacks (eg
- * via manipulation of LD_LIBRARY_PATH on Linux)
- */
- Dynamically_Loaded_Library(const std::string& lib_name);
-
- /**
- * Unload the DLL
- * @warning Any pointers returned by resolve()/resolve_symbol()
- * should not be used after this destructor runs.
- */
- ~Dynamically_Loaded_Library();
-
- /**
- * Load a symbol (or fail with an exception)
- * @param symbol names the symbol to load
- * @return address of the loaded symbol
- */
- void* resolve_symbol(const std::string& symbol);
-
- /**
- * Convenience function for casting symbol to the right type
- * @param symbol names the symbol to load
- * @return address of the loaded symbol
- */
- template<typename T>
- T resolve(const std::string& symbol)
- {
- return reinterpret_cast<T>(resolve_symbol(symbol));
- }
-
- private:
- Dynamically_Loaded_Library(const Dynamically_Loaded_Library&);
- Dynamically_Loaded_Library& operator=(const Dynamically_Loaded_Library&);
-
- std::string m_lib_name;
- void* m_lib;
- };
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/dyn_load/info.txt b/src/libs/3rdparty/botan/src/lib/utils/dyn_load/info.txt
deleted file mode 100644
index 4dd4932a00..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/dyn_load/info.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-<defines>
-DYNAMIC_LOADER -> 20160310
-</defines>
-
-load_on dep
-
-<os_features>
-posix1
-win32
-</os_features>
-
-<libs>
-android -> dl
-linux -> dl
-solaris -> dl
-darwin -> dl
-</libs>
diff --git a/src/libs/3rdparty/botan/src/lib/utils/exceptn.cpp b/src/libs/3rdparty/botan/src/lib/utils/exceptn.cpp
deleted file mode 100644
index cc6eb9f85c..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/exceptn.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
-* (C) 2017 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/exceptn.h>
-
-namespace Botan {
-
-Exception::Exception(const std::string& msg) : m_msg(msg)
- {}
-
-Exception::Exception(const std::string& msg, const std::exception& e) :
- m_msg(msg + " failed with " + std::string(e.what()))
- {}
-
-Exception::Exception(const char* prefix, const std::string& msg) :
- m_msg(std::string(prefix) + " " + msg)
- {}
-
-Invalid_Argument::Invalid_Argument(const std::string& msg) :
- Exception(msg)
- {}
-
-Invalid_Argument::Invalid_Argument(const std::string& msg, const std::string& where) :
- Exception(msg + " in " + where)
- {}
-
-Invalid_Argument::Invalid_Argument(const std::string& msg, const std::exception& e) :
- Exception(msg, e) {}
-
-Lookup_Error::Lookup_Error(const std::string& type,
- const std::string& algo,
- const std::string& provider) :
- Exception("Unavailable " + type + " " + algo +
- (provider.empty() ? std::string("") : (" for provider " + provider)))
- {}
-
-Internal_Error::Internal_Error(const std::string& err) :
- Exception("Internal error: " + err)
- {}
-
-Invalid_Key_Length::Invalid_Key_Length(const std::string& name, size_t length) :
- Invalid_Argument(name + " cannot accept a key of length " +
- std::to_string(length))
- {}
-
-Invalid_IV_Length::Invalid_IV_Length(const std::string& mode, size_t bad_len) :
- Invalid_Argument("IV length " + std::to_string(bad_len) +
- " is invalid for " + mode)
- {}
-
-Key_Not_Set::Key_Not_Set(const std::string& algo) :
- Invalid_State("Key not set in " + algo)
- {}
-
-Policy_Violation::Policy_Violation(const std::string& err) :
- Invalid_State("Policy violation: " + err) {}
-
-PRNG_Unseeded::PRNG_Unseeded(const std::string& algo) :
- Invalid_State("PRNG not seeded: " + algo)
- {}
-
-Algorithm_Not_Found::Algorithm_Not_Found(const std::string& name) :
- Lookup_Error("Could not find any algorithm named \"" + name + "\"")
- {}
-
-No_Provider_Found::No_Provider_Found(const std::string& name) :
- Exception("Could not find any provider for algorithm named \"" + name + "\"")
- {}
-
-Provider_Not_Found::Provider_Not_Found(const std::string& algo, const std::string& provider) :
- Lookup_Error("Could not find provider '" + provider + "' for " + algo)
- {}
-
-Invalid_Algorithm_Name::Invalid_Algorithm_Name(const std::string& name):
- Invalid_Argument("Invalid algorithm name: " + name)
- {}
-
-Encoding_Error::Encoding_Error(const std::string& name) :
- Invalid_Argument("Encoding error: " + name)
- {}
-
-Decoding_Error::Decoding_Error(const std::string& name) :
- Invalid_Argument(name)
- {}
-
-Decoding_Error::Decoding_Error(const std::string& msg, const std::exception& e) :
- Invalid_Argument(msg, e)
- {}
-
-Decoding_Error::Decoding_Error(const std::string& name, const char* exception_message) :
- Invalid_Argument(name + " failed with exception " + exception_message) {}
-
-Integrity_Failure::Integrity_Failure(const std::string& msg) :
- Exception("Integrity failure: " + msg)
- {}
-
-Invalid_OID::Invalid_OID(const std::string& oid) :
- Decoding_Error("Invalid ASN.1 OID: " + oid)
- {}
-
-Stream_IO_Error::Stream_IO_Error(const std::string& err) :
- Exception("I/O error: " + err)
- {}
-
-Self_Test_Failure::Self_Test_Failure(const std::string& err) :
- Internal_Error("Self test failed: " + err)
- {}
-
-Not_Implemented::Not_Implemented(const std::string& err) :
- Exception("Not implemented", err)
- {}
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/exceptn.h b/src/libs/3rdparty/botan/src/lib/utils/exceptn.h
deleted file mode 100644
index efa52580c7..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/exceptn.h
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
-* Exceptions
-* (C) 1999-2009 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_EXCEPTION_H_
-#define BOTAN_EXCEPTION_H_
-
-#include <botan/types.h>
-#include <exception>
-#include <string>
-
-namespace Botan {
-
-/**
-* Base class for all exceptions thrown by the library
-*/
-class BOTAN_PUBLIC_API(2,0) Exception : public std::exception
- {
- public:
- Exception(const char* prefix, const std::string& msg);
- explicit Exception(const std::string& msg);
- const char* what() const BOTAN_NOEXCEPT override { return m_msg.c_str(); }
- protected:
- Exception(const std::string& msg, const std::exception& e);
- private:
- std::string m_msg;
- };
-
-/**
-* An invalid argument
-*/
-class BOTAN_PUBLIC_API(2,0) Invalid_Argument : public Exception
- {
- public:
- explicit Invalid_Argument(const std::string& msg);
-
- explicit Invalid_Argument(const std::string& msg, const std::string& where);
-
- Invalid_Argument(const std::string& msg, const std::exception& e);
- };
-
-/**
-* Unsupported_Argument Exception
-*
-* An argument that is invalid because it is not supported by Botan.
-* It might or might not be valid in another context like a standard.
-*/
-class BOTAN_PUBLIC_API(2,0) Unsupported_Argument final : public Invalid_Argument
- {
- public:
- explicit Unsupported_Argument(const std::string& msg) : Invalid_Argument(msg) {}
- };
-
-/**
-* Invalid_State Exception
-*/
-class BOTAN_PUBLIC_API(2,0) Invalid_State : public Exception
- {
- public:
- explicit Invalid_State(const std::string& err) : Exception(err) {}
- };
-
-class BOTAN_PUBLIC_API(2,4) Key_Not_Set : public Invalid_State
- {
- public:
- explicit Key_Not_Set(const std::string& algo);
- };
-
-/**
-* Lookup_Error Exception
-*/
-class BOTAN_PUBLIC_API(2,0) Lookup_Error : public Exception
- {
- public:
- explicit Lookup_Error(const std::string& err) : Exception(err) {}
-
- Lookup_Error(const std::string& type,
- const std::string& algo,
- const std::string& provider);
- };
-
-/**
-* Internal_Error Exception
-*/
-class BOTAN_PUBLIC_API(2,0) Internal_Error : public Exception
- {
- public:
- explicit Internal_Error(const std::string& err);
- };
-
-/**
-* Invalid_Key_Length Exception
-*/
-class BOTAN_PUBLIC_API(2,0) Invalid_Key_Length final : public Invalid_Argument
- {
- public:
- Invalid_Key_Length(const std::string& name, size_t length);
- };
-
-/**
-* Invalid_IV_Length Exception
-*/
-class BOTAN_PUBLIC_API(2,0) Invalid_IV_Length final : public Invalid_Argument
- {
- public:
- Invalid_IV_Length(const std::string& mode, size_t bad_len);
- };
-
-/**
-* PRNG_Unseeded Exception
-*/
-class BOTAN_PUBLIC_API(2,0) PRNG_Unseeded final : public Invalid_State
- {
- public:
- explicit PRNG_Unseeded(const std::string& algo);
- };
-
-/**
-* Policy_Violation Exception
-*/
-class BOTAN_PUBLIC_API(2,0) Policy_Violation final : public Invalid_State
- {
- public:
- BOTAN_DEPRECATED("deprecated") explicit Policy_Violation(const std::string& err);
- };
-
-/**
-* Algorithm_Not_Found Exception
-*/
-class BOTAN_PUBLIC_API(2,0) Algorithm_Not_Found final : public Lookup_Error
- {
- public:
- explicit Algorithm_Not_Found(const std::string& name);
- };
-
-/**
-* No_Provider_Found Exception
-*/
-class BOTAN_PUBLIC_API(2,0) No_Provider_Found final : public Exception
- {
- public:
- BOTAN_DEPRECATED("deprecated") explicit No_Provider_Found(const std::string& name);
- };
-
-/**
-* Provider_Not_Found is thrown when a specific provider was requested
-* but that provider is not available.
-*/
-class BOTAN_PUBLIC_API(2,0) Provider_Not_Found final : public Lookup_Error
- {
- public:
- Provider_Not_Found(const std::string& algo, const std::string& provider);
- };
-
-/**
-* Invalid_Algorithm_Name Exception
-*/
-class BOTAN_PUBLIC_API(2,0) Invalid_Algorithm_Name final : public Invalid_Argument
- {
- public:
- explicit Invalid_Algorithm_Name(const std::string& name);
- };
-
-/**
-* Encoding_Error Exception
-*/
-class BOTAN_PUBLIC_API(2,0) Encoding_Error final : public Invalid_Argument
- {
- public:
- explicit Encoding_Error(const std::string& name);
- };
-
-/**
-* Decoding_Error Exception
-*/
-class BOTAN_PUBLIC_API(2,0) Decoding_Error : public Invalid_Argument
- {
- public:
- explicit Decoding_Error(const std::string& name);
-
- Decoding_Error(const std::string& name, const char* exception_message);
-
- Decoding_Error(const std::string& msg, const std::exception& e);
- };
-
-/**
-* Integrity_Failure Exception
-*/
-class BOTAN_PUBLIC_API(2,0) Integrity_Failure final : public Exception
- {
- public:
- explicit Integrity_Failure(const std::string& msg);
- };
-
-/**
-* Invalid_OID Exception
-*/
-class BOTAN_PUBLIC_API(2,0) Invalid_OID final : public Decoding_Error
- {
- public:
- explicit Invalid_OID(const std::string& oid);
- };
-
-/**
-* Stream_IO_Error Exception
-*/
-class BOTAN_PUBLIC_API(2,0) Stream_IO_Error final : public Exception
- {
- public:
- explicit Stream_IO_Error(const std::string& err);
- };
-
-/**
-* Self Test Failure Exception
-*/
-class BOTAN_PUBLIC_API(2,0) Self_Test_Failure final : public Internal_Error
- {
- public:
- BOTAN_DEPRECATED("deprecated") explicit Self_Test_Failure(const std::string& err);
- };
-
-/**
-* Not Implemented Exception
-*/
-class BOTAN_PUBLIC_API(2,0) Not_Implemented final : public Exception
- {
- public:
- explicit Not_Implemented(const std::string& err);
- };
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/filesystem.cpp b/src/libs/3rdparty/botan/src/lib/utils/filesystem.cpp
deleted file mode 100644
index 053c91e701..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/filesystem.cpp
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
-* (C) 2015,2017 Jack Lloyd
-* (C) 2015 Simon Warta (Kullo GmbH)
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/exceptn.h>
-#include <botan/internal/filesystem.h>
-#include <algorithm>
-
-#if defined(BOTAN_TARGET_OS_HAS_STL_FILESYSTEM_MSVC) && defined(BOTAN_BUILD_COMPILER_IS_MSVC)
- #include <filesystem>
-#elif defined(BOTAN_HAS_BOOST_FILESYSTEM)
- #include <boost/filesystem.hpp>
-#elif defined(BOTAN_TARGET_OS_HAS_POSIX1)
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <dirent.h>
- #include <deque>
- #include <memory>
- #include <functional>
-#elif defined(BOTAN_TARGET_OS_HAS_WIN32)
- #define NOMINMAX 1
- #define _WINSOCKAPI_ // stop windows.h including winsock.h
- #include <windows.h>
- #include <deque>
- #include <memory>
-#endif
-
-namespace Botan {
-
-namespace {
-
-#if defined(BOTAN_TARGET_OS_HAS_STL_FILESYSTEM_MSVC) && defined(BOTAN_BUILD_COMPILER_IS_MSVC)
-std::vector<std::string> impl_stl_filesystem(const std::string& dir)
- {
-#if (_MSVC_LANG >= 201703L)
- using namespace std::filesystem;
-#else
- using namespace std::tr2::sys;
-#endif
-
- std::vector<std::string> out;
-
- path p(dir);
-
- if(is_directory(p))
- {
- for(recursive_directory_iterator itr(p), end; itr != end; ++itr)
- {
- if(is_regular_file(itr->path()))
- {
- out.push_back(itr->path().string());
- }
- }
- }
-
- return out;
- }
-
-#elif defined(BOTAN_HAS_BOOST_FILESYSTEM)
-
-std::vector<std::string> impl_boost_filesystem(const std::string& dir_path)
-{
- namespace fs = boost::filesystem;
-
- std::vector<std::string> out;
-
- for(fs::recursive_directory_iterator dir(dir_path), end; dir != end; ++dir)
- {
- if(fs::is_regular_file(dir->path()))
- {
- out.push_back(dir->path().string());
- }
- }
-
- return out;
-}
-
-#elif defined(BOTAN_TARGET_OS_HAS_POSIX1)
-
-std::vector<std::string> impl_readdir(const std::string& dir_path)
- {
- std::vector<std::string> out;
- std::deque<std::string> dir_list;
- dir_list.push_back(dir_path);
-
- while(!dir_list.empty())
- {
- const std::string cur_path = dir_list[0];
- dir_list.pop_front();
-
- std::unique_ptr<DIR, std::function<int (DIR*)>> dir(::opendir(cur_path.c_str()), ::closedir);
-
- if(dir)
- {
- while(struct dirent* dirent = ::readdir(dir.get()))
- {
- const std::string filename = dirent->d_name;
- if(filename == "." || filename == "..")
- continue;
- const std::string full_path = cur_path + "/" + filename;
-
- struct stat stat_buf;
-
- if(::stat(full_path.c_str(), &stat_buf) == -1)
- continue;
-
- if(S_ISDIR(stat_buf.st_mode))
- dir_list.push_back(full_path);
- else if(S_ISREG(stat_buf.st_mode))
- out.push_back(full_path);
- }
- }
- }
-
- return out;
- }
-
-#elif defined(BOTAN_TARGET_OS_HAS_WIN32)
-
-std::vector<std::string> impl_win32(const std::string& dir_path)
- {
- std::vector<std::string> out;
- std::deque<std::string> dir_list;
- dir_list.push_back(dir_path);
-
- while(!dir_list.empty())
- {
- const std::string cur_path = dir_list[0];
- dir_list.pop_front();
-
- WIN32_FIND_DATAA find_data;
- HANDLE dir = ::FindFirstFileA((cur_path + "/*").c_str(), &find_data);
-
- if(dir != INVALID_HANDLE_VALUE)
- {
- do
- {
- const std::string filename = find_data.cFileName;
- if(filename == "." || filename == "..")
- continue;
- const std::string full_path = cur_path + "/" + filename;
-
- if(find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
- {
- dir_list.push_back(full_path);
- }
- else
- {
- out.push_back(full_path);
- }
- }
- while(::FindNextFileA(dir, &find_data));
- }
-
- ::FindClose(dir);
- }
-
- return out;
-}
-#endif
-
-}
-
-bool has_filesystem_impl()
- {
-#if defined(BOTAN_TARGET_OS_HAS_STL_FILESYSTEM_MSVC) && defined(BOTAN_BUILD_COMPILER_IS_MSVC)
- return true;
-#elif defined(BOTAN_HAS_BOOST_FILESYSTEM)
- return true;
-#elif defined(BOTAN_TARGET_OS_HAS_POSIX1)
- return true;
-#elif defined(BOTAN_TARGET_OS_HAS_WIN32)
- return true;
-#else
- return false;
-#endif
- }
-
-std::vector<std::string> get_files_recursive(const std::string& dir)
- {
- std::vector<std::string> files;
-
-#if defined(BOTAN_TARGET_OS_HAS_STL_FILESYSTEM_MSVC) && defined(BOTAN_BUILD_COMPILER_IS_MSVC)
- files = impl_stl_filesystem(dir);
-#elif defined(BOTAN_HAS_BOOST_FILESYSTEM)
- files = impl_boost_filesystem(dir);
-#elif defined(BOTAN_TARGET_OS_HAS_POSIX1)
- files = impl_readdir(dir);
-#elif defined(BOTAN_TARGET_OS_HAS_WIN32)
- files = impl_win32(dir);
-#else
- BOTAN_UNUSED(dir);
- throw No_Filesystem_Access();
-#endif
-
- std::sort(files.begin(), files.end());
-
- return files;
- }
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/filesystem.h b/src/libs/3rdparty/botan/src/lib/utils/filesystem.h
deleted file mode 100644
index 382da7de34..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/filesystem.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-* (C) 2015 Jack Lloyd
-* (C) 2015 Simon Warta (Kullo GmbH)
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_UTIL_FILESYSTEM_H_
-#define BOTAN_UTIL_FILESYSTEM_H_
-
-#include <botan/types.h>
-#include <vector>
-#include <string>
-
-namespace Botan {
-
-/**
-* No_Filesystem_Access Exception
-*/
-class BOTAN_PUBLIC_API(2,0) No_Filesystem_Access final : public Exception
- {
- public:
- No_Filesystem_Access() : Exception("No filesystem access enabled.")
- {}
- };
-
-BOTAN_TEST_API bool has_filesystem_impl();
-
-BOTAN_TEST_API std::vector<std::string> get_files_recursive(const std::string& dir);
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/info.txt b/src/libs/3rdparty/botan/src/lib/utils/info.txt
deleted file mode 100644
index 93ae795ef5..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/info.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-<defines>
-UTIL_FUNCTIONS -> 20180903
-</defines>
-
-load_on always
-
-<header:public>
-assert.h
-bswap.h
-calendar.h
-charset.h
-compiler.h
-data_src.h
-database.h
-exceptn.h
-loadstor.h
-mem_ops.h
-mul128.h
-mutex.h
-parsing.h
-rotate.h
-types.h
-version.h
-stl_compatibility.h
-</header:public>
-
-<header:internal>
-bit_ops.h
-codec_base.h
-ct_utils.h
-donna128.h
-filesystem.h
-os_utils.h
-prefetch.h
-rounding.h
-safeint.h
-stl_util.h
-timer.h
-</header:internal>
-
-<requires>
-cpuid
-</requires>
diff --git a/src/libs/3rdparty/botan/src/lib/utils/loadstor.h b/src/libs/3rdparty/botan/src/lib/utils/loadstor.h
deleted file mode 100644
index 70ad20591c..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/loadstor.h
+++ /dev/null
@@ -1,697 +0,0 @@
-/*
-* Load/Store Operators
-* (C) 1999-2007,2015,2017 Jack Lloyd
-* 2007 Yves Jerschow
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_LOAD_STORE_H_
-#define BOTAN_LOAD_STORE_H_
-
-#include <botan/types.h>
-#include <botan/bswap.h>
-#include <botan/mem_ops.h>
-#include <vector>
-
-#if defined(BOTAN_TARGET_CPU_IS_BIG_ENDIAN)
- #define BOTAN_ENDIAN_N2L(x) reverse_bytes(x)
- #define BOTAN_ENDIAN_L2N(x) reverse_bytes(x)
- #define BOTAN_ENDIAN_N2B(x) (x)
- #define BOTAN_ENDIAN_B2N(x) (x)
-
-#elif defined(BOTAN_TARGET_CPU_IS_LITTLE_ENDIAN)
- #define BOTAN_ENDIAN_N2L(x) (x)
- #define BOTAN_ENDIAN_L2N(x) (x)
- #define BOTAN_ENDIAN_N2B(x) reverse_bytes(x)
- #define BOTAN_ENDIAN_B2N(x) reverse_bytes(x)
-
-#endif
-
-namespace Botan {
-
-/**
-* Byte extraction
-* @param byte_num which byte to extract, 0 == highest byte
-* @param input the value to extract from
-* @return byte byte_num of input
-*/
-template<typename T> inline uint8_t get_byte(size_t byte_num, T input)
- {
- return static_cast<uint8_t>(
- input >> (((~byte_num)&(sizeof(T)-1)) << 3)
- );
- }
-
-/**
-* Make a uint16_t from two bytes
-* @param i0 the first byte
-* @param i1 the second byte
-* @return i0 || i1
-*/
-inline uint16_t make_uint16(uint8_t i0, uint8_t i1)
- {
- return static_cast<uint16_t>((static_cast<uint16_t>(i0) << 8) | i1);
- }
-
-/**
-* Make a uint32_t from four bytes
-* @param i0 the first byte
-* @param i1 the second byte
-* @param i2 the third byte
-* @param i3 the fourth byte
-* @return i0 || i1 || i2 || i3
-*/
-inline uint32_t make_uint32(uint8_t i0, uint8_t i1, uint8_t i2, uint8_t i3)
- {
- return ((static_cast<uint32_t>(i0) << 24) |
- (static_cast<uint32_t>(i1) << 16) |
- (static_cast<uint32_t>(i2) << 8) |
- (static_cast<uint32_t>(i3)));
- }
-
-/**
-* Make a uint32_t from eight bytes
-* @param i0 the first byte
-* @param i1 the second byte
-* @param i2 the third byte
-* @param i3 the fourth byte
-* @param i4 the fifth byte
-* @param i5 the sixth byte
-* @param i6 the seventh byte
-* @param i7 the eighth byte
-* @return i0 || i1 || i2 || i3 || i4 || i5 || i6 || i7
-*/
-inline uint64_t make_uint64(uint8_t i0, uint8_t i1, uint8_t i2, uint8_t i3,
- uint8_t i4, uint8_t i5, uint8_t i6, uint8_t i7)
- {
- return ((static_cast<uint64_t>(i0) << 56) |
- (static_cast<uint64_t>(i1) << 48) |
- (static_cast<uint64_t>(i2) << 40) |
- (static_cast<uint64_t>(i3) << 32) |
- (static_cast<uint64_t>(i4) << 24) |
- (static_cast<uint64_t>(i5) << 16) |
- (static_cast<uint64_t>(i6) << 8) |
- (static_cast<uint64_t>(i7)));
- }
-
-/**
-* Load a big-endian word
-* @param in a pointer to some bytes
-* @param off an offset into the array
-* @return off'th T of in, as a big-endian value
-*/
-template<typename T>
-inline T load_be(const uint8_t in[], size_t off)
- {
- in += off * sizeof(T);
- T out = 0;
- for(size_t i = 0; i != sizeof(T); ++i)
- out = static_cast<T>((out << 8) | in[i]);
- return out;
- }
-
-/**
-* Load a little-endian word
-* @param in a pointer to some bytes
-* @param off an offset into the array
-* @return off'th T of in, as a litte-endian value
-*/
-template<typename T>
-inline T load_le(const uint8_t in[], size_t off)
- {
- in += off * sizeof(T);
- T out = 0;
- for(size_t i = 0; i != sizeof(T); ++i)
- out = (out << 8) | in[sizeof(T)-1-i];
- return out;
- }
-
-/**
-* Load a big-endian uint16_t
-* @param in a pointer to some bytes
-* @param off an offset into the array
-* @return off'th uint16_t of in, as a big-endian value
-*/
-template<>
-inline uint16_t load_be<uint16_t>(const uint8_t in[], size_t off)
- {
- in += off * sizeof(uint16_t);
-
-#if defined(BOTAN_ENDIAN_N2B)
- uint16_t x;
- std::memcpy(&x, in, sizeof(x));
- return BOTAN_ENDIAN_N2B(x);
-#else
- return make_uint16(in[0], in[1]);
-#endif
- }
-
-/**
-* Load a little-endian uint16_t
-* @param in a pointer to some bytes
-* @param off an offset into the array
-* @return off'th uint16_t of in, as a little-endian value
-*/
-template<>
-inline uint16_t load_le<uint16_t>(const uint8_t in[], size_t off)
- {
- in += off * sizeof(uint16_t);
-
-#if defined(BOTAN_ENDIAN_N2L)
- uint16_t x;
- std::memcpy(&x, in, sizeof(x));
- return BOTAN_ENDIAN_N2L(x);
-#else
- return make_uint16(in[1], in[0]);
-#endif
- }
-
-/**
-* Load a big-endian uint32_t
-* @param in a pointer to some bytes
-* @param off an offset into the array
-* @return off'th uint32_t of in, as a big-endian value
-*/
-template<>
-inline uint32_t load_be<uint32_t>(const uint8_t in[], size_t off)
- {
- in += off * sizeof(uint32_t);
-#if defined(BOTAN_ENDIAN_N2B)
- uint32_t x;
- std::memcpy(&x, in, sizeof(x));
- return BOTAN_ENDIAN_N2B(x);
-#else
- return make_uint32(in[0], in[1], in[2], in[3]);
-#endif
- }
-
-/**
-* Load a little-endian uint32_t
-* @param in a pointer to some bytes
-* @param off an offset into the array
-* @return off'th uint32_t of in, as a little-endian value
-*/
-template<>
-inline uint32_t load_le<uint32_t>(const uint8_t in[], size_t off)
- {
- in += off * sizeof(uint32_t);
-#if defined(BOTAN_ENDIAN_N2L)
- uint32_t x;
- std::memcpy(&x, in, sizeof(x));
- return BOTAN_ENDIAN_N2L(x);
-#else
- return make_uint32(in[3], in[2], in[1], in[0]);
-#endif
- }
-
-/**
-* Load a big-endian uint64_t
-* @param in a pointer to some bytes
-* @param off an offset into the array
-* @return off'th uint64_t of in, as a big-endian value
-*/
-template<>
-inline uint64_t load_be<uint64_t>(const uint8_t in[], size_t off)
- {
- in += off * sizeof(uint64_t);
-#if defined(BOTAN_ENDIAN_N2B)
- uint64_t x;
- std::memcpy(&x, in, sizeof(x));
- return BOTAN_ENDIAN_N2B(x);
-#else
- return make_uint64(in[0], in[1], in[2], in[3],
- in[4], in[5], in[6], in[7]);
-#endif
- }
-
-/**
-* Load a little-endian uint64_t
-* @param in a pointer to some bytes
-* @param off an offset into the array
-* @return off'th uint64_t of in, as a little-endian value
-*/
-template<>
-inline uint64_t load_le<uint64_t>(const uint8_t in[], size_t off)
- {
- in += off * sizeof(uint64_t);
-#if defined(BOTAN_ENDIAN_N2L)
- uint64_t x;
- std::memcpy(&x, in, sizeof(x));
- return BOTAN_ENDIAN_N2L(x);
-#else
- return make_uint64(in[7], in[6], in[5], in[4],
- in[3], in[2], in[1], in[0]);
-#endif
- }
-
-/**
-* Load two little-endian words
-* @param in a pointer to some bytes
-* @param x0 where the first word will be written
-* @param x1 where the second word will be written
-*/
-template<typename T>
-inline void load_le(const uint8_t in[], T& x0, T& x1)
- {
- x0 = load_le<T>(in, 0);
- x1 = load_le<T>(in, 1);
- }
-
-/**
-* Load four little-endian words
-* @param in a pointer to some bytes
-* @param x0 where the first word will be written
-* @param x1 where the second word will be written
-* @param x2 where the third word will be written
-* @param x3 where the fourth word will be written
-*/
-template<typename T>
-inline void load_le(const uint8_t in[],
- T& x0, T& x1, T& x2, T& x3)
- {
- x0 = load_le<T>(in, 0);
- x1 = load_le<T>(in, 1);
- x2 = load_le<T>(in, 2);
- x3 = load_le<T>(in, 3);
- }
-
-/**
-* Load eight little-endian words
-* @param in a pointer to some bytes
-* @param x0 where the first word will be written
-* @param x1 where the second word will be written
-* @param x2 where the third word will be written
-* @param x3 where the fourth word will be written
-* @param x4 where the fifth word will be written
-* @param x5 where the sixth word will be written
-* @param x6 where the seventh word will be written
-* @param x7 where the eighth word will be written
-*/
-template<typename T>
-inline void load_le(const uint8_t in[],
- T& x0, T& x1, T& x2, T& x3,
- T& x4, T& x5, T& x6, T& x7)
- {
- x0 = load_le<T>(in, 0);
- x1 = load_le<T>(in, 1);
- x2 = load_le<T>(in, 2);
- x3 = load_le<T>(in, 3);
- x4 = load_le<T>(in, 4);
- x5 = load_le<T>(in, 5);
- x6 = load_le<T>(in, 6);
- x7 = load_le<T>(in, 7);
- }
-
-/**
-* Load a variable number of little-endian words
-* @param out the output array of words
-* @param in the input array of bytes
-* @param count how many words are in in
-*/
-template<typename T>
-inline void load_le(T out[],
- const uint8_t in[],
- size_t count)
- {
- if(count > 0)
- {
-#if defined(BOTAN_TARGET_CPU_IS_LITTLE_ENDIAN)
- std::memcpy(out, in, sizeof(T)*count);
-#elif defined(BOTAN_TARGET_CPU_IS_BIG_ENDIAN)
- std::memcpy(out, in, sizeof(T)*count);
- const size_t blocks = count - (count % 4);
- const size_t left = count - blocks;
-
- for(size_t i = 0; i != blocks; i += 4)
- bswap_4(out + i);
-
- for(size_t i = 0; i != left; ++i)
- out[blocks+i] = reverse_bytes(out[blocks+i]);
-#else
- for(size_t i = 0; i != count; ++i)
- out[i] = load_le<T>(in, i);
-#endif
- }
- }
-
-/**
-* Load two big-endian words
-* @param in a pointer to some bytes
-* @param x0 where the first word will be written
-* @param x1 where the second word will be written
-*/
-template<typename T>
-inline void load_be(const uint8_t in[], T& x0, T& x1)
- {
- x0 = load_be<T>(in, 0);
- x1 = load_be<T>(in, 1);
- }
-
-/**
-* Load four big-endian words
-* @param in a pointer to some bytes
-* @param x0 where the first word will be written
-* @param x1 where the second word will be written
-* @param x2 where the third word will be written
-* @param x3 where the fourth word will be written
-*/
-template<typename T>
-inline void load_be(const uint8_t in[],
- T& x0, T& x1, T& x2, T& x3)
- {
- x0 = load_be<T>(in, 0);
- x1 = load_be<T>(in, 1);
- x2 = load_be<T>(in, 2);
- x3 = load_be<T>(in, 3);
- }
-
-/**
-* Load eight big-endian words
-* @param in a pointer to some bytes
-* @param x0 where the first word will be written
-* @param x1 where the second word will be written
-* @param x2 where the third word will be written
-* @param x3 where the fourth word will be written
-* @param x4 where the fifth word will be written
-* @param x5 where the sixth word will be written
-* @param x6 where the seventh word will be written
-* @param x7 where the eighth word will be written
-*/
-template<typename T>
-inline void load_be(const uint8_t in[],
- T& x0, T& x1, T& x2, T& x3,
- T& x4, T& x5, T& x6, T& x7)
- {
- x0 = load_be<T>(in, 0);
- x1 = load_be<T>(in, 1);
- x2 = load_be<T>(in, 2);
- x3 = load_be<T>(in, 3);
- x4 = load_be<T>(in, 4);
- x5 = load_be<T>(in, 5);
- x6 = load_be<T>(in, 6);
- x7 = load_be<T>(in, 7);
- }
-
-/**
-* Load a variable number of big-endian words
-* @param out the output array of words
-* @param in the input array of bytes
-* @param count how many words are in in
-*/
-template<typename T>
-inline void load_be(T out[],
- const uint8_t in[],
- size_t count)
- {
- if(count > 0)
- {
-#if defined(BOTAN_TARGET_CPU_IS_BIG_ENDIAN)
- std::memcpy(out, in, sizeof(T)*count);
-
-#elif defined(BOTAN_TARGET_CPU_IS_LITTLE_ENDIAN)
- std::memcpy(out, in, sizeof(T)*count);
- const size_t blocks = count - (count % 4);
- const size_t left = count - blocks;
-
- for(size_t i = 0; i != blocks; i += 4)
- bswap_4(out + i);
-
- for(size_t i = 0; i != left; ++i)
- out[blocks+i] = reverse_bytes(out[blocks+i]);
-#else
- for(size_t i = 0; i != count; ++i)
- out[i] = load_be<T>(in, i);
-#endif
- }
- }
-
-/**
-* Store a big-endian uint16_t
-* @param in the input uint16_t
-* @param out the byte array to write to
-*/
-inline void store_be(uint16_t in, uint8_t out[2])
- {
-#if defined(BOTAN_ENDIAN_N2B)
- uint16_t o = BOTAN_ENDIAN_N2B(in);
- std::memcpy(out, &o, sizeof(o));
-#else
- out[0] = get_byte(0, in);
- out[1] = get_byte(1, in);
-#endif
- }
-
-/**
-* Store a little-endian uint16_t
-* @param in the input uint16_t
-* @param out the byte array to write to
-*/
-inline void store_le(uint16_t in, uint8_t out[2])
- {
-#if defined(BOTAN_ENDIAN_N2L)
- uint16_t o = BOTAN_ENDIAN_N2L(in);
- std::memcpy(out, &o, sizeof(o));
-#else
- out[0] = get_byte(1, in);
- out[1] = get_byte(0, in);
-#endif
- }
-
-/**
-* Store a big-endian uint32_t
-* @param in the input uint32_t
-* @param out the byte array to write to
-*/
-inline void store_be(uint32_t in, uint8_t out[4])
- {
-#if defined(BOTAN_ENDIAN_B2N)
- uint32_t o = BOTAN_ENDIAN_B2N(in);
- std::memcpy(out, &o, sizeof(o));
-#else
- out[0] = get_byte(0, in);
- out[1] = get_byte(1, in);
- out[2] = get_byte(2, in);
- out[3] = get_byte(3, in);
-#endif
- }
-
-/**
-* Store a little-endian uint32_t
-* @param in the input uint32_t
-* @param out the byte array to write to
-*/
-inline void store_le(uint32_t in, uint8_t out[4])
- {
-#if defined(BOTAN_ENDIAN_L2N)
- uint32_t o = BOTAN_ENDIAN_L2N(in);
- std::memcpy(out, &o, sizeof(o));
-#else
- out[0] = get_byte(3, in);
- out[1] = get_byte(2, in);
- out[2] = get_byte(1, in);
- out[3] = get_byte(0, in);
-#endif
- }
-
-/**
-* Store a big-endian uint64_t
-* @param in the input uint64_t
-* @param out the byte array to write to
-*/
-inline void store_be(uint64_t in, uint8_t out[8])
- {
-#if defined(BOTAN_ENDIAN_B2N)
- uint64_t o = BOTAN_ENDIAN_B2N(in);
- std::memcpy(out, &o, sizeof(o));
-#else
- out[0] = get_byte(0, in);
- out[1] = get_byte(1, in);
- out[2] = get_byte(2, in);
- out[3] = get_byte(3, in);
- out[4] = get_byte(4, in);
- out[5] = get_byte(5, in);
- out[6] = get_byte(6, in);
- out[7] = get_byte(7, in);
-#endif
- }
-
-/**
-* Store a little-endian uint64_t
-* @param in the input uint64_t
-* @param out the byte array to write to
-*/
-inline void store_le(uint64_t in, uint8_t out[8])
- {
-#if defined(BOTAN_ENDIAN_L2N)
- uint64_t o = BOTAN_ENDIAN_L2N(in);
- std::memcpy(out, &o, sizeof(o));
-#else
- out[0] = get_byte(7, in);
- out[1] = get_byte(6, in);
- out[2] = get_byte(5, in);
- out[3] = get_byte(4, in);
- out[4] = get_byte(3, in);
- out[5] = get_byte(2, in);
- out[6] = get_byte(1, in);
- out[7] = get_byte(0, in);
-#endif
- }
-
-/**
-* Store two little-endian words
-* @param out the output byte array
-* @param x0 the first word
-* @param x1 the second word
-*/
-template<typename T>
-inline void store_le(uint8_t out[], T x0, T x1)
- {
- store_le(x0, out + (0 * sizeof(T)));
- store_le(x1, out + (1 * sizeof(T)));
- }
-
-/**
-* Store two big-endian words
-* @param out the output byte array
-* @param x0 the first word
-* @param x1 the second word
-*/
-template<typename T>
-inline void store_be(uint8_t out[], T x0, T x1)
- {
- store_be(x0, out + (0 * sizeof(T)));
- store_be(x1, out + (1 * sizeof(T)));
- }
-
-/**
-* Store four little-endian words
-* @param out the output byte array
-* @param x0 the first word
-* @param x1 the second word
-* @param x2 the third word
-* @param x3 the fourth word
-*/
-template<typename T>
-inline void store_le(uint8_t out[], T x0, T x1, T x2, T x3)
- {
- store_le(x0, out + (0 * sizeof(T)));
- store_le(x1, out + (1 * sizeof(T)));
- store_le(x2, out + (2 * sizeof(T)));
- store_le(x3, out + (3 * sizeof(T)));
- }
-
-/**
-* Store four big-endian words
-* @param out the output byte array
-* @param x0 the first word
-* @param x1 the second word
-* @param x2 the third word
-* @param x3 the fourth word
-*/
-template<typename T>
-inline void store_be(uint8_t out[], T x0, T x1, T x2, T x3)
- {
- store_be(x0, out + (0 * sizeof(T)));
- store_be(x1, out + (1 * sizeof(T)));
- store_be(x2, out + (2 * sizeof(T)));
- store_be(x3, out + (3 * sizeof(T)));
- }
-
-/**
-* Store eight little-endian words
-* @param out the output byte array
-* @param x0 the first word
-* @param x1 the second word
-* @param x2 the third word
-* @param x3 the fourth word
-* @param x4 the fifth word
-* @param x5 the sixth word
-* @param x6 the seventh word
-* @param x7 the eighth word
-*/
-template<typename T>
-inline void store_le(uint8_t out[], T x0, T x1, T x2, T x3,
- T x4, T x5, T x6, T x7)
- {
- store_le(x0, out + (0 * sizeof(T)));
- store_le(x1, out + (1 * sizeof(T)));
- store_le(x2, out + (2 * sizeof(T)));
- store_le(x3, out + (3 * sizeof(T)));
- store_le(x4, out + (4 * sizeof(T)));
- store_le(x5, out + (5 * sizeof(T)));
- store_le(x6, out + (6 * sizeof(T)));
- store_le(x7, out + (7 * sizeof(T)));
- }
-
-/**
-* Store eight big-endian words
-* @param out the output byte array
-* @param x0 the first word
-* @param x1 the second word
-* @param x2 the third word
-* @param x3 the fourth word
-* @param x4 the fifth word
-* @param x5 the sixth word
-* @param x6 the seventh word
-* @param x7 the eighth word
-*/
-template<typename T>
-inline void store_be(uint8_t out[], T x0, T x1, T x2, T x3,
- T x4, T x5, T x6, T x7)
- {
- store_be(x0, out + (0 * sizeof(T)));
- store_be(x1, out + (1 * sizeof(T)));
- store_be(x2, out + (2 * sizeof(T)));
- store_be(x3, out + (3 * sizeof(T)));
- store_be(x4, out + (4 * sizeof(T)));
- store_be(x5, out + (5 * sizeof(T)));
- store_be(x6, out + (6 * sizeof(T)));
- store_be(x7, out + (7 * sizeof(T)));
- }
-
-template<typename T>
-void copy_out_be(uint8_t out[], size_t out_bytes, const T in[])
- {
- while(out_bytes >= sizeof(T))
- {
- store_be(in[0], out);
- out += sizeof(T);
- out_bytes -= sizeof(T);
- in += 1;
- }
-
- for(size_t i = 0; i != out_bytes; ++i)
- out[i] = get_byte(i%8, in[0]);
- }
-
-template<typename T, typename Alloc>
-void copy_out_vec_be(uint8_t out[], size_t out_bytes, const std::vector<T, Alloc>& in)
- {
- copy_out_be(out, out_bytes, in.data());
- }
-
-template<typename T>
-void copy_out_le(uint8_t out[], size_t out_bytes, const T in[])
- {
- while(out_bytes >= sizeof(T))
- {
- store_le(in[0], out);
- out += sizeof(T);
- out_bytes -= sizeof(T);
- in += 1;
- }
-
- for(size_t i = 0; i != out_bytes; ++i)
- out[i] = get_byte(sizeof(T) - 1 - (i % 8), in[0]);
- }
-
-template<typename T, typename Alloc>
-void copy_out_vec_le(uint8_t out[], size_t out_bytes, const std::vector<T, Alloc>& in)
- {
- copy_out_le(out, out_bytes, in.data());
- }
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/mem_ops.cpp b/src/libs/3rdparty/botan/src/lib/utils/mem_ops.cpp
deleted file mode 100644
index b7ecd53260..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/mem_ops.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-* (C) 2017 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/mem_ops.h>
-#include <cstdlib>
-
-#if defined(BOTAN_HAS_LOCKING_ALLOCATOR)
- #include <botan/locking_allocator.h>
-#endif
-
-namespace Botan {
-
-BOTAN_MALLOC_FN void* allocate_memory(size_t elems, size_t elem_size)
- {
-#if defined(BOTAN_HAS_LOCKING_ALLOCATOR)
- if(void* p = mlock_allocator::instance().allocate(elems, elem_size))
- return p;
-#endif
-
- void* ptr = std::calloc(elems, elem_size);
- if(!ptr)
- throw std::bad_alloc();
- return ptr;
- }
-
-void deallocate_memory(void* p, size_t elems, size_t elem_size)
- {
- if(p == nullptr)
- return;
-
- secure_scrub_memory(p, elems * elem_size);
-
-#if defined(BOTAN_HAS_LOCKING_ALLOCATOR)
- if(mlock_allocator::instance().deallocate(p, elems, elem_size))
- return;
-#endif
-
- std::free(p);
- }
-
-void initialize_allocator()
- {
-#if defined(BOTAN_HAS_LOCKING_ALLOCATOR)
- mlock_allocator::instance();
-#endif
- }
-
-bool constant_time_compare(const uint8_t x[],
- const uint8_t y[],
- size_t len)
- {
- volatile uint8_t difference = 0;
-
- for(size_t i = 0; i != len; ++i)
- difference |= (x[i] ^ y[i]);
-
- return difference == 0;
- }
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/mem_ops.h b/src/libs/3rdparty/botan/src/lib/utils/mem_ops.h
deleted file mode 100644
index c59c02d5a5..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/mem_ops.h
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
-* Memory Operations
-* (C) 1999-2009,2012,2015 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_MEMORY_OPS_H_
-#define BOTAN_MEMORY_OPS_H_
-
-#include <botan/types.h>
-#include <cstring>
-#include <vector>
-
-namespace Botan {
-
-/**
-* Allocate a memory buffer by some method. This should only be used for
-* primitive types (uint8_t, uint32_t, etc).
-*
-* @param elems the number of elements
-* @param elem_size the size of each element
-* @return pointer to allocated and zeroed memory, or throw std::bad_alloc on failure
-*/
-BOTAN_PUBLIC_API(2,3) BOTAN_MALLOC_FN void* allocate_memory(size_t elems, size_t elem_size);
-
-/**
-* Free a pointer returned by allocate_memory
-* @param p the pointer returned by allocate_memory
-* @param elems the number of elements, as passed to allocate_memory
-* @param elem_size the size of each element, as passed to allocate_memory
-*/
-BOTAN_PUBLIC_API(2,3) void deallocate_memory(void* p, size_t elems, size_t elem_size);
-
-/**
-* Ensure the allocator is initialized
-*/
-void initialize_allocator();
-
-class Allocator_Initializer
- {
- public:
- Allocator_Initializer() { initialize_allocator(); }
- };
-
-/**
-* Scrub memory contents in a way that a compiler should not elide,
-* using some system specific technique. Note that this function might
-* not zero the memory (for example, in some hypothetical
-* implementation it might combine the memory contents with the output
-* of a system PRNG), but if you can detect any difference in behavior
-* at runtime then the clearing is side-effecting and you can just
-* use `clear_mem`.
-*
-* Use this function to scrub memory just before deallocating it, or on
-* a stack buffer before returning from the function.
-*
-* @param ptr a pointer to memory to scrub
-* @param n the number of bytes pointed to by ptr
-*/
-BOTAN_PUBLIC_API(2,0) void secure_scrub_memory(void* ptr, size_t n);
-
-/**
-* Memory comparison, input insensitive
-* @param x a pointer to an array
-* @param y a pointer to another array
-* @param len the number of Ts in x and y
-* @return true iff x[i] == y[i] forall i in [0...n)
-*/
-BOTAN_PUBLIC_API(2,3) bool constant_time_compare(const uint8_t x[],
- const uint8_t y[],
- size_t len);
-
-/**
-* Zero out some bytes
-* @param ptr a pointer to memory to zero
-* @param bytes the number of bytes to zero in ptr
-*/
-inline void clear_bytes(void* ptr, size_t bytes)
- {
- if(bytes > 0)
- {
- std::memset(ptr, 0, bytes);
- }
- }
-
-/**
-* Zero memory before use. This simply calls memset and should not be
-* used in cases where the compiler cannot see the call as a
-* side-effecting operation (for example, if calling clear_mem before
-* deallocating memory, the compiler would be allowed to omit the call
-* to memset entirely under the as-if rule.)
-*
-* @param ptr a pointer to an array of Ts to zero
-* @param n the number of Ts pointed to by ptr
-*/
-template<typename T> inline void clear_mem(T* ptr, size_t n)
- {
- clear_bytes(ptr, sizeof(T)*n);
- }
-
-/**
-* Copy memory
-* @param out the destination array
-* @param in the source array
-* @param n the number of elements of in/out
-*/
-template<typename T> inline void copy_mem(T* out, const T* in, size_t n)
- {
- if(n > 0)
- {
- std::memmove(out, in, sizeof(T)*n);
- }
- }
-
-/**
-* Set memory to a fixed value
-* @param ptr a pointer to an array
-* @param n the number of Ts pointed to by ptr
-* @param val the value to set each byte to
-*/
-template<typename T>
-inline void set_mem(T* ptr, size_t n, uint8_t val)
- {
- if(n > 0)
- {
- std::memset(ptr, val, sizeof(T)*n);
- }
- }
-
-inline const uint8_t* cast_char_ptr_to_uint8(const char* s)
- {
- return reinterpret_cast<const uint8_t*>(s);
- }
-
-inline const char* cast_uint8_ptr_to_char(const uint8_t* b)
- {
- return reinterpret_cast<const char*>(b);
- }
-
-inline uint8_t* cast_char_ptr_to_uint8(char* s)
- {
- return reinterpret_cast<uint8_t*>(s);
- }
-
-inline char* cast_uint8_ptr_to_char(uint8_t* b)
- {
- return reinterpret_cast<char*>(b);
- }
-
-/**
-* Memory comparison, input insensitive
-* @param p1 a pointer to an array
-* @param p2 a pointer to another array
-* @param n the number of Ts in p1 and p2
-* @return true iff p1[i] == p2[i] forall i in [0...n)
-*/
-template<typename T> inline bool same_mem(const T* p1, const T* p2, size_t n)
- {
- volatile T difference = 0;
-
- for(size_t i = 0; i != n; ++i)
- difference |= (p1[i] ^ p2[i]);
-
- return difference == 0;
- }
-
-/**
-* XOR arrays. Postcondition out[i] = in[i] ^ out[i] forall i = 0...length
-* @param out the input/output buffer
-* @param in the read-only input buffer
-* @param length the length of the buffers
-*/
-inline void xor_buf(uint8_t out[],
- const uint8_t in[],
- size_t length)
- {
- while(length >= 16)
- {
- uint64_t x0, x1, y0, y1;
- std::memcpy(&x0, in, 8);
- std::memcpy(&x1, in + 8, 8);
- std::memcpy(&y0, out, 8);
- std::memcpy(&y1, out + 8, 8);
-
- y0 ^= x0;
- y1 ^= x1;
- std::memcpy(out, &y0, 8);
- std::memcpy(out + 8, &y1, 8);
- out += 16; in += 16; length -= 16;
- }
-
- while(length > 0)
- {
- out[0] ^= in[0];
- out += 1;
- in += 1;
- length -= 1;
- }
- }
-
-/**
-* XOR arrays. Postcondition out[i] = in[i] ^ in2[i] forall i = 0...length
-* @param out the output buffer
-* @param in the first input buffer
-* @param in2 the second output buffer
-* @param length the length of the three buffers
-*/
-inline void xor_buf(uint8_t out[],
- const uint8_t in[],
- const uint8_t in2[],
- size_t length)
- {
- while(length >= 16)
- {
- uint64_t x0, x1, y0, y1;
- std::memcpy(&x0, in, 8);
- std::memcpy(&x1, in + 8, 8);
- std::memcpy(&y0, in2, 8);
- std::memcpy(&y1, in2 + 8, 8);
-
- x0 ^= y0;
- x1 ^= y1;
- std::memcpy(out, &x0, 8);
- std::memcpy(out + 8, &x1, 8);
- out += 16; in += 16; in2 += 16; length -= 16;
- }
-
- for(size_t i = 0; i != length; ++i)
- out[i] = in[i] ^ in2[i];
- }
-
-template<typename Alloc, typename Alloc2>
-void xor_buf(std::vector<uint8_t, Alloc>& out,
- const std::vector<uint8_t, Alloc2>& in,
- size_t n)
- {
- xor_buf(out.data(), in.data(), n);
- }
-
-template<typename Alloc>
-void xor_buf(std::vector<uint8_t, Alloc>& out,
- const uint8_t* in,
- size_t n)
- {
- xor_buf(out.data(), in, n);
- }
-
-template<typename Alloc, typename Alloc2>
-void xor_buf(std::vector<uint8_t, Alloc>& out,
- const uint8_t* in,
- const std::vector<uint8_t, Alloc2>& in2,
- size_t n)
- {
- xor_buf(out.data(), in, in2.data(), n);
- }
-
-template<typename Alloc, typename Alloc2>
-std::vector<uint8_t, Alloc>&
-operator^=(std::vector<uint8_t, Alloc>& out,
- const std::vector<uint8_t, Alloc2>& in)
- {
- if(out.size() < in.size())
- out.resize(in.size());
-
- xor_buf(out.data(), in.data(), in.size());
- return out;
- }
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/mul128.h b/src/libs/3rdparty/botan/src/lib/utils/mul128.h
deleted file mode 100644
index 1e28082548..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/mul128.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
-* 64x64->128 bit multiply operation
-* (C) 2013,2015 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_UTIL_MUL128_H_
-#define BOTAN_UTIL_MUL128_H_
-
-#include <botan/types.h>
-
-namespace Botan {
-
-#if defined(__SIZEOF_INT128__) && defined(BOTAN_TARGET_CPU_HAS_NATIVE_64BIT) && !defined(__xlc__)
- #define BOTAN_TARGET_HAS_NATIVE_UINT128
-
- // Prefer TI mode over __int128 as GCC rejects the latter in pendantic mode
- #if defined(__GNUG__)
- typedef unsigned int uint128_t __attribute__((mode(TI)));
- #else
- typedef unsigned __int128 uint128_t;
- #endif
-#endif
-
-}
-
-#if defined(BOTAN_TARGET_HAS_NATIVE_UINT128)
-
-#define BOTAN_FAST_64X64_MUL(a,b,lo,hi) \
- do { \
- const uint128_t r = static_cast<uint128_t>(a) * b; \
- *hi = (r >> 64) & 0xFFFFFFFFFFFFFFFF; \
- *lo = (r ) & 0xFFFFFFFFFFFFFFFF; \
- } while(0)
-
-#elif defined(BOTAN_BUILD_COMPILER_IS_MSVC) && defined(BOTAN_TARGET_CPU_HAS_NATIVE_64BIT)
-
-#include <intrin.h>
-#pragma intrinsic(_umul128)
-
-#define BOTAN_FAST_64X64_MUL(a,b,lo,hi) \
- do { *lo = _umul128(a, b, hi); } while(0)
-
-#elif defined(BOTAN_USE_GCC_INLINE_ASM)
-
-#if defined(BOTAN_TARGET_ARCH_IS_X86_64)
-
-#define BOTAN_FAST_64X64_MUL(a,b,lo,hi) do { \
- asm("mulq %3" : "=d" (*hi), "=a" (*lo) : "a" (a), "rm" (b) : "cc"); \
- } while(0)
-
-#elif defined(BOTAN_TARGET_ARCH_IS_ALPHA)
-
-#define BOTAN_FAST_64X64_MUL(a,b,lo,hi) do { \
- asm("umulh %1,%2,%0" : "=r" (*hi) : "r" (a), "r" (b)); \
- *lo = a * b; \
-} while(0)
-
-#elif defined(BOTAN_TARGET_ARCH_IS_IA64)
-
-#define BOTAN_FAST_64X64_MUL(a,b,lo,hi) do { \
- asm("xmpy.hu %0=%1,%2" : "=f" (*hi) : "f" (a), "f" (b)); \
- *lo = a * b; \
-} while(0)
-
-#elif defined(BOTAN_TARGET_ARCH_IS_PPC64)
-
-#define BOTAN_FAST_64X64_MUL(a,b,lo,hi) do { \
- asm("mulhdu %0,%1,%2" : "=r" (*hi) : "r" (a), "r" (b) : "cc"); \
- *lo = a * b; \
-} while(0)
-
-#endif
-
-#endif
-
-namespace Botan {
-
-/**
-* Perform a 64x64->128 bit multiplication
-*/
-inline void mul64x64_128(uint64_t a, uint64_t b, uint64_t* lo, uint64_t* hi)
- {
-#if defined(BOTAN_FAST_64X64_MUL)
- BOTAN_FAST_64X64_MUL(a, b, lo, hi);
-#else
-
- /*
- * Do a 64x64->128 multiply using four 32x32->64 multiplies plus
- * some adds and shifts. Last resort for CPUs like UltraSPARC (with
- * 64-bit registers/ALU, but no 64x64->128 multiply) or 32-bit CPUs.
- */
- const size_t HWORD_BITS = 32;
- const uint32_t HWORD_MASK = 0xFFFFFFFF;
-
- const uint32_t a_hi = (a >> HWORD_BITS);
- const uint32_t a_lo = (a & HWORD_MASK);
- const uint32_t b_hi = (b >> HWORD_BITS);
- const uint32_t b_lo = (b & HWORD_MASK);
-
- uint64_t x0 = static_cast<uint64_t>(a_hi) * b_hi;
- uint64_t x1 = static_cast<uint64_t>(a_lo) * b_hi;
- uint64_t x2 = static_cast<uint64_t>(a_hi) * b_lo;
- uint64_t x3 = static_cast<uint64_t>(a_lo) * b_lo;
-
- // this cannot overflow as (2^32-1)^2 + 2^32-1 < 2^64-1
- x2 += x3 >> HWORD_BITS;
-
- // this one can overflow
- x2 += x1;
-
- // propagate the carry if any
- x0 += static_cast<uint64_t>(static_cast<bool>(x2 < x1)) << HWORD_BITS;
-
- *hi = x0 + (x2 >> HWORD_BITS);
- *lo = ((x2 & HWORD_MASK) << HWORD_BITS) + (x3 & HWORD_MASK);
-#endif
- }
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/mutex.h b/src/libs/3rdparty/botan/src/lib/utils/mutex.h
deleted file mode 100644
index 34fed5c81e..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/mutex.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-* (C) 2016 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_UTIL_MUTEX_H_
-#define BOTAN_UTIL_MUTEX_H_
-
-#include <botan/types.h>
-
-#if defined(BOTAN_TARGET_OS_HAS_THREADS)
-
-#include <mutex>
-
-namespace Botan {
-
-template<typename T> using lock_guard_type = std::lock_guard<T>;
-typedef std::mutex mutex_type;
-
-}
-
-#else
-
-// No threads
-
-namespace Botan {
-
-template<typename Mutex>
-class lock_guard final
- {
- public:
- explicit lock_guard(Mutex& m) : m_mutex(m)
- { m_mutex.lock(); }
-
- ~lock_guard() { m_mutex.unlock(); }
-
- lock_guard(const lock_guard& other) = delete;
- lock_guard& operator=(const lock_guard& other) = delete;
- private:
- Mutex& m_mutex;
- };
-
-class noop_mutex final
- {
- public:
- void lock() {}
- void unlock() {}
- };
-
-typedef noop_mutex mutex_type;
-template<typename T> using lock_guard_type = lock_guard<T>;
-
-}
-
-#endif
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/os_utils.cpp b/src/libs/3rdparty/botan/src/lib/utils/os_utils.cpp
deleted file mode 100644
index 86e5443c30..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/os_utils.cpp
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
-* OS and machine specific utility functions
-* (C) 2015,2016,2017 Jack Lloyd
-* (C) 2016 Daniel Neus
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/internal/os_utils.h>
-#include <botan/cpuid.h>
-#include <botan/exceptn.h>
-#include <botan/mem_ops.h>
-
-#include <chrono>
-#include <cstdlib>
-
-#if defined(BOTAN_TARGET_OS_HAS_EXPLICIT_BZERO)
- #include <string.h>
-#endif
-
-#if defined(BOTAN_TARGET_OS_HAS_POSIX1)
- #include <sys/types.h>
- #include <sys/resource.h>
- #include <sys/mman.h>
- #include <signal.h>
- #include <setjmp.h>
- #include <unistd.h>
- #include <errno.h>
-#endif
-
-#if defined(BOTAN_TARGET_OS_HAS_GETAUXVAL)
- #include <sys/auxv.h>
-#endif
-
-#if defined(BOTAN_TARGET_OS_HAS_WIN32)
- #define NOMINMAX 1
- #include <windows.h>
-#endif
-
-namespace Botan {
-
-// Not defined in OS namespace for historical reasons
-void secure_scrub_memory(void* ptr, size_t n)
- {
-#if defined(BOTAN_TARGET_OS_HAS_RTLSECUREZEROMEMORY)
- ::RtlSecureZeroMemory(ptr, n);
-
-#elif defined(BOTAN_TARGET_OS_HAS_EXPLICIT_BZERO)
- ::explicit_bzero(ptr, n);
-
-#elif defined(BOTAN_USE_VOLATILE_MEMSET_FOR_ZERO) && (BOTAN_USE_VOLATILE_MEMSET_FOR_ZERO == 1)
- /*
- Call memset through a static volatile pointer, which the compiler
- should not elide. This construct should be safe in conforming
- compilers, but who knows. I did confirm that on x86-64 GCC 6.1 and
- Clang 3.8 both create code that saves the memset address in the
- data segment and uncondtionally loads and jumps to that address.
- */
- static void* (*const volatile memset_ptr)(void*, int, size_t) = std::memset;
- (memset_ptr)(ptr, 0, n);
-#else
-
- volatile uint8_t* p = reinterpret_cast<volatile uint8_t*>(ptr);
-
- for(size_t i = 0; i != n; ++i)
- p[i] = 0;
-#endif
- }
-
-uint32_t OS::get_process_id()
- {
-#if defined(BOTAN_TARGET_OS_HAS_POSIX1)
- return ::getpid();
-#elif defined(BOTAN_TARGET_OS_HAS_WIN32)
- return ::GetCurrentProcessId();
-#elif defined(BOTAN_TARGET_OS_IS_INCLUDEOS) || defined(BOTAN_TARGET_OS_IS_LLVM)
- return 0; // truly no meaningful value
-#else
- #error "Missing get_process_id"
-#endif
- }
-
-bool OS::running_in_privileged_state()
- {
-#if defined(BOTAN_TARGET_OS_HAS_GETAUXVAL) && defined(AT_SECURE)
- return ::getauxval(AT_SECURE) != 0;
-#elif defined(BOTAN_TARGET_OS_HAS_POSIX1)
- return (::getuid() != ::geteuid()) || (::getgid() != ::getegid());
-#else
- return false;
-#endif
- }
-
-uint64_t OS::get_processor_timestamp()
- {
- uint64_t rtc = 0;
-
-#if defined(BOTAN_TARGET_OS_HAS_WIN32)
- LARGE_INTEGER tv;
- ::QueryPerformanceCounter(&tv);
- rtc = tv.QuadPart;
-
-#elif defined(BOTAN_USE_GCC_INLINE_ASM)
-
-#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
-
- if(CPUID::has_rdtsc())
- {
- uint32_t rtc_low = 0, rtc_high = 0;
- asm volatile("rdtsc" : "=d" (rtc_high), "=a" (rtc_low));
- rtc = (static_cast<uint64_t>(rtc_high) << 32) | rtc_low;
- }
-
-#elif defined(BOTAN_TARGET_ARCH_IS_PPC64)
-
- for(;;)
- {
- uint32_t rtc_low = 0, rtc_high = 0, rtc_high2 = 0;
- asm volatile("mftbu %0" : "=r" (rtc_high));
- asm volatile("mftb %0" : "=r" (rtc_low));
- asm volatile("mftbu %0" : "=r" (rtc_high2));
-
- if(rtc_high == rtc_high2)
- {
- rtc = (static_cast<uint64_t>(rtc_high) << 32) | rtc_low;
- break;
- }
- }
-
-#elif defined(BOTAN_TARGET_ARCH_IS_ALPHA)
- asm volatile("rpcc %0" : "=r" (rtc));
-
- // OpenBSD does not trap access to the %tick register
-#elif defined(BOTAN_TARGET_ARCH_IS_SPARC64) && !defined(BOTAN_TARGET_OS_IS_OPENBSD)
- asm volatile("rd %%tick, %0" : "=r" (rtc));
-
-#elif defined(BOTAN_TARGET_ARCH_IS_IA64)
- asm volatile("mov %0=ar.itc" : "=r" (rtc));
-
-#elif defined(BOTAN_TARGET_ARCH_IS_S390X)
- asm volatile("stck 0(%0)" : : "a" (&rtc) : "memory", "cc");
-
-#elif defined(BOTAN_TARGET_ARCH_IS_HPPA)
- asm volatile("mfctl 16,%0" : "=r" (rtc)); // 64-bit only?
-
-#else
- //#warning "OS::get_processor_timestamp not implemented"
-#endif
-
-#endif
-
- return rtc;
- }
-
-uint64_t OS::get_high_resolution_clock()
- {
- if(uint64_t cpu_clock = OS::get_processor_timestamp())
- return cpu_clock;
-
- /*
- If we got here either we either don't have an asm instruction
- above, or (for x86) RDTSC is not available at runtime. Try some
- clock_gettimes and return the first one that works, or otherwise
- fall back to std::chrono.
- */
-
-#if defined(BOTAN_TARGET_OS_HAS_CLOCK_GETTIME)
-
- // The ordering here is somewhat arbitrary...
- const clockid_t clock_types[] = {
-#if defined(CLOCK_MONOTONIC_HR)
- CLOCK_MONOTONIC_HR,
-#endif
-#if defined(CLOCK_MONOTONIC_RAW)
- CLOCK_MONOTONIC_RAW,
-#endif
-#if defined(CLOCK_MONOTONIC)
- CLOCK_MONOTONIC,
-#endif
-#if defined(CLOCK_PROCESS_CPUTIME_ID)
- CLOCK_PROCESS_CPUTIME_ID,
-#endif
-#if defined(CLOCK_THREAD_CPUTIME_ID)
- CLOCK_THREAD_CPUTIME_ID,
-#endif
- };
-
- for(clockid_t clock : clock_types)
- {
- struct timespec ts;
- if(::clock_gettime(clock, &ts) == 0)
- {
- return (static_cast<uint64_t>(ts.tv_sec) * 1000000000) + static_cast<uint64_t>(ts.tv_nsec);
- }
- }
-#endif
-
- // Plain C++11 fallback
- auto now = std::chrono::high_resolution_clock::now().time_since_epoch();
- return std::chrono::duration_cast<std::chrono::nanoseconds>(now).count();
- }
-
-uint64_t OS::get_system_timestamp_ns()
- {
-#if defined(BOTAN_TARGET_OS_HAS_CLOCK_GETTIME)
- struct timespec ts;
- if(::clock_gettime(CLOCK_REALTIME, &ts) == 0)
- {
- return (static_cast<uint64_t>(ts.tv_sec) * 1000000000) + static_cast<uint64_t>(ts.tv_nsec);
- }
-#endif
-
- auto now = std::chrono::system_clock::now().time_since_epoch();
- return std::chrono::duration_cast<std::chrono::nanoseconds>(now).count();
- }
-
-size_t OS::system_page_size()
- {
- const size_t default_page_size = 4096;
-
-#if defined(BOTAN_TARGET_OS_HAS_POSIX1)
- long p = ::sysconf(_SC_PAGESIZE);
- if(p > 1)
- return static_cast<size_t>(p);
- else
- return default_page_size;
-#elif defined(BOTAN_TARGET_OS_HAS_VIRTUAL_LOCK)
- SYSTEM_INFO sys_info;
- ::GetSystemInfo(&sys_info);
- return sys_info.dwPageSize;
-#else
- return default_page_size;
-#endif
- }
-
-size_t OS::get_memory_locking_limit()
- {
-#if defined(BOTAN_TARGET_OS_HAS_POSIX1) && defined(RLIMIT_MEMLOCK)
- /*
- * If RLIMIT_MEMLOCK is not defined, likely the OS does not support
- * unprivileged mlock calls.
- *
- * Linux defaults to only 64 KiB of mlockable memory per process
- * (too small) but BSDs offer a small fraction of total RAM (more
- * than we need). Bound the total mlock size to 512 KiB which is
- * enough to run the entire test suite without spilling to non-mlock
- * memory (and thus presumably also enough for many useful
- * programs), but small enough that we should not cause problems
- * even if many processes are mlocking on the same machine.
- */
- size_t mlock_requested = BOTAN_MLOCK_ALLOCATOR_MAX_LOCKED_KB;
-
- /*
- * Allow override via env variable
- */
- if(OS::running_in_privileged_state() == false)
- {
- if(const char* env = std::getenv("BOTAN_MLOCK_POOL_SIZE"))
- {
- try
- {
- const size_t user_req = std::stoul(env, nullptr);
- mlock_requested = std::min(user_req, mlock_requested);
- }
- catch(std::exception&) { /* ignore it */ }
- }
- }
-
- if(mlock_requested > 0)
- {
- struct ::rlimit limits;
-
- ::getrlimit(RLIMIT_MEMLOCK, &limits);
-
- if(limits.rlim_cur < limits.rlim_max)
- {
- limits.rlim_cur = limits.rlim_max;
- ::setrlimit(RLIMIT_MEMLOCK, &limits);
- ::getrlimit(RLIMIT_MEMLOCK, &limits);
- }
-
- return std::min<size_t>(limits.rlim_cur, mlock_requested * 1024);
- }
-
-#elif defined(BOTAN_TARGET_OS_HAS_VIRTUAL_LOCK)
- SIZE_T working_min = 0, working_max = 0;
- if(!::GetProcessWorkingSetSize(::GetCurrentProcess(), &working_min, &working_max))
- {
- return 0;
- }
-
- // According to Microsoft MSDN:
- // The maximum number of pages that a process can lock is equal to the number of pages in its minimum working set minus a small overhead
- // In the book "Windows Internals Part 2": the maximum lockable pages are minimum working set size - 8 pages
- // But the information in the book seems to be inaccurate/outdated
- // I've tested this on Windows 8.1 x64, Windows 10 x64 and Windows 7 x86
- // On all three OS the value is 11 instead of 8
- size_t overhead = OS::system_page_size() * 11ULL;
- if(working_min > overhead)
- {
- size_t lockable_bytes = working_min - overhead;
- if(lockable_bytes < (BOTAN_MLOCK_ALLOCATOR_MAX_LOCKED_KB * 1024ULL))
- {
- return lockable_bytes;
- }
- else
- {
- return BOTAN_MLOCK_ALLOCATOR_MAX_LOCKED_KB * 1024ULL;
- }
- }
-#endif
-
- // Not supported on this platform
- return 0;
- }
-
-void* OS::allocate_locked_pages(size_t length)
- {
-#if defined(BOTAN_TARGET_OS_HAS_POSIX1) && defined(BOTAN_TARGET_OS_HAS_POSIX_MLOCK)
-
-#if !defined(MAP_NOCORE)
- #define MAP_NOCORE 0
-#endif
-
-#if !defined(MAP_ANONYMOUS)
- #define MAP_ANONYMOUS MAP_ANON
-#endif
-
- void* ptr = ::mmap(nullptr,
- length,
- PROT_READ | PROT_WRITE,
- MAP_ANONYMOUS | MAP_SHARED | MAP_NOCORE,
- /*fd*/-1,
- /*offset*/0);
-
- if(ptr == MAP_FAILED)
- {
- return nullptr;
- }
-
-#if defined(MADV_DONTDUMP)
- ::madvise(ptr, length, MADV_DONTDUMP);
-#endif
-
- if(::mlock(ptr, length) != 0)
- {
- ::munmap(ptr, length);
- return nullptr; // failed to lock
- }
-
- ::memset(ptr, 0, length);
-
- return ptr;
-#elif defined(BOTAN_TARGET_OS_HAS_VIRTUAL_LOCK)
- LPVOID ptr = ::VirtualAlloc(nullptr, length, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
- if(!ptr)
- {
- return nullptr;
- }
-
- if(::VirtualLock(ptr, length) == 0)
- {
- ::VirtualFree(ptr, 0, MEM_RELEASE);
- return nullptr; // failed to lock
- }
-
- return ptr;
-#else
- BOTAN_UNUSED(length);
- return nullptr; /* not implemented */
-#endif
- }
-
-void OS::free_locked_pages(void* ptr, size_t length)
- {
- if(ptr == nullptr || length == 0)
- return;
-
-#if defined(BOTAN_TARGET_OS_HAS_POSIX1) && defined(BOTAN_TARGET_OS_HAS_POSIX_MLOCK)
- secure_scrub_memory(ptr, length);
- ::munlock(ptr, length);
- ::munmap(ptr, length);
-
-#elif defined(BOTAN_TARGET_OS_HAS_VIRTUAL_LOCK)
- secure_scrub_memory(ptr, length);
- ::VirtualUnlock(ptr, length);
- ::VirtualFree(ptr, 0, MEM_RELEASE);
-
-#else
- // Invalid argument because no way this pointer was allocated by us
- throw Invalid_Argument("Invalid ptr to free_locked_pages");
-#endif
- }
-
-#if defined(BOTAN_TARGET_OS_HAS_POSIX1)
-namespace {
-
-static ::sigjmp_buf g_sigill_jmp_buf;
-
-void botan_sigill_handler(int)
- {
- siglongjmp(g_sigill_jmp_buf, /*non-zero return value*/1);
- }
-
-}
-#endif
-
-int OS::run_cpu_instruction_probe(std::function<int ()> probe_fn)
- {
- volatile int probe_result = -3;
-
-#if defined(BOTAN_TARGET_OS_HAS_POSIX1)
- struct sigaction old_sigaction;
- struct sigaction sigaction;
-
- sigaction.sa_handler = botan_sigill_handler;
- sigemptyset(&sigaction.sa_mask);
- sigaction.sa_flags = 0;
-
- int rc = ::sigaction(SIGILL, &sigaction, &old_sigaction);
-
- if(rc != 0)
- throw Exception("run_cpu_instruction_probe sigaction failed");
-
- rc = sigsetjmp(g_sigill_jmp_buf, /*save sigs*/1);
-
- if(rc == 0)
- {
- // first call to sigsetjmp
- probe_result = probe_fn();
- }
- else if(rc == 1)
- {
- // non-local return from siglongjmp in signal handler: return error
- probe_result = -1;
- }
-
- // Restore old SIGILL handler, if any
- rc = ::sigaction(SIGILL, &old_sigaction, nullptr);
- if(rc != 0)
- throw Exception("run_cpu_instruction_probe sigaction restore failed");
-
-#elif defined(BOTAN_TARGET_OS_IS_WINDOWS) && defined(BOTAN_TARGET_COMPILER_IS_MSVC)
-
- // Windows SEH
- __try
- {
- probe_result = probe_fn();
- }
- __except(::GetExceptionCode() == EXCEPTION_ILLEGAL_INSTRUCTION ?
- EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
- {
- probe_result = -1;
- }
-
-#endif
-
- return probe_result;
- }
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/os_utils.h b/src/libs/3rdparty/botan/src/lib/utils/os_utils.h
deleted file mode 100644
index 778ace4e9d..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/os_utils.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
-* OS specific utility functions
-* (C) 2015,2016,2017 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_OS_UTILS_H_
-#define BOTAN_OS_UTILS_H_
-
-#include <botan/types.h>
-#include <functional>
-
-namespace Botan {
-
-namespace OS {
-
-/*
-* This header is internal (not installed) and these functions are not
-* intended to be called by applications. However they are given public
-* visibility (using BOTAN_TEST_API macro) for the tests. This also probably
-* allows them to be overridden by the application on ELF systems, but
-* this hasn't been tested.
-*/
-
-/**
-* @return process ID assigned by the operating system.
-* On Unix and Windows systems, this always returns a result
-* On IncludeOS it returns 0 since there is no process ID to speak of
-* in a unikernel.
-*/
-uint32_t BOTAN_TEST_API get_process_id();
-
-/**
-* Test if we are currently running with elevated permissions
-* eg setuid, setgid, or with POSIX caps set.
-*/
-bool running_in_privileged_state();
-
-/**
-* @return CPU processor clock, if available
-*
-* On Windows, calls QueryPerformanceCounter.
-*
-* Under GCC or Clang on supported platforms the hardware cycle counter is queried.
-* Currently supported processors are x86, PPC, Alpha, SPARC, IA-64, S/390x, and HP-PA.
-* If no CPU cycle counter is available on this system, returns zero.
-*/
-uint64_t BOTAN_TEST_API get_processor_timestamp();
-
-/*
-* @return best resolution timestamp available
-*
-* The epoch and update rate of this clock is arbitrary and depending
-* on the hardware it may not tick at a constant rate.
-*
-* Uses hardware cycle counter, if available.
-* On POSIX platforms clock_gettime is used with a monotonic timer
-* As a final fallback std::chrono::high_resolution_clock is used.
-*/
-uint64_t BOTAN_TEST_API get_high_resolution_clock();
-
-/**
-* @return system clock (reflecting wall clock) with best resolution
-* available, normalized to nanoseconds resolution.
-*/
-uint64_t BOTAN_TEST_API get_system_timestamp_ns();
-
-/**
-* @return maximum amount of memory (in bytes) Botan could/should
-* hyptothetically allocate for the memory poool. Reads environment
-* variable "BOTAN_MLOCK_POOL_SIZE", set to "0" to disable pool.
-*/
-size_t get_memory_locking_limit();
-
-/**
-* Return the size of a memory page, if that can be derived on the
-* current system. Otherwise returns some default value (eg 4096)
-*/
-size_t system_page_size();
-
-/**
-* Request so many bytes of page-aligned RAM locked into memory using
-* mlock, VirtualLock, or similar. Returns null on failure. The memory
-* returned is zeroed. Free it with free_locked_pages.
-* @param length requested allocation in bytes
-*/
-void* allocate_locked_pages(size_t length);
-
-/**
-* Free memory allocated by allocate_locked_pages
-* @param ptr a pointer returned by allocate_locked_pages
-* @param length length passed to allocate_locked_pages
-*/
-void free_locked_pages(void* ptr, size_t length);
-
-/**
-* Run a probe instruction to test for support for a CPU instruction.
-* Runs in system-specific env that catches illegal instructions; this
-* function always fails if the OS doesn't provide this.
-* Returns value of probe_fn, if it could run.
-* If error occurs, returns negative number.
-* This allows probe_fn to indicate errors of its own, if it wants.
-* For example the instruction might not only be only available on some
-* CPUs, but also buggy on some subset of these - the probe function
-* can test to make sure the instruction works properly before
-* indicating that the instruction is available.
-*
-* @warning on Unix systems uses signal handling in a way that is not
-* thread safe. It should only be called in a single-threaded context
-* (ie, at static init time).
-*
-* If probe_fn throws an exception the result is undefined.
-*
-* Return codes:
-* -1 illegal instruction detected
-*/
-int BOTAN_TEST_API run_cpu_instruction_probe(std::function<int ()> probe_fn);
-
-}
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/parsing.cpp b/src/libs/3rdparty/botan/src/lib/utils/parsing.cpp
deleted file mode 100644
index 8e62c6e03f..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/parsing.cpp
+++ /dev/null
@@ -1,478 +0,0 @@
-/*
-* Various string utils and parsing functions
-* (C) 1999-2007,2013,2014,2015,2018 Jack Lloyd
-* (C) 2015 Simon Warta (Kullo GmbH)
-* (C) 2017 René Korthaus, Rohde & Schwarz Cybersecurity
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/parsing.h>
-#include <botan/exceptn.h>
-#include <botan/charset.h>
-#include <botan/loadstor.h>
-#include <algorithm>
-#include <cctype>
-#include <limits>
-#include <set>
-
-namespace Botan {
-
-uint16_t to_uint16(const std::string& str)
- {
- const uint32_t x = to_u32bit(str);
-
- if(x >> 16)
- throw Invalid_Argument("Integer value exceeds 16 bit range");
-
- return static_cast<uint16_t>(x);
- }
-
-uint32_t to_u32bit(const std::string& str)
- {
- // std::stoul is not strict enough. Ensure that str is digit only [0-9]*
- for(const char chr : str)
- {
- if(chr < '0' || chr > '9')
- {
- std::string chrAsString(1, chr);
- throw Invalid_Argument("String contains non-digit char: " + chrAsString);
- }
- }
-
- const unsigned long int x = std::stoul(str);
-
- if(sizeof(unsigned long int) > 4)
- {
- // x might be uint64
- if (x > std::numeric_limits<uint32_t>::max())
- {
- throw Invalid_Argument("Integer value of " + str + " exceeds 32 bit range");
- }
- }
-
- return static_cast<uint32_t>(x);
- }
-
-/*
-* Convert a string into a time duration
-*/
-uint32_t timespec_to_u32bit(const std::string& timespec)
- {
- if(timespec.empty())
- return 0;
-
- const char suffix = timespec[timespec.size()-1];
- std::string value = timespec.substr(0, timespec.size()-1);
-
- uint32_t scale = 1;
-
- if(Charset::is_digit(suffix))
- value += suffix;
- else if(suffix == 's')
- scale = 1;
- else if(suffix == 'm')
- scale = 60;
- else if(suffix == 'h')
- scale = 60 * 60;
- else if(suffix == 'd')
- scale = 24 * 60 * 60;
- else if(suffix == 'y')
- scale = 365 * 24 * 60 * 60;
- else
- throw Decoding_Error("timespec_to_u32bit: Bad input " + timespec);
-
- return scale * to_u32bit(value);
- }
-
-/*
-* Parse a SCAN-style algorithm name
-*/
-std::vector<std::string> parse_algorithm_name(const std::string& namex)
- {
- if(namex.find('(') == std::string::npos &&
- namex.find(')') == std::string::npos)
- return std::vector<std::string>(1, namex);
-
- std::string name = namex, substring;
- std::vector<std::string> elems;
- size_t level = 0;
-
- elems.push_back(name.substr(0, name.find('(')));
- name = name.substr(name.find('('));
-
- for(auto i = name.begin(); i != name.end(); ++i)
- {
- char c = *i;
-
- if(c == '(')
- ++level;
- if(c == ')')
- {
- if(level == 1 && i == name.end() - 1)
- {
- if(elems.size() == 1)
- elems.push_back(substring.substr(1));
- else
- elems.push_back(substring);
- return elems;
- }
-
- if(level == 0 || (level == 1 && i != name.end() - 1))
- throw Invalid_Algorithm_Name(namex);
- --level;
- }
-
- if(c == ',' && level == 1)
- {
- if(elems.size() == 1)
- elems.push_back(substring.substr(1));
- else
- elems.push_back(substring);
- substring.clear();
- }
- else
- substring += c;
- }
-
- if(!substring.empty())
- throw Invalid_Algorithm_Name(namex);
-
- return elems;
- }
-
-std::vector<std::string> split_on(const std::string& str, char delim)
- {
- return split_on_pred(str, [delim](char c) { return c == delim; });
- }
-
-std::vector<std::string> split_on_pred(const std::string& str,
- std::function<bool (char)> pred)
- {
- std::vector<std::string> elems;
- if(str.empty()) return elems;
-
- std::string substr;
- for(auto i = str.begin(); i != str.end(); ++i)
- {
- if(pred(*i))
- {
- if(!substr.empty())
- elems.push_back(substr);
- substr.clear();
- }
- else
- substr += *i;
- }
-
- if(substr.empty())
- throw Invalid_Argument("Unable to split string: " + str);
- elems.push_back(substr);
-
- return elems;
- }
-
-/*
-* Join a string
-*/
-std::string string_join(const std::vector<std::string>& strs, char delim)
- {
- std::string out = "";
-
- for(size_t i = 0; i != strs.size(); ++i)
- {
- if(i != 0)
- out += delim;
- out += strs[i];
- }
-
- return out;
- }
-
-/*
-* Parse an ASN.1 OID string
-*/
-std::vector<uint32_t> parse_asn1_oid(const std::string& oid)
- {
- std::string substring;
- std::vector<uint32_t> oid_elems;
-
- for(auto i = oid.begin(); i != oid.end(); ++i)
- {
- char c = *i;
-
- if(c == '.')
- {
- if(substring.empty())
- throw Invalid_OID(oid);
- oid_elems.push_back(to_u32bit(substring));
- substring.clear();
- }
- else
- substring += c;
- }
-
- if(substring.empty())
- throw Invalid_OID(oid);
- oid_elems.push_back(to_u32bit(substring));
-
- if(oid_elems.size() < 2)
- throw Invalid_OID(oid);
-
- return oid_elems;
- }
-
-/*
-* X.500 String Comparison
-*/
-bool x500_name_cmp(const std::string& name1, const std::string& name2)
- {
- auto p1 = name1.begin();
- auto p2 = name2.begin();
-
- while((p1 != name1.end()) && Charset::is_space(*p1)) ++p1;
- while((p2 != name2.end()) && Charset::is_space(*p2)) ++p2;
-
- while(p1 != name1.end() && p2 != name2.end())
- {
- if(Charset::is_space(*p1))
- {
- if(!Charset::is_space(*p2))
- return false;
-
- while((p1 != name1.end()) && Charset::is_space(*p1)) ++p1;
- while((p2 != name2.end()) && Charset::is_space(*p2)) ++p2;
-
- if(p1 == name1.end() && p2 == name2.end())
- return true;
- if(p1 == name1.end() || p2 == name2.end())
- return false;
- }
-
- if(!Charset::caseless_cmp(*p1, *p2))
- return false;
- ++p1;
- ++p2;
- }
-
- while((p1 != name1.end()) && Charset::is_space(*p1)) ++p1;
- while((p2 != name2.end()) && Charset::is_space(*p2)) ++p2;
-
- if((p1 != name1.end()) || (p2 != name2.end()))
- return false;
- return true;
- }
-
-/*
-* Convert a decimal-dotted string to binary IP
-*/
-uint32_t string_to_ipv4(const std::string& str)
- {
- std::vector<std::string> parts = split_on(str, '.');
-
- if(parts.size() != 4)
- throw Decoding_Error("Invalid IP string " + str);
-
- uint32_t ip = 0;
-
- for(auto part = parts.begin(); part != parts.end(); ++part)
- {
- uint32_t octet = to_u32bit(*part);
-
- if(octet > 255)
- throw Decoding_Error("Invalid IP string " + str);
-
- ip = (ip << 8) | (octet & 0xFF);
- }
-
- return ip;
- }
-
-/*
-* Convert an IP address to decimal-dotted string
-*/
-std::string ipv4_to_string(uint32_t ip)
- {
- std::string str;
-
- for(size_t i = 0; i != sizeof(ip); ++i)
- {
- if(i)
- str += ".";
- str += std::to_string(get_byte(i, ip));
- }
-
- return str;
- }
-
-std::string erase_chars(const std::string& str, const std::set<char>& chars)
- {
- std::string out;
-
- for(auto c: str)
- if(chars.count(c) == 0)
- out += c;
-
- return out;
- }
-
-std::string replace_chars(const std::string& str,
- const std::set<char>& chars,
- char to_char)
- {
- std::string out = str;
-
- for(size_t i = 0; i != out.size(); ++i)
- if(chars.count(out[i]))
- out[i] = to_char;
-
- return out;
- }
-
-std::string replace_char(const std::string& str, char from_char, char to_char)
- {
- std::string out = str;
-
- for(size_t i = 0; i != out.size(); ++i)
- if(out[i] == from_char)
- out[i] = to_char;
-
- return out;
- }
-
-namespace {
-
-std::string tolower_string(const std::string& in)
- {
- std::string s = in;
- for(size_t i = 0; i != s.size(); ++i)
- {
- const int cu = static_cast<unsigned char>(s[i]);
- if(std::isalpha(cu))
- s[i] = static_cast<char>(std::tolower(cu));
- }
- return s;
- }
-
-}
-
-bool host_wildcard_match(const std::string& issued_, const std::string& host_)
- {
- const std::string issued = tolower_string(issued_);
- const std::string host = tolower_string(host_);
-
- if(host.empty() || issued.empty())
- return false;
-
- /*
- If there are embedded nulls in your issued name
- Well I feel bad for you son
- */
- if(std::count(issued.begin(), issued.end(), char(0)) > 0)
- return false;
-
- // If more than one wildcard, then issued name is invalid
- const size_t stars = std::count(issued.begin(), issued.end(), '*');
- if(stars > 1)
- return false;
-
- // '*' is not a valid character in DNS names so should not appear on the host side
- if(std::count(host.begin(), host.end(), '*') != 0)
- return false;
-
- // Similarly a DNS name can't end in .
- if(host[host.size() - 1] == '.')
- return false;
-
- // And a host can't have an empty name component, so reject that
- if(host.find("..") != std::string::npos)
- return false;
-
- // Exact match: accept
- if(issued == host)
- {
- return true;
- }
-
- /*
- Otherwise it might be a wildcard
-
- If the issued size is strictly longer than the hostname size it
- couldn't possibly be a match, even if the issued value is a
- wildcard. The only exception is when the wildcard ends up empty
- (eg www.example.com matches www*.example.com)
- */
- if(issued.size() > host.size() + 1)
- {
- return false;
- }
-
- // If no * at all then not a wildcard, and so not a match
- if(stars != 1)
- {
- return false;
- }
-
- /*
- Now walk through the issued string, making sure every character
- matches. When we come to the (singular) '*', jump forward in the
- hostname by the corresponding amount. We know exactly how much
- space the wildcard takes because it must be exactly `len(host) -
- len(issued) + 1 chars`.
-
- We also verify that the '*' comes in the leftmost component, and
- doesn't skip over any '.' in the hostname.
- */
- size_t dots_seen = 0;
- size_t host_idx = 0;
-
- for(size_t i = 0; i != issued.size(); ++i)
- {
- dots_seen += (issued[i] == '.');
-
- if(issued[i] == '*')
- {
- // Fail: wildcard can only come in leftmost component
- if(dots_seen > 0)
- {
- return false;
- }
-
- /*
- Since there is only one * we know the tail of the issued and
- hostname must be an exact match. In this case advance host_idx
- to match.
- */
- const size_t advance = (host.size() - issued.size() + 1);
-
- if(host_idx + advance > host.size()) // shouldn't happen
- return false;
-
- // Can't be any intervening .s that we would have skipped
- if(std::count(host.begin() + host_idx,
- host.begin() + host_idx + advance, '.') != 0)
- return false;
-
- host_idx += advance;
- }
- else
- {
- if(issued[i] != host[host_idx])
- {
- return false;
- }
-
- host_idx += 1;
- }
- }
-
- // Wildcard issued name must have at least 3 components
- if(dots_seen < 2)
- {
- return false;
- }
-
- return true;
- }
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/parsing.h b/src/libs/3rdparty/botan/src/lib/utils/parsing.h
deleted file mode 100644
index 12cb3fa341..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/parsing.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
-* Various string utils and parsing functions
-* (C) 1999-2007,2013 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_PARSING_UTILS_H_
-#define BOTAN_PARSING_UTILS_H_
-
-#include <botan/types.h>
-#include <string>
-#include <vector>
-#include <set>
-
-#include <istream>
-#include <functional>
-#include <map>
-
-namespace Botan {
-
-/**
-* Parse a SCAN-style algorithm name
-* @param scan_name the name
-* @return the name components
-*/
-BOTAN_PUBLIC_API(2,0) std::vector<std::string>
-parse_algorithm_name(const std::string& scan_name);
-
-/**
-* Split a string
-* @param str the input string
-* @param delim the delimitor
-* @return string split by delim
-*/
-BOTAN_PUBLIC_API(2,0) std::vector<std::string> split_on(
- const std::string& str, char delim);
-
-/**
-* Split a string on a character predicate
-* @param str the input string
-* @param pred the predicate
-*
-* This function will likely be removed in a future release
-*/
-BOTAN_PUBLIC_API(2,0) std::vector<std::string>
-split_on_pred(const std::string& str,
- std::function<bool (char)> pred);
-
-/**
-* Erase characters from a string
-*/
-BOTAN_PUBLIC_API(2,0)
-BOTAN_DEPRECATED("Unused")
-std::string erase_chars(const std::string& str, const std::set<char>& chars);
-
-/**
-* Replace a character in a string
-* @param str the input string
-* @param from_char the character to replace
-* @param to_char the character to replace it with
-* @return str with all instances of from_char replaced by to_char
-*/
-BOTAN_PUBLIC_API(2,0)
-BOTAN_DEPRECATED("Unused")
-std::string replace_char(const std::string& str,
- char from_char,
- char to_char);
-
-/**
-* Replace a character in a string
-* @param str the input string
-* @param from_chars the characters to replace
-* @param to_char the character to replace it with
-* @return str with all instances of from_chars replaced by to_char
-*/
-BOTAN_PUBLIC_API(2,0)
-BOTAN_DEPRECATED("Unused")
-std::string replace_chars(const std::string& str,
- const std::set<char>& from_chars,
- char to_char);
-
-/**
-* Join a string
-* @param strs strings to join
-* @param delim the delimitor
-* @return string joined by delim
-*/
-BOTAN_PUBLIC_API(2,0)
-std::string string_join(const std::vector<std::string>& strs,
- char delim);
-
-/**
-* Parse an ASN.1 OID
-* @param oid the OID in string form
-* @return OID components
-*/
-BOTAN_PUBLIC_API(2,0) std::vector<uint32_t> parse_asn1_oid(const std::string& oid);
-
-/**
-* Compare two names using the X.509 comparison algorithm
-* @param name1 the first name
-* @param name2 the second name
-* @return true if name1 is the same as name2 by the X.509 comparison rules
-*/
-BOTAN_PUBLIC_API(2,0)
-bool x500_name_cmp(const std::string& name1,
- const std::string& name2);
-
-/**
-* Convert a string to a number
-* @param str the string to convert
-* @return number value of the string
-*/
-BOTAN_PUBLIC_API(2,0) uint32_t to_u32bit(const std::string& str);
-
-/**
-* Convert a string to a number
-* @param str the string to convert
-* @return number value of the string
-*/
-BOTAN_PUBLIC_API(2,3) uint16_t to_uint16(const std::string& str);
-
-/**
-* Convert a time specification to a number
-* @param timespec the time specification
-* @return number of seconds represented by timespec
-*/
-BOTAN_PUBLIC_API(2,0) uint32_t BOTAN_DEPRECATED("Not used anymore")
-timespec_to_u32bit(const std::string& timespec);
-
-/**
-* Convert a string representation of an IPv4 address to a number
-* @param ip_str the string representation
-* @return integer IPv4 address
-*/
-BOTAN_PUBLIC_API(2,0) uint32_t string_to_ipv4(const std::string& ip_str);
-
-/**
-* Convert an IPv4 address to a string
-* @param ip_addr the IPv4 address to convert
-* @return string representation of the IPv4 address
-*/
-BOTAN_PUBLIC_API(2,0) std::string ipv4_to_string(uint32_t ip_addr);
-
-std::map<std::string, std::string> BOTAN_PUBLIC_API(2,0) read_cfg(std::istream& is);
-
-/**
-* Accepts key value pairs deliminated by commas:
-*
-* "" (returns empty map)
-* "K=V" (returns map {'K': 'V'})
-* "K1=V1,K2=V2"
-* "K1=V1,K2=V2,K3=V3"
-* "K1=V1,K2=V2,K3=a_value\,with\,commas_and_\=equals"
-*
-* Values may be empty, keys must be non-empty and unique. Duplicate
-* keys cause an exception.
-*
-* Within both key and value, comma and equals can be escaped with
-* backslash. Backslash can also be escaped.
-*/
-std::map<std::string, std::string> BOTAN_PUBLIC_API(2,8) read_kv(const std::string& kv);
-
-std::string BOTAN_PUBLIC_API(2,0) clean_ws(const std::string& s);
-
-/**
-* Check if the given hostname is a match for the specified wildcard
-*/
-bool BOTAN_PUBLIC_API(2,0) host_wildcard_match(const std::string& wildcard,
- const std::string& host);
-
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/prefetch.h b/src/libs/3rdparty/botan/src/lib/utils/prefetch.h
deleted file mode 100644
index 92c41e5738..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/prefetch.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-* Prefetching Operations
-* (C) 2009 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_PREFETCH_H_
-#define BOTAN_PREFETCH_H_
-
-#include <botan/cpuid.h>
-
-namespace Botan {
-
-template<typename T>
-inline void prefetch_readonly(const T* addr, size_t length)
- {
-#if defined(__GNUG__)
- const size_t Ts_per_cache_line = CPUID::cache_line_size() / sizeof(T);
-
- for(size_t i = 0; i <= length; i += Ts_per_cache_line)
- __builtin_prefetch(addr + i, 0);
-#endif
- }
-
-template<typename T>
-inline void prefetch_readwrite(const T* addr, size_t length)
- {
-#if defined(__GNUG__)
- const size_t Ts_per_cache_line = CPUID::cache_line_size() / sizeof(T);
-
- for(size_t i = 0; i <= length; i += Ts_per_cache_line)
- __builtin_prefetch(addr + i, 1);
-#endif
- }
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/read_cfg.cpp b/src/libs/3rdparty/botan/src/lib/utils/read_cfg.cpp
deleted file mode 100644
index bf68c04792..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/read_cfg.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-* Simple config/test file reader
-* (C) 2013,2014,2015 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/parsing.h>
-#include <botan/exceptn.h>
-
-namespace Botan {
-
-std::string clean_ws(const std::string& s)
- {
- const char* ws = " \t\n";
- auto start = s.find_first_not_of(ws);
- auto end = s.find_last_not_of(ws);
-
- if(start == std::string::npos)
- return "";
-
- if(end == std::string::npos)
- return s.substr(start, end);
- else
- return s.substr(start, start + end + 1);
- }
-
-std::map<std::string, std::string> read_cfg(std::istream& is)
- {
- std::map<std::string, std::string> kv;
- size_t line = 0;
-
- while(is.good())
- {
- std::string s;
-
- std::getline(is, s);
-
- ++line;
-
- if(s.empty() || s[0] == '#')
- continue;
-
- s = clean_ws(s.substr(0, s.find('#')));
-
- if(s.empty())
- continue;
-
- auto eq = s.find("=");
-
- if(eq == std::string::npos || eq == 0 || eq == s.size() - 1)
- throw Exception("Bad read_cfg input '" + s + "' on line " + std::to_string(line));
-
- const std::string key = clean_ws(s.substr(0, eq));
- const std::string val = clean_ws(s.substr(eq + 1, std::string::npos));
-
- kv[key] = val;
- }
-
- return kv;
- }
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/read_kv.cpp b/src/libs/3rdparty/botan/src/lib/utils/read_kv.cpp
deleted file mode 100644
index cdc84c6229..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/read_kv.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
-* (C) 2018 Ribose Inc
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/parsing.h>
-#include <botan/exceptn.h>
-
-namespace Botan {
-
-std::map<std::string, std::string> read_kv(const std::string& kv)
- {
- std::map<std::string, std::string> m;
- if(kv == "")
- return m;
-
- std::vector<std::string> parts;
-
- try
- {
- parts = split_on(kv, ',');
- }
- catch(std::exception&)
- {
- throw Invalid_Argument("Bad KV spec");
- }
-
- bool escaped = false;
- bool reading_key = true;
- std::string cur_key;
- std::string cur_val;
-
- for(char c : kv)
- {
- if(c == '\\' && !escaped)
- {
- escaped = true;
- }
- else if(c == ',' && !escaped)
- {
- if(cur_key.empty())
- throw Invalid_Argument("Bad KV spec empty key");
-
- if(m.find(cur_key) != m.end())
- throw Invalid_Argument("Bad KV spec duplicated key");
- m[cur_key] = cur_val;
- cur_key = "";
- cur_val = "";
- reading_key = true;
- }
- else if(c == '=' && !escaped)
- {
- if(reading_key == false)
- throw Invalid_Argument("Bad KV spec unexpected equals sign");
- reading_key = false;
- }
- else
- {
- if(reading_key)
- cur_key += c;
- else
- cur_val += c;
-
- if(escaped)
- escaped = false;
- }
- }
-
- if(!cur_key.empty())
- {
- if(reading_key == false)
- {
- if(m.find(cur_key) != m.end())
- throw Invalid_Argument("Bad KV spec duplicated key");
- m[cur_key] = cur_val;
- }
- else
- throw Invalid_Argument("Bad KV spec incomplete string");
- }
-
- return m;
- }
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/rotate.h b/src/libs/3rdparty/botan/src/lib/utils/rotate.h
deleted file mode 100644
index 4bb76c9ed4..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/rotate.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
-* Word Rotation Operations
-* (C) 1999-2008,2017 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_WORD_ROTATE_H_
-#define BOTAN_WORD_ROTATE_H_
-
-#include <botan/types.h>
-
-namespace Botan {
-
-/**
-* Bit rotation left by a compile-time constant amount
-* @param input the input word
-* @return input rotated left by ROT bits
-*/
-template<size_t ROT, typename T>
-inline T rotl(T input)
- {
- static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
- return static_cast<T>((input << ROT) | (input >> (8*sizeof(T) - ROT)));
- }
-
-/**
-* Bit rotation right by a compile-time constant amount
-* @param input the input word
-* @return input rotated right by ROT bits
-*/
-template<size_t ROT, typename T>
-inline T rotr(T input)
- {
- static_assert(ROT > 0 && ROT < 8*sizeof(T), "Invalid rotation constant");
- return static_cast<T>((input >> ROT) | (input << (8*sizeof(T) - ROT)));
- }
-
-/**
-* Bit rotation left, variable rotation amount
-* @param input the input word
-* @param rot the number of bits to rotate, must be between 0 and sizeof(T)*8-1
-* @return input rotated left by rot bits
-*/
-template<typename T>
-inline T rotl_var(T input, size_t rot)
- {
- return rot ? static_cast<T>((input << rot) | (input >> (sizeof(T)*8 - rot))) : input;
- }
-
-/**
-* Bit rotation right, variable rotation amount
-* @param input the input word
-* @param rot the number of bits to rotate, must be between 0 and sizeof(T)*8-1
-* @return input rotated right by rot bits
-*/
-template<typename T>
-inline T rotr_var(T input, size_t rot)
- {
- return rot ? static_cast<T>((input >> rot) | (input << (sizeof(T)*8 - rot))) : input;
- }
-
-#if BOTAN_USE_GCC_INLINE_ASM
-
-#if defined(BOTAN_TARGET_ARCH_IS_X86_64) || defined(BOTAN_TARGET_ARCH_IS_X86_32)
-
-template<>
-inline uint32_t rotl_var(uint32_t input, size_t rot)
- {
- asm("roll %1,%0" : "+r" (input) : "c" (static_cast<uint8_t>(rot)));
- return input;
- }
-
-template<>
-inline uint32_t rotr_var(uint32_t input, size_t rot)
- {
- asm("rorl %1,%0" : "+r" (input) : "c" (static_cast<uint8_t>(rot)));
- return input;
- }
-
-#endif
-
-#endif
-
-
-template<typename T>
-BOTAN_DEPRECATED("Use rotl<N> or rotl_var")
-inline T rotate_left(T input, size_t rot)
- {
- // rotl_var does not reduce
- return rotl_var(input, rot % (8 * sizeof(T)));
- }
-
-template<typename T>
-BOTAN_DEPRECATED("Use rotr<N> or rotr_var")
-inline T rotate_right(T input, size_t rot)
- {
- // rotr_var does not reduce
- return rotr_var(input, rot % (8 * sizeof(T)));
- }
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/rounding.h b/src/libs/3rdparty/botan/src/lib/utils/rounding.h
deleted file mode 100644
index a03e3a4ee2..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/rounding.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-* Integer Rounding Functions
-* (C) 1999-2007 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_ROUNDING_H_
-#define BOTAN_ROUNDING_H_
-
-#include <botan/types.h>
-
-namespace Botan {
-
-/**
-* Round up
-* @param n a non-negative integer
-* @param align_to the alignment boundary
-* @return n rounded up to a multiple of align_to
-*/
-inline size_t round_up(size_t n, size_t align_to)
- {
- BOTAN_ARG_CHECK(align_to != 0, "align_to must not be 0");
-
- if(n % align_to)
- n += align_to - (n % align_to);
- return n;
- }
-
-/**
-* Round down
-* @param n an integer
-* @param align_to the alignment boundary
-* @return n rounded down to a multiple of align_to
-*/
-template<typename T>
-inline T round_down(T n, T align_to)
- {
- if(align_to == 0)
- return n;
-
- return (n - (n % align_to));
- }
-
-/**
-* Clamp
-*/
-inline size_t clamp(size_t n, size_t lower_bound, size_t upper_bound)
- {
- if(n < lower_bound)
- return lower_bound;
- if(n > upper_bound)
- return upper_bound;
- return n;
- }
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/safeint.h b/src/libs/3rdparty/botan/src/lib/utils/safeint.h
deleted file mode 100644
index 377f134187..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/safeint.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-* Safe(r) Integer Handling
-* (C) 2016 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_UTILS_SAFE_INT_H_
-#define BOTAN_UTILS_SAFE_INT_H_
-
-#include <botan/exceptn.h>
-#include <string>
-
-namespace Botan {
-
-class BOTAN_PUBLIC_API(2,0) Integer_Overflow_Detected final : public Exception
- {
- public:
- Integer_Overflow_Detected(const std::string& file, int line) :
- Exception("Integer overflow detected at " + file + ":" + std::to_string(line))
- {}
- };
-
-inline size_t checked_add(size_t x, size_t y, const char* file, int line)
- {
- // TODO: use __builtin_x_overflow on GCC and Clang
- size_t z = x + y;
- if(z < x)
- {
- throw Integer_Overflow_Detected(file, line);
- }
- return z;
- }
-
-#define BOTAN_CHECKED_ADD(x,y) checked_add(x,y,__FILE__,__LINE__)
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/simd/info.txt b/src/libs/3rdparty/botan/src/lib/utils/simd/info.txt
deleted file mode 100644
index 7784902a60..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/simd/info.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-<defines>
-SIMD_32 -> 20131128
-</defines>
-
-<header:internal>
-simd_32.h
-</header:internal>
diff --git a/src/libs/3rdparty/botan/src/lib/utils/simd/simd_32.h b/src/libs/3rdparty/botan/src/lib/utils/simd/simd_32.h
deleted file mode 100644
index 20589939c2..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/simd/simd_32.h
+++ /dev/null
@@ -1,654 +0,0 @@
-/*
-* Lightweight wrappers for SIMD operations
-* (C) 2009,2011,2016,2017 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_SIMD_32_H_
-#define BOTAN_SIMD_32_H_
-
-#include <botan/types.h>
-#include <botan/loadstor.h>
-#include <botan/bswap.h>
-#include <botan/cpuid.h>
-
-#if defined(BOTAN_TARGET_SUPPORTS_SSE2)
- #include <emmintrin.h>
- #define BOTAN_SIMD_USE_SSE2
-
-#elif defined(BOTAN_TARGET_SUPPORTS_ALTIVEC)
- #include <altivec.h>
- #undef vector
- #undef bool
- #define BOTAN_SIMD_USE_ALTIVEC
-
-#elif defined(BOTAN_TARGET_SUPPORTS_NEON)
- #include <arm_neon.h>
- #define BOTAN_SIMD_USE_NEON
-#endif
-
-namespace Botan {
-
-/**
-* 4x32 bit SIMD register
-*
-* This class is not a general purpose SIMD type, and only offers
-* instructions needed for evaluation of specific crypto primitives.
-* For example it does not currently have equality operators of any
-* kind.
-*
-* Implemented for SSE2, VMX (Altivec), and NEON.
-*/
-class SIMD_4x32 final
- {
- public:
-
- SIMD_4x32& operator=(const SIMD_4x32& other) = default;
- SIMD_4x32(const SIMD_4x32& other) = default;
-
-#if !defined(BOTAN_BUILD_COMPILER_IS_MSVC_2013)
- SIMD_4x32& operator=(SIMD_4x32&& other) = default;
- SIMD_4x32(SIMD_4x32&& other) = default;
-#endif
-
- /**
- * Zero initialize SIMD register with 4 32-bit elements
- */
- SIMD_4x32() // zero initialized
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
- m_sse = _mm_setzero_si128();
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
- m_vmx = vec_splat_u32(0);
-#elif defined(BOTAN_SIMD_USE_NEON)
- m_neon = vdupq_n_u32(0);
-#else
- m_scalar[0] = 0;
- m_scalar[1] = 0;
- m_scalar[2] = 0;
- m_scalar[3] = 0;
-#endif
- }
-
- /**
- * Load SIMD register with 4 32-bit elements
- */
- explicit SIMD_4x32(const uint32_t B[4])
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
- m_sse = _mm_loadu_si128(reinterpret_cast<const __m128i*>(B));
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
- m_vmx = (__vector unsigned int){B[0], B[1], B[2], B[3]};
-#elif defined(BOTAN_SIMD_USE_NEON)
- m_neon = vld1q_u32(B);
-#else
- m_scalar[0] = B[0];
- m_scalar[1] = B[1];
- m_scalar[2] = B[2];
- m_scalar[3] = B[3];
-#endif
- }
-
- /**
- * Load SIMD register with 4 32-bit elements
- */
- SIMD_4x32(uint32_t B0, uint32_t B1, uint32_t B2, uint32_t B3)
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
- m_sse = _mm_set_epi32(B3, B2, B1, B0);
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
- m_vmx = (__vector unsigned int){B0, B1, B2, B3};
-#elif defined(BOTAN_SIMD_USE_NEON)
- // Better way to do this?
- const uint32_t B[4] = { B0, B1, B2, B3 };
- m_neon = vld1q_u32(B);
-#else
- m_scalar[0] = B0;
- m_scalar[1] = B1;
- m_scalar[2] = B2;
- m_scalar[3] = B3;
-#endif
- }
-
- /**
- * Load SIMD register with one 32-bit element repeated
- */
- static SIMD_4x32 splat(uint32_t B)
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
- return SIMD_4x32(_mm_set1_epi32(B));
-#elif defined(BOTAN_SIMD_USE_ARM)
- return SIMD_4x32(vdupq_n_u32(B));
-#else
- return SIMD_4x32(B, B, B, B);
-#endif
- }
-
- /**
- * Load a SIMD register with little-endian convention
- */
- static SIMD_4x32 load_le(const void* in)
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
- return SIMD_4x32(_mm_loadu_si128(reinterpret_cast<const __m128i*>(in)));
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
-
- uint32_t R[4];
- Botan::load_le(R, static_cast<const uint8_t*>(in), 4);
- return SIMD_4x32(R);
-
-#elif defined(BOTAN_SIMD_USE_NEON)
-
- uint32_t in32[4];
- std::memcpy(in32, in, 16);
- if(CPUID::is_big_endian())
- {
- bswap_4(in32);
- }
- return SIMD_4x32(vld1q_u32(in32));
-
-#else
- SIMD_4x32 out;
- Botan::load_le(out.m_scalar, static_cast<const uint8_t*>(in), 4);
- return out;
-#endif
- }
-
- /**
- * Load a SIMD register with big-endian convention
- */
- static SIMD_4x32 load_be(const void* in)
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
-
- return load_le(in).bswap();
-
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
-
- uint32_t R[4];
- Botan::load_be(R, static_cast<const uint8_t*>(in), 4);
- return SIMD_4x32(R);
-
-#elif defined(BOTAN_SIMD_USE_NEON)
-
- uint32_t in32[4];
- std::memcpy(in32, in, 16);
- if(CPUID::is_little_endian())
- {
- bswap_4(in32);
- }
- return SIMD_4x32(vld1q_u32(in32));
-
-#else
- SIMD_4x32 out;
- Botan::load_be(out.m_scalar, static_cast<const uint8_t*>(in), 4);
- return out;
-#endif
- }
-
- /**
- * Load a SIMD register with little-endian convention
- */
- void store_le(uint8_t out[]) const
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
-
- _mm_storeu_si128(reinterpret_cast<__m128i*>(out), m_sse);
-
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
-
- union {
- __vector unsigned int V;
- uint32_t R[4];
- } vec;
- vec.V = m_vmx;
- Botan::store_le(out, vec.R[0], vec.R[1], vec.R[2], vec.R[3]);
-
-#elif defined(BOTAN_SIMD_USE_NEON)
-
- if(CPUID::is_big_endian())
- {
- SIMD_4x32 swap = bswap();
- swap.store_be(out);
- }
- else
- {
- uint32_t out32[4] = { 0 };
- vst1q_u32(out32, m_neon);
- copy_out_le(out, 16, out32);
- }
-#else
- Botan::store_le(out, m_scalar[0], m_scalar[1], m_scalar[2], m_scalar[3]);
-#endif
- }
-
- /**
- * Load a SIMD register with big-endian convention
- */
- void store_be(uint8_t out[]) const
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
-
- bswap().store_le(out);
-
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
-
- union {
- __vector unsigned int V;
- uint32_t R[4];
- } vec;
- vec.V = m_vmx;
- Botan::store_be(out, vec.R[0], vec.R[1], vec.R[2], vec.R[3]);
-
-#elif defined(BOTAN_SIMD_USE_NEON)
-
- if(CPUID::is_little_endian())
- {
- SIMD_4x32 swap = bswap();
- swap.store_le(out);
- }
- else
- {
- uint32_t out32[4] = { 0 };
- vst1q_u32(out32, m_neon);
- copy_out_be(out, 16, out32);
- }
-
-#else
- Botan::store_be(out, m_scalar[0], m_scalar[1], m_scalar[2], m_scalar[3]);
-#endif
- }
-
-
- /*
- * This is used for SHA-2/SHACAL2
- * Return rotr(ROT1) ^ rotr(ROT2) ^ rotr(ROT3)
- */
- template<size_t ROT1, size_t ROT2, size_t ROT3>
- SIMD_4x32 rho() const
- {
- const SIMD_4x32 rot1 = this->rotr<ROT1>();
- const SIMD_4x32 rot2 = this->rotr<ROT2>();
- const SIMD_4x32 rot3 = this->rotr<ROT3>();
- return (rot1 ^ rot2 ^ rot3);
- }
-
- /**
- * Left rotation by a compile time constant
- */
- template<size_t ROT>
- SIMD_4x32 rotl() const
- {
- static_assert(ROT > 0 && ROT < 32, "Invalid rotation constant");
-
-#if defined(BOTAN_SIMD_USE_SSE2)
-
- return SIMD_4x32(_mm_or_si128(_mm_slli_epi32(m_sse, static_cast<int>(ROT)),
- _mm_srli_epi32(m_sse, static_cast<int>(32-ROT))));
-
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
-
- const unsigned int r = static_cast<unsigned int>(ROT);
- return SIMD_4x32(vec_rl(m_vmx, (__vector unsigned int){r, r, r, r}));
-
-#elif defined(BOTAN_SIMD_USE_NEON)
- return SIMD_4x32(vorrq_u32(vshlq_n_u32(m_neon, static_cast<int>(ROT)),
- vshrq_n_u32(m_neon, static_cast<int>(32-ROT))));
-
-#else
- return SIMD_4x32(Botan::rotl<ROT>(m_scalar[0]),
- Botan::rotl<ROT>(m_scalar[1]),
- Botan::rotl<ROT>(m_scalar[2]),
- Botan::rotl<ROT>(m_scalar[3]));
-#endif
- }
-
- /**
- * Right rotation by a compile time constant
- */
- template<size_t ROT>
- SIMD_4x32 rotr() const
- {
- return this->rotl<32-ROT>();
- }
-
- /**
- * Add elements of a SIMD vector
- */
- SIMD_4x32 operator+(const SIMD_4x32& other) const
- {
- SIMD_4x32 retval(*this);
- retval += other;
- return retval;
- }
-
- /**
- * Subtract elements of a SIMD vector
- */
- SIMD_4x32 operator-(const SIMD_4x32& other) const
- {
- SIMD_4x32 retval(*this);
- retval -= other;
- return retval;
- }
-
- /**
- * XOR elements of a SIMD vector
- */
- SIMD_4x32 operator^(const SIMD_4x32& other) const
- {
- SIMD_4x32 retval(*this);
- retval ^= other;
- return retval;
- }
-
- /**
- * Binary OR elements of a SIMD vector
- */
- SIMD_4x32 operator|(const SIMD_4x32& other) const
- {
- SIMD_4x32 retval(*this);
- retval |= other;
- return retval;
- }
-
- /**
- * Binary AND elements of a SIMD vector
- */
- SIMD_4x32 operator&(const SIMD_4x32& other) const
- {
- SIMD_4x32 retval(*this);
- retval &= other;
- return retval;
- }
-
- void operator+=(const SIMD_4x32& other)
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
- m_sse = _mm_add_epi32(m_sse, other.m_sse);
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
- m_vmx = vec_add(m_vmx, other.m_vmx);
-#elif defined(BOTAN_SIMD_USE_NEON)
- m_neon = vaddq_u32(m_neon, other.m_neon);
-#else
- m_scalar[0] += other.m_scalar[0];
- m_scalar[1] += other.m_scalar[1];
- m_scalar[2] += other.m_scalar[2];
- m_scalar[3] += other.m_scalar[3];
-#endif
- }
-
- void operator-=(const SIMD_4x32& other)
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
- m_sse = _mm_sub_epi32(m_sse, other.m_sse);
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
- m_vmx = vec_sub(m_vmx, other.m_vmx);
-#elif defined(BOTAN_SIMD_USE_NEON)
- m_neon = vsubq_u32(m_neon, other.m_neon);
-#else
- m_scalar[0] -= other.m_scalar[0];
- m_scalar[1] -= other.m_scalar[1];
- m_scalar[2] -= other.m_scalar[2];
- m_scalar[3] -= other.m_scalar[3];
-#endif
- }
-
- void operator^=(const SIMD_4x32& other)
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
- m_sse = _mm_xor_si128(m_sse, other.m_sse);
-
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
- m_vmx = vec_xor(m_vmx, other.m_vmx);
-#elif defined(BOTAN_SIMD_USE_NEON)
- m_neon = veorq_u32(m_neon, other.m_neon);
-#else
- m_scalar[0] ^= other.m_scalar[0];
- m_scalar[1] ^= other.m_scalar[1];
- m_scalar[2] ^= other.m_scalar[2];
- m_scalar[3] ^= other.m_scalar[3];
-#endif
- }
-
- void operator|=(const SIMD_4x32& other)
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
- m_sse = _mm_or_si128(m_sse, other.m_sse);
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
- m_vmx = vec_or(m_vmx, other.m_vmx);
-#elif defined(BOTAN_SIMD_USE_NEON)
- m_neon = vorrq_u32(m_neon, other.m_neon);
-#else
- m_scalar[0] |= other.m_scalar[0];
- m_scalar[1] |= other.m_scalar[1];
- m_scalar[2] |= other.m_scalar[2];
- m_scalar[3] |= other.m_scalar[3];
-#endif
- }
-
- void operator&=(const SIMD_4x32& other)
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
- m_sse = _mm_and_si128(m_sse, other.m_sse);
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
- m_vmx = vec_and(m_vmx, other.m_vmx);
-#elif defined(BOTAN_SIMD_USE_NEON)
- m_neon = vandq_u32(m_neon, other.m_neon);
-#else
- m_scalar[0] &= other.m_scalar[0];
- m_scalar[1] &= other.m_scalar[1];
- m_scalar[2] &= other.m_scalar[2];
- m_scalar[3] &= other.m_scalar[3];
-#endif
- }
-
-
- template<int SHIFT> SIMD_4x32 shl() const
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
- return SIMD_4x32(_mm_slli_epi32(m_sse, SHIFT));
-
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
- const unsigned int s = static_cast<unsigned int>(SHIFT);
- return SIMD_4x32(vec_sl(m_vmx, (__vector unsigned int){s, s, s, s}));
-#elif defined(BOTAN_SIMD_USE_NEON)
- return SIMD_4x32(vshlq_n_u32(m_neon, SHIFT));
-#else
- return SIMD_4x32(m_scalar[0] << SHIFT,
- m_scalar[1] << SHIFT,
- m_scalar[2] << SHIFT,
- m_scalar[3] << SHIFT);
-#endif
- }
-
- template<int SHIFT> SIMD_4x32 shr() const
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
- return SIMD_4x32(_mm_srli_epi32(m_sse, SHIFT));
-
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
- const unsigned int s = static_cast<unsigned int>(SHIFT);
- return SIMD_4x32(vec_sr(m_vmx, (__vector unsigned int){s, s, s, s}));
-#elif defined(BOTAN_SIMD_USE_NEON)
- return SIMD_4x32(vshrq_n_u32(m_neon, SHIFT));
-#else
- return SIMD_4x32(m_scalar[0] >> SHIFT, m_scalar[1] >> SHIFT,
- m_scalar[2] >> SHIFT, m_scalar[3] >> SHIFT);
-
-#endif
- }
-
- SIMD_4x32 operator~() const
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
- return SIMD_4x32(_mm_xor_si128(m_sse, _mm_set1_epi32(0xFFFFFFFF)));
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
- return SIMD_4x32(vec_nor(m_vmx, m_vmx));
-#elif defined(BOTAN_SIMD_USE_NEON)
- return SIMD_4x32(vmvnq_u32(m_neon));
-#else
- return SIMD_4x32(~m_scalar[0], ~m_scalar[1], ~m_scalar[2], ~m_scalar[3]);
-#endif
- }
-
- // (~reg) & other
- SIMD_4x32 andc(const SIMD_4x32& other) const
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
- return SIMD_4x32(_mm_andnot_si128(m_sse, other.m_sse));
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
- /*
- AltiVec does arg1 & ~arg2 rather than SSE's ~arg1 & arg2
- so swap the arguments
- */
- return SIMD_4x32(vec_andc(other.m_vmx, m_vmx));
-#elif defined(BOTAN_SIMD_USE_NEON)
- // NEON is also a & ~b
- return SIMD_4x32(vbicq_u32(other.m_neon, m_neon));
-#else
- return SIMD_4x32((~m_scalar[0]) & other.m_scalar[0],
- (~m_scalar[1]) & other.m_scalar[1],
- (~m_scalar[2]) & other.m_scalar[2],
- (~m_scalar[3]) & other.m_scalar[3]);
-#endif
- }
-
- /**
- * Return copy *this with each word byte swapped
- */
- SIMD_4x32 bswap() const
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
-
- __m128i T = m_sse;
- T = _mm_shufflehi_epi16(T, _MM_SHUFFLE(2, 3, 0, 1));
- T = _mm_shufflelo_epi16(T, _MM_SHUFFLE(2, 3, 0, 1));
- return SIMD_4x32(_mm_or_si128(_mm_srli_epi16(T, 8), _mm_slli_epi16(T, 8)));
-
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
-
- union {
- __vector unsigned int V;
- uint32_t R[4];
- } vec;
-
- vec.V = m_vmx;
- bswap_4(vec.R);
- return SIMD_4x32(vec.R[0], vec.R[1], vec.R[2], vec.R[3]);
-
-#elif defined(BOTAN_SIMD_USE_NEON)
-
- //return SIMD_4x32(vrev64q_u32(m_neon));
-
- // FIXME this is really slow
- SIMD_4x32 ror8 = this->rotr<8>();
- SIMD_4x32 rol8 = this->rotl<8>();
-
- const SIMD_4x32 mask1 = SIMD_4x32::splat(0xFF00FF00);
- const SIMD_4x32 mask2 = SIMD_4x32::splat(0x00FF00FF);
- return (ror8 & mask1) | (rol8 & mask2);
-#else
- // scalar
- return SIMD_4x32(reverse_bytes(m_scalar[0]),
- reverse_bytes(m_scalar[1]),
- reverse_bytes(m_scalar[2]),
- reverse_bytes(m_scalar[3]));
-#endif
- }
-
- /**
- * 4x4 Transposition on SIMD registers
- */
- static void transpose(SIMD_4x32& B0, SIMD_4x32& B1,
- SIMD_4x32& B2, SIMD_4x32& B3)
- {
-#if defined(BOTAN_SIMD_USE_SSE2)
- const __m128i T0 = _mm_unpacklo_epi32(B0.m_sse, B1.m_sse);
- const __m128i T1 = _mm_unpacklo_epi32(B2.m_sse, B3.m_sse);
- const __m128i T2 = _mm_unpackhi_epi32(B0.m_sse, B1.m_sse);
- const __m128i T3 = _mm_unpackhi_epi32(B2.m_sse, B3.m_sse);
-
- B0.m_sse = _mm_unpacklo_epi64(T0, T1);
- B1.m_sse = _mm_unpackhi_epi64(T0, T1);
- B2.m_sse = _mm_unpacklo_epi64(T2, T3);
- B3.m_sse = _mm_unpackhi_epi64(T2, T3);
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
- const __vector unsigned int T0 = vec_mergeh(B0.m_vmx, B2.m_vmx);
- const __vector unsigned int T1 = vec_mergeh(B1.m_vmx, B3.m_vmx);
- const __vector unsigned int T2 = vec_mergel(B0.m_vmx, B2.m_vmx);
- const __vector unsigned int T3 = vec_mergel(B1.m_vmx, B3.m_vmx);
-
- B0.m_vmx = vec_mergeh(T0, T1);
- B1.m_vmx = vec_mergel(T0, T1);
- B2.m_vmx = vec_mergeh(T2, T3);
- B3.m_vmx = vec_mergel(T2, T3);
-#elif defined(BOTAN_SIMD_USE_NEON)
-
-#if defined(BOTAN_TARGET_ARCH_IS_ARM32)
-
- const uint32x4x2_t T0 = vzipq_u32(B0.m_neon, B2.m_neon);
- const uint32x4x2_t T1 = vzipq_u32(B1.m_neon, B3.m_neon);
- const uint32x4x2_t O0 = vzipq_u32(T0.val[0], T1.val[0]);
- const uint32x4x2_t O1 = vzipq_u32(T0.val[1], T1.val[1]);
-
- B0.m_neon = O0.val[0];
- B1.m_neon = O0.val[1];
- B2.m_neon = O1.val[0];
- B3.m_neon = O1.val[1];
-
-#elif defined(BOTAN_TARGET_ARCH_IS_ARM64)
- const uint32x4_t T0 = vzip1q_u32(B0.m_neon, B2.m_neon);
- const uint32x4_t T2 = vzip2q_u32(B0.m_neon, B2.m_neon);
-
- const uint32x4_t T1 = vzip1q_u32(B1.m_neon, B3.m_neon);
- const uint32x4_t T3 = vzip2q_u32(B1.m_neon, B3.m_neon);
-
- B0.m_neon = vzip1q_u32(T0, T1);
- B1.m_neon = vzip2q_u32(T0, T1);
-
- B2.m_neon = vzip1q_u32(T2, T3);
- B3.m_neon = vzip2q_u32(T2, T3);
-#endif
-
-#else
- // scalar
- SIMD_4x32 T0(B0.m_scalar[0], B1.m_scalar[0], B2.m_scalar[0], B3.m_scalar[0]);
- SIMD_4x32 T1(B0.m_scalar[1], B1.m_scalar[1], B2.m_scalar[1], B3.m_scalar[1]);
- SIMD_4x32 T2(B0.m_scalar[2], B1.m_scalar[2], B2.m_scalar[2], B3.m_scalar[2]);
- SIMD_4x32 T3(B0.m_scalar[3], B1.m_scalar[3], B2.m_scalar[3], B3.m_scalar[3]);
-
- B0 = T0;
- B1 = T1;
- B2 = T2;
- B3 = T3;
-#endif
- }
-
- private:
-
-#if defined(BOTAN_SIMD_USE_SSE2)
- explicit SIMD_4x32(__m128i in) : m_sse(in) {}
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
- explicit SIMD_4x32(__vector unsigned int in) : m_vmx(in) {}
-#elif defined(BOTAN_SIMD_USE_NEON)
- explicit SIMD_4x32(uint32x4_t in) : m_neon(in) {}
-#endif
-
-#if defined(BOTAN_SIMD_USE_SSE2)
- __m128i m_sse;
-#elif defined(BOTAN_SIMD_USE_ALTIVEC)
- __vector unsigned int m_vmx;
-#elif defined(BOTAN_SIMD_USE_NEON)
- uint32x4_t m_neon;
-#else
- uint32_t m_scalar[4];
-#endif
- };
-
-typedef SIMD_4x32 SIMD_32;
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/simd/simd_avx2/info.txt b/src/libs/3rdparty/botan/src/lib/utils/simd/simd_avx2/info.txt
deleted file mode 100644
index e3d043a12e..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/simd/simd_avx2/info.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-<defines>
-SIMD_AVX2 -> 20180824
-</defines>
-
-need_isa avx2
-
-<header:internal>
-simd_avx2.h
-</header:internal>
-
-<cc>
-gcc
-clang
-msvc
-icc
-</cc>
diff --git a/src/libs/3rdparty/botan/src/lib/utils/simd/simd_avx2/simd_avx2.h b/src/libs/3rdparty/botan/src/lib/utils/simd/simd_avx2/simd_avx2.h
deleted file mode 100644
index 19f9308540..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/simd/simd_avx2/simd_avx2.h
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
-* (C) 2018 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_SIMD_AVX2_H_
-#define BOTAN_SIMD_AVX2_H_
-
-#include <botan/types.h>
-#include <immintrin.h>
-
-namespace Botan {
-
-class SIMD_8x32 final
- {
- public:
-
- SIMD_8x32& operator=(const SIMD_8x32& other) = default;
- SIMD_8x32(const SIMD_8x32& other) = default;
-
-#if !defined(BOTAN_BUILD_COMPILER_IS_MSVC_2013)
- SIMD_8x32& operator=(SIMD_8x32&& other) = default;
- SIMD_8x32(SIMD_8x32&& other) = default;
-#endif
-
- SIMD_8x32()
- {
- m_avx2 = _mm256_setzero_si256();
- }
-
- explicit SIMD_8x32(const uint32_t B[8])
- {
- m_avx2 = _mm256_loadu_si256(reinterpret_cast<const __m256i*>(B));
- }
-
- static SIMD_8x32 splat(uint32_t B)
- {
- return SIMD_8x32(_mm256_set1_epi32(B));
- }
-
- static SIMD_8x32 load_le(const uint8_t* in)
- {
- return SIMD_8x32(_mm256_loadu_si256(reinterpret_cast<const __m256i*>(in)));
- }
-
- static SIMD_8x32 load_be(const uint8_t* in)
- {
- return load_le(in).bswap();
- }
-
- void store_le(uint8_t out[]) const
- {
- _mm256_storeu_si256(reinterpret_cast<__m256i*>(out), m_avx2);
- }
-
- void store_be(uint8_t out[]) const
- {
- bswap().store_le(out);
- }
-
- template<size_t ROT>
- SIMD_8x32 rotl() const
- {
- static_assert(ROT > 0 && ROT < 32, "Invalid rotation constant");
-
- return SIMD_8x32(_mm256_or_si256(_mm256_slli_epi32(m_avx2, static_cast<int>(ROT)),
- _mm256_srli_epi32(m_avx2, static_cast<int>(32-ROT))));
- }
-
- template<size_t ROT>
- SIMD_8x32 rotr() const
- {
- return this->rotl<32-ROT>();
- }
-
- SIMD_8x32 operator+(const SIMD_8x32& other) const
- {
- SIMD_8x32 retval(*this);
- retval += other;
- return retval;
- }
-
- SIMD_8x32 operator-(const SIMD_8x32& other) const
- {
- SIMD_8x32 retval(*this);
- retval -= other;
- return retval;
- }
-
- SIMD_8x32 operator^(const SIMD_8x32& other) const
- {
- SIMD_8x32 retval(*this);
- retval ^= other;
- return retval;
- }
-
- SIMD_8x32 operator|(const SIMD_8x32& other) const
- {
- SIMD_8x32 retval(*this);
- retval |= other;
- return retval;
- }
-
- SIMD_8x32 operator&(const SIMD_8x32& other) const
- {
- SIMD_8x32 retval(*this);
- retval &= other;
- return retval;
- }
-
- void operator+=(const SIMD_8x32& other)
- {
- m_avx2 = _mm256_add_epi32(m_avx2, other.m_avx2);
- }
-
- void operator-=(const SIMD_8x32& other)
- {
- m_avx2 = _mm256_sub_epi32(m_avx2, other.m_avx2);
- }
-
- void operator^=(const SIMD_8x32& other)
- {
- m_avx2 = _mm256_xor_si256(m_avx2, other.m_avx2);
- }
-
- void operator|=(const SIMD_8x32& other)
- {
- m_avx2 = _mm256_or_si256(m_avx2, other.m_avx2);
- }
-
- void operator&=(const SIMD_8x32& other)
- {
- m_avx2 = _mm256_and_si256(m_avx2, other.m_avx2);
- }
-
- template<int SHIFT> SIMD_8x32 shl() const
- {
- return SIMD_8x32(_mm256_slli_epi32(m_avx2, SHIFT));
- }
-
- template<int SHIFT> SIMD_8x32 shr() const
- {
- return SIMD_8x32(_mm256_srli_epi32(m_avx2, SHIFT));
- }
-
- SIMD_8x32 operator~() const
- {
- return SIMD_8x32(_mm256_xor_si256(m_avx2, _mm256_set1_epi32(0xFFFFFFFF)));
- }
-
- // (~reg) & other
- SIMD_8x32 andc(const SIMD_8x32& other) const
- {
- return SIMD_8x32(_mm256_andnot_si256(m_avx2, other.m_avx2));
- }
-
- SIMD_8x32 bswap() const
- {
- const uint8_t BSWAP_MASK[32] = { 3, 2, 1, 0,
- 7, 6, 5, 4,
- 11, 10, 9, 8,
- 15, 14, 13, 12,
- 19, 18, 17, 16,
- 23, 22, 21, 20,
- 27, 26, 25, 24,
- 31, 30, 29, 28 };
-
- const __m256i bswap = _mm256_loadu_si256(reinterpret_cast<const __m256i*>(BSWAP_MASK));
-
- const __m256i output = _mm256_shuffle_epi8(m_avx2, bswap);
-
- return SIMD_8x32(output);
- }
-
- static void transpose(SIMD_8x32& B0, SIMD_8x32& B1,
- SIMD_8x32& B2, SIMD_8x32& B3)
- {
- const __m256i T0 = _mm256_unpacklo_epi32(B0.m_avx2, B1.m_avx2);
- const __m256i T1 = _mm256_unpacklo_epi32(B2.m_avx2, B3.m_avx2);
- const __m256i T2 = _mm256_unpackhi_epi32(B0.m_avx2, B1.m_avx2);
- const __m256i T3 = _mm256_unpackhi_epi32(B2.m_avx2, B3.m_avx2);
-
- B0.m_avx2 = _mm256_unpacklo_epi64(T0, T1);
- B1.m_avx2 = _mm256_unpackhi_epi64(T0, T1);
- B2.m_avx2 = _mm256_unpacklo_epi64(T2, T3);
- B3.m_avx2 = _mm256_unpackhi_epi64(T2, T3);
- }
-
- private:
- SIMD_8x32(__m256i x) : m_avx2(x) {}
-
- __m256i m_avx2;
- };
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/stl_compatibility.h b/src/libs/3rdparty/botan/src/lib/utils/stl_compatibility.h
deleted file mode 100644
index 099af83b38..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/stl_compatibility.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-* STL standards compatibility functions
-* (C) 2017 Tomasz Frydrych
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_STL_COMPATIBILITY_H_
-#define BOTAN_STL_COMPATIBILITY_H_
-
-#include <memory>
-
-#if __cplusplus < 201402L
-#include <cstddef>
-#include <type_traits>
-#include <utility>
-#endif
-
-namespace Botan
-{
-/*
-* std::make_unique functionality similar as we have in C++14.
-* C++11 version based on proposal for C++14 implemenatation by Stephan T. Lavavej
-* source: https://isocpp.org/files/papers/N3656.txt
-*/
-#if __cplusplus >= 201402L
-template <typename T, typename ... Args>
-constexpr auto make_unique(Args&&... args)
- {
- return std::make_unique<T>(std::forward<Args>(args)...);
- }
-
-template<class T>
-constexpr auto make_unique(std::size_t size)
- {
- return std::make_unique<T>(size);
- }
-
-#else
-namespace stlCompatibilityDetails
-{
-template<class T> struct _Unique_if
- {
- typedef std::unique_ptr<T> _Single_object;
- };
-
-template<class T> struct _Unique_if<T[]>
- {
- typedef std::unique_ptr<T[]> _Unknown_bound;
- };
-
-template<class T, size_t N> struct _Unique_if<T[N]>
- {
- typedef void _Known_bound;
- };
-} // namespace stlCompatibilityDetails
-
-template<class T, class... Args>
-typename stlCompatibilityDetails::_Unique_if<T>::_Single_object make_unique(Args&&... args)
- {
- return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
- }
-
-template<class T>
-typename stlCompatibilityDetails::_Unique_if<T>::_Unknown_bound make_unique(size_t n)
- {
- typedef typename std::remove_extent<T>::type U;
- return std::unique_ptr<T>(new U[n]());
- }
-
-template<class T, class... Args>
-typename stlCompatibilityDetails::_Unique_if<T>::_Known_bound make_unique(Args&&...) = delete;
-
-#endif
-
-} // namespace Botan
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/stl_util.h b/src/libs/3rdparty/botan/src/lib/utils/stl_util.h
deleted file mode 100644
index d9167bb7db..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/stl_util.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-* STL Utility Functions
-* (C) 1999-2007 Jack Lloyd
-* (C) 2015 Simon Warta (Kullo GmbH)
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_STL_UTIL_H_
-#define BOTAN_STL_UTIL_H_
-
-#include <vector>
-#include <string>
-#include <map>
-#include <set>
-#include <botan/secmem.h>
-
-namespace Botan {
-
-inline std::vector<uint8_t> to_byte_vector(const std::string& s)
- {
- return std::vector<uint8_t>(s.cbegin(), s.cend());
- }
-
-inline std::string to_string(const secure_vector<uint8_t> &bytes)
- {
- return std::string(bytes.cbegin(), bytes.cend());
- }
-
-/**
-* Return the keys of a map as a std::set
-*/
-template<typename K, typename V>
-std::set<K> map_keys_as_set(const std::map<K, V>& kv)
- {
- std::set<K> s;
- for(auto&& i : kv)
- {
- s.insert(i.first);
- }
- return s;
- }
-
-/*
-* Searching through a std::map
-* @param mapping the map to search
-* @param key is what to look for
-* @param null_result is the value to return if key is not in mapping
-* @return mapping[key] or null_result
-*/
-template<typename K, typename V>
-inline V search_map(const std::map<K, V>& mapping,
- const K& key,
- const V& null_result = V())
- {
- auto i = mapping.find(key);
- if(i == mapping.end())
- return null_result;
- return i->second;
- }
-
-template<typename K, typename V, typename R>
-inline R search_map(const std::map<K, V>& mapping, const K& key,
- const R& null_result, const R& found_result)
- {
- auto i = mapping.find(key);
- if(i == mapping.end())
- return null_result;
- return found_result;
- }
-
-/*
-* Insert a key/value pair into a multimap
-*/
-template<typename K, typename V>
-void multimap_insert(std::multimap<K, V>& multimap,
- const K& key, const V& value)
- {
- multimap.insert(std::make_pair(key, value));
- }
-
-/**
-* Existence check for values
-*/
-template<typename T>
-bool value_exists(const std::vector<T>& vec,
- const T& val)
- {
- for(size_t i = 0; i != vec.size(); ++i)
- if(vec[i] == val)
- return true;
- return false;
- }
-
-template<typename T, typename Pred>
-void map_remove_if(Pred pred, T& assoc)
- {
- auto i = assoc.begin();
- while(i != assoc.end())
- {
- if(pred(i->first))
- assoc.erase(i++);
- else
- i++;
- }
- }
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/timer.cpp b/src/libs/3rdparty/botan/src/lib/utils/timer.cpp
deleted file mode 100644
index 5d64e63fb8..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/timer.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-* (C) 2018 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/internal/timer.h>
-#include <algorithm>
-#include <sstream>
-#include <iomanip>
-
-namespace Botan {
-
-void Timer::stop()
- {
- if(m_timer_start)
- {
- const uint64_t now = Timer::get_system_timestamp_ns();
-
- if(now > m_timer_start)
- {
- uint64_t dur = now - m_timer_start;
-
- m_time_used += dur;
-
- if(m_cpu_cycles_start != 0)
- {
- uint64_t cycles_taken = Timer::get_cpu_cycle_counter() - m_cpu_cycles_start;
- if(cycles_taken > 0)
- {
- m_cpu_cycles_used += static_cast<size_t>(cycles_taken * m_clock_cycle_ratio);
- }
- }
-
- if(m_event_count == 0)
- {
- m_min_time = m_max_time = dur;
- }
- else
- {
- m_max_time = std::max(m_max_time, dur);
- m_min_time = std::min(m_min_time, dur);
- }
- }
-
- m_timer_start = 0;
- ++m_event_count;
- }
- }
-
-std::string Timer::result_string_bps() const
- {
- const size_t MiB = 1024 * 1024;
-
- const double MiB_total = static_cast<double>(events()) / MiB;
- const double MiB_per_sec = MiB_total / seconds();
-
- std::ostringstream oss;
- oss << get_name();
-
- if(!doing().empty())
- {
- oss << " " << doing();
- }
-
- if(buf_size() > 0)
- {
- oss << " buffer size " << buf_size() << " bytes:";
- }
-
- if(events() == 0)
- oss << " " << "N/A";
- else
- oss << " " << std::fixed << std::setprecision(3) << MiB_per_sec << " MiB/sec";
-
- if(cycles_consumed() != 0)
- {
- const double cycles_per_byte = static_cast<double>(cycles_consumed()) / events();
- oss << " " << std::fixed << std::setprecision(2) << cycles_per_byte << " cycles/byte";
- }
-
- oss << " (" << MiB_total << " MiB in " << milliseconds() << " ms)\n";
-
- return oss.str();
- }
-
-std::string Timer::result_string_ops() const
- {
- std::ostringstream oss;
-
- oss << get_name() << " ";
-
- if(events() == 0)
- {
- oss << "no events\n";
- }
- else
- {
- oss << static_cast<uint64_t>(events_per_second())
- << ' ' << doing() << "/sec; "
- << std::setprecision(2) << std::fixed
- << ms_per_event() << " ms/op";
-
- if(cycles_consumed() != 0)
- {
- const double cycles_per_op = static_cast<double>(cycles_consumed()) / events();
- const size_t precision = (cycles_per_op < 10000) ? 2 : 0;
- oss << " " << std::fixed << std::setprecision(precision) << cycles_per_op << " cycles/op";
- }
-
- oss << " (" << events() << " " << (events() == 1 ? "op" : "ops")
- << " in " << milliseconds() << " ms)\n";
- }
-
- return oss.str();
- }
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/timer.h b/src/libs/3rdparty/botan/src/lib/utils/timer.h
deleted file mode 100644
index 86a17b4626..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/timer.h
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
-* (C) 2018 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_TIMER_H_
-#define BOTAN_TIMER_H_
-
-#include <botan/types.h>
-#include <botan/internal/os_utils.h>
-#include <string>
-#include <chrono>
-
-namespace Botan {
-
-class BOTAN_TEST_API Timer final
- {
- public:
- Timer(const std::string& name,
- const std::string& provider,
- const std::string& doing,
- uint64_t event_mult,
- size_t buf_size,
- double clock_cycle_ratio,
- uint64_t clock_speed)
- : m_name(name + ((provider.empty() || provider == "base") ? "" : " [" + provider + "]"))
- , m_doing(doing)
- , m_buf_size(buf_size)
- , m_event_mult(event_mult)
- , m_clock_cycle_ratio(clock_cycle_ratio)
- , m_clock_speed(clock_speed)
- {}
-
- Timer(const std::string& name, size_t buf_size = 0) :
- Timer(name, "", "", 1, buf_size, 0.0, 0)
- {}
-
- Timer(const Timer& other) = default;
-
- static uint64_t get_system_timestamp_ns()
- {
- return Botan::OS::get_system_timestamp_ns();
- }
-
- static uint64_t get_cpu_cycle_counter()
- {
- return Botan::OS::get_processor_timestamp();
- }
-
- void start()
- {
- stop();
- m_timer_start = Timer::get_system_timestamp_ns();
- m_cpu_cycles_start = Timer::get_cpu_cycle_counter();
- }
-
- void stop();
-
- bool under(std::chrono::milliseconds msec)
- {
- return (milliseconds() < msec.count());
- }
-
- class Timer_Scope final
- {
- public:
- explicit Timer_Scope(Timer& timer)
- : m_timer(timer)
- {
- m_timer.start();
- }
- ~Timer_Scope()
- {
- try
- {
- m_timer.stop();
- }
- catch(...) {}
- }
- private:
- Timer& m_timer;
- };
-
- template<typename F>
- auto run(F f) -> decltype(f())
- {
- Timer_Scope timer(*this);
- return f();
- }
-
- template<typename F>
- void run_until_elapsed(std::chrono::milliseconds msec, F f)
- {
- while(this->under(msec))
- {
- run(f);
- }
- }
-
- uint64_t value() const
- {
- return m_time_used;
- }
-
- double seconds() const
- {
- return milliseconds() / 1000.0;
- }
-
- double milliseconds() const
- {
- return value() / 1000000.0;
- }
-
- double ms_per_event() const
- {
- return milliseconds() / events();
- }
-
- uint64_t cycles_consumed() const
- {
- if(m_clock_speed != 0)
- {
- return static_cast<uint64_t>((m_clock_speed * value()) / 1000.0);
- }
- return m_cpu_cycles_used;
- }
-
- uint64_t events() const
- {
- return m_event_count * m_event_mult;
- }
-
- const std::string& get_name() const
- {
- return m_name;
- }
-
- const std::string& doing() const
- {
- return m_doing;
- }
-
- size_t buf_size() const
- {
- return m_buf_size;
- }
-
- double bytes_per_second() const
- {
- return seconds() > 0.0 ? events() / seconds() : 0.0;
- }
-
- double events_per_second() const
- {
- return seconds() > 0.0 ? events() / seconds() : 0.0;
- }
-
- double seconds_per_event() const
- {
- return events() > 0 ? seconds() / events() : 0.0;
- }
-
- void set_custom_msg(const std::string& s)
- {
- m_custom_msg = s;
- }
-
- bool operator<(const Timer& other) const
- {
- if(this->doing() != other.doing())
- return (this->doing() < other.doing());
-
- return (this->get_name() < other.get_name());
- }
-
- std::string to_string() const
- {
- if(m_custom_msg.size() > 0)
- {
- return m_custom_msg;
- }
- else if(this->buf_size() == 0)
- {
- return result_string_ops();
- }
- else
- {
- return result_string_bps();
- }
- }
-
- private:
- std::string result_string_bps() const;
- std::string result_string_ops() const;
-
- // const data
- std::string m_name, m_doing;
- size_t m_buf_size;
- uint64_t m_event_mult;
- double m_clock_cycle_ratio;
- uint64_t m_clock_speed;
-
- // set at runtime
- std::string m_custom_msg;
- uint64_t m_time_used = 0, m_timer_start = 0;
- uint64_t m_event_count = 0;
-
- uint64_t m_max_time = 0, m_min_time = 0;
- uint64_t m_cpu_cycles_start = 0, m_cpu_cycles_used = 0;
- };
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/types.h b/src/libs/3rdparty/botan/src/lib/utils/types.h
deleted file mode 100644
index 476701a1f3..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/types.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
-* Low Level Types
-* (C) 1999-2007 Jack Lloyd
-* (C) 2015 Simon Warta (Kullo GmbH)
-* (C) 2016 René Korthaus, Rohde & Schwarz Cybersecurity
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_TYPES_H_
-#define BOTAN_TYPES_H_
-
-#include <botan/build.h> // IWYU pragma: export
-#include <botan/assert.h> // IWYU pragma: export
-#include <cstddef> // IWYU pragma: export
-#include <cstdint> // IWYU pragma: export
-#include <memory> // IWYU pragma: export
-
-namespace Botan {
-
-/**
-* @mainpage Botan Crypto Library API Reference
-*
-* <dl>
-* <dt>Abstract Base Classes<dd>
-* BlockCipher, HashFunction, KDF, MessageAuthenticationCode, RandomNumberGenerator,
-* StreamCipher, SymmetricAlgorithm, AEAD_Mode, Cipher_Mode
-* <dt>Public Key Interface Classes<dd>
-* PK_Key_Agreement, PK_Signer, PK_Verifier, PK_Encryptor, PK_Decryptor
-* <dt>Authenticated Encryption Modes<dd>
-* @ref CCM_Mode "CCM", @ref ChaCha20Poly1305_Mode "ChaCha20Poly1305", @ref EAX_Mode "EAX",
-* @ref GCM_Mode "GCM", @ref OCB_Mode "OCB", @ref SIV_Mode "SIV"
-* <dt>Block Ciphers<dd>
-* @ref aria.h "ARIA", @ref aes.h "AES", @ref Blowfish, @ref camellia.h "Camellia", @ref Cascade_Cipher "Cascade",
-* @ref CAST_128 "CAST-128", @ref CAST_128 "CAST-256", DES, @ref DESX "DES-X", @ref TripleDES "3DES",
-* @ref GOST_28147_89 "GOST 28147-89", IDEA, KASUMI, Lion, MISTY1, Noekeon, SEED, Serpent, SHACAL2, SM4,
-* @ref Threefish_512 "Threefish", Twofish, XTEA
-* <dt>Stream Ciphers<dd>
-* ChaCha, @ref CTR_BE "CTR", OFB, RC4, Salsa20
-* <dt>Hash Functions<dd>
-* Blake2b, @ref GOST_34_11 "GOST 34.11", @ref Keccak_1600 "Keccak", MD4, MD5, @ref RIPEMD_160 "RIPEMD-160",
-* @ref SHA_160 "SHA-1", @ref SHA_224 "SHA-224", @ref SHA_256 "SHA-256", @ref SHA_384 "SHA-384",
-* @ref SHA_512 "SHA-512", @ref Skein_512 "Skein-512", SM3, Streebog, Tiger, Whirlpool
-* <dt>Non-Cryptographic Checksums<dd>
-* Adler32, CRC24, CRC32
-* <dt>Message Authentication Codes<dd>
-* @ref CBC_MAC "CBC-MAC", CMAC, HMAC, Poly1305, SipHash, ANSI_X919_MAC
-* <dt>Random Number Generators<dd>
-* AutoSeeded_RNG, HMAC_DRBG, RDRAND_RNG, System_RNG
-* <dt>Key Derivation<dd>
-* HKDF, @ref KDF1 "KDF1 (IEEE 1363)", @ref KDF1_18033 "KDF1 (ISO 18033-2)", @ref KDF2 "KDF2 (IEEE 1363)",
-* @ref sp800_108.h "SP800-108", @ref SP800_56C "SP800-56C", @ref PKCS5_PBKDF1 "PBKDF1 (PKCS#5),
-* @ref PKCS5_PBKDF2 "PBKDF2 (PKCS#5)"
-* <dt>Password Hashing<dd>
-* @ref bcrypt.h "bcrypt", @ref passhash9.h "passhash9"
-* <dt>Public Key Cryptosystems<dd>
-* @ref dlies.h "DLIES", @ref ecies.h "ECIES", @ref elgamal.h "ElGamal"
-* @ref rsa.h "RSA", @ref newhope.h "NewHope", @ref mceliece.h "McEliece" and @ref mceies.h "MCEIES",
-* @ref sm2.h "SM2"
-* <dt>Public Key Signature Schemes<dd>
-* @ref dsa.h "DSA", @ref ecdsa.h "ECDSA", @ref ecgdsa.h "ECGDSA", @ref eckcdsa.h "ECKCDSA",
-* @ref gost_3410.h "GOST 34.10-2001", @ref sm2.h "SM2", @ref xmss.h "XMSS"
-* <dt>Key Agreement<dd>
-* @ref dh.h "DH", @ref ecdh.h "ECDH"
-* <dt>Compression<dd>
-* @ref bzip2.h "bzip2", @ref lzma.h "lzma", @ref zlib.h "zlib"
-* <dt>TLS<dd>
-* TLS::Client, TLS::Server, TLS::Policy, TLS::Protocol_Version, TLS::Callbacks, TLS::Ciphersuite,
-* TLS::Session, TLS::Session_Manager, Credentials_Manager
-* <dt>X.509<dd>
-* X509_Certificate, X509_CRL, X509_CA, Certificate_Extension, PKCS10_Request, X509_Cert_Options,
-* Certificate_Store, Certificate_Store_In_SQL, Certificate_Store_In_SQLite
-* </dl>
-*/
-
-using std::uint8_t;
-using std::uint16_t;
-using std::uint32_t;
-using std::uint64_t;
-using std::int32_t;
-using std::int64_t;
-using std::size_t;
-
-/*
-* These typedefs are no longer used within the library headers
-* or code. They are kept only for compatability with software
-* written against older versions.
-*/
-using byte = std::uint8_t;
-using u16bit = std::uint16_t;
-using u32bit = std::uint32_t;
-using u64bit = std::uint64_t;
-using s32bit = std::int32_t;
-
-#if (BOTAN_MP_WORD_BITS == 32)
- typedef uint32_t word;
-#elif (BOTAN_MP_WORD_BITS == 64)
- typedef uint64_t word;
-#else
- #error BOTAN_MP_WORD_BITS must be 32 or 64
-#endif
-
-}
-
-#endif
diff --git a/src/libs/3rdparty/botan/src/lib/utils/version.cpp b/src/libs/3rdparty/botan/src/lib/utils/version.cpp
deleted file mode 100644
index ccf83bf6cb..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/version.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
-* Version Information
-* (C) 1999-2013,2015 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#include <botan/version.h>
-#include <sstream>
-
-namespace Botan {
-
-/*
- These are intentionally compiled rather than inlined, so an
- application running against a shared library can test the true
- version they are running against.
-*/
-
-#define QUOTE(name) #name
-#define STR(macro) QUOTE(macro)
-
-const char* short_version_cstr()
- {
- return STR(BOTAN_VERSION_MAJOR) "."
- STR(BOTAN_VERSION_MINOR) "."
- STR(BOTAN_VERSION_PATCH);
- }
-
-const char* version_cstr()
- {
-
- /*
- It is intentional that this string is a compile-time constant;
- it makes it much easier to find in binaries.
- */
-
- return "Botan " STR(BOTAN_VERSION_MAJOR) "."
- STR(BOTAN_VERSION_MINOR) "."
- STR(BOTAN_VERSION_PATCH) " ("
-#if defined(BOTAN_UNSAFE_FUZZER_MODE)
- "UNSAFE FUZZER MODE BUILD "
-#endif
- BOTAN_VERSION_RELEASE_TYPE
-#if (BOTAN_VERSION_DATESTAMP != 0)
- ", dated " STR(BOTAN_VERSION_DATESTAMP)
-#endif
- ", revision " BOTAN_VERSION_VC_REVISION
- ", distribution " BOTAN_DISTRIBUTION_INFO ")";
- }
-
-#undef STR
-#undef QUOTE
-
-/*
-* Return the version as a string
-*/
-std::string version_string()
- {
- return std::string(version_cstr());
- }
-
-std::string short_version_string()
- {
- return std::string(short_version_cstr());
- }
-
-uint32_t version_datestamp() { return BOTAN_VERSION_DATESTAMP; }
-
-/*
-* Return parts of the version as integers
-*/
-uint32_t version_major() { return BOTAN_VERSION_MAJOR; }
-uint32_t version_minor() { return BOTAN_VERSION_MINOR; }
-uint32_t version_patch() { return BOTAN_VERSION_PATCH; }
-
-std::string runtime_version_check(uint32_t major,
- uint32_t minor,
- uint32_t patch)
- {
- if(major != version_major() || minor != version_minor() || patch != version_patch())
- {
- std::ostringstream oss;
- oss << "Warning: linked version (" << short_version_string() << ")"
- << " does not match version built against "
- << "(" << major << '.' << minor << '.' << patch << ")\n";
- return oss.str();
- }
-
- return "";
- }
-
-}
diff --git a/src/libs/3rdparty/botan/src/lib/utils/version.h b/src/libs/3rdparty/botan/src/lib/utils/version.h
deleted file mode 100644
index fe59de625c..0000000000
--- a/src/libs/3rdparty/botan/src/lib/utils/version.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-* Version Information
-* (C) 1999-2011,2015 Jack Lloyd
-*
-* Botan is released under the Simplified BSD License (see license.txt)
-*/
-
-#ifndef BOTAN_VERSION_H_
-#define BOTAN_VERSION_H_
-
-#include <botan/types.h>
-#include <string>
-
-namespace Botan {
-
-/*
-* Get information describing the version
-*/
-
-/**
-* Get a human-readable string identifying the version of Botan.
-* No particular format should be assumed.
-* @return version string
-*/
-BOTAN_PUBLIC_API(2,0) std::string version_string();
-
-/**
-* Same as version_string() except returning a pointer to a statically
-* allocated string.
-* @return version string
-*/
-BOTAN_PUBLIC_API(2,0) const char* version_cstr();
-
-/**
-* Return a version string of the form "MAJOR.MINOR.PATCH" where
-* each of the values is an integer.
-*/
-BOTAN_PUBLIC_API(2,4) std::string short_version_string();
-
-/**
-* Same as version_short_string except returning a pointer to the string.
-*/
-BOTAN_PUBLIC_API(2,4) const char* short_version_cstr();
-
-/**
-* Return the date this version of botan was released, in an integer of
-* the form YYYYMMDD. For instance a version released on May 21, 2013
-* would return the integer 20130521. If the currently running version
-* is not an official release, this function will return 0 instead.
-*
-* @return release date, or zero if unreleased
-*/
-BOTAN_PUBLIC_API(2,0) uint32_t version_datestamp();
-
-/**
-* Get the major version number.
-* @return major version number
-*/
-BOTAN_PUBLIC_API(2,0) uint32_t version_major();
-
-/**
-* Get the minor version number.
-* @return minor version number
-*/
-BOTAN_PUBLIC_API(2,0) uint32_t version_minor();
-
-/**
-* Get the patch number.
-* @return patch number
-*/
-BOTAN_PUBLIC_API(2,0) uint32_t version_patch();
-
-/**
-* Usable for checking that the DLL version loaded at runtime exactly
-* matches the compile-time version. Call using BOTAN_VERSION_* macro
-* values. Returns the empty string if an exact match, otherwise an
-* appropriate message. Added with 1.11.26.
-*/
-BOTAN_PUBLIC_API(2,0) std::string
-runtime_version_check(uint32_t major,
- uint32_t minor,
- uint32_t patch);
-
-/*
-* Macros for compile-time version checks
-*/
-#define BOTAN_VERSION_CODE_FOR(a,b,c) ((a << 16) | (b << 8) | (c))
-
-/**
-* Compare using BOTAN_VERSION_CODE_FOR, as in
-* # if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,8,0)
-* # error "Botan version too old"
-* # endif
-*/
-#define BOTAN_VERSION_CODE BOTAN_VERSION_CODE_FOR(BOTAN_VERSION_MAJOR, \
- BOTAN_VERSION_MINOR, \
- BOTAN_VERSION_PATCH)
-
-}
-
-#endif