20 #ifndef CS_CRYPTO_DRIVERS_TRAITS_H
21 #define CS_CRYPTO_DRIVERS_TRAITS_H
23 #include <drivers/base/drivers.h>
24 #include <util/tools/crypto_traits.h>
25 #include <util/tools/is_detected_traits.h>
27 #include <type_traits>
29 namespace cs_crypto::drivers::traits {
31 template <implementation>
38 struct have_driver<implementation::base>
43 #if CSCRYPTO_HAVE_BOTAN
45 struct have_driver<implementation::botan>
51 #if CSCRYPTO_HAVE_OPENSSL
53 struct have_driver<implementation::openssl>
59 template <implementation I>
60 [[maybe_unused]]
constexpr static const bool have_driver_v = have_driver<I>::value;
62 template <implementation I>
64 using hash = cs_crypto::traits::nonesuch;
65 using symmetric_encryption = cs_crypto::traits::nonesuch;