OpenVPN 3 Core Library
Loading...
Searching...
No Matches
cryptoalgs.hpp File Reference
#include <functional>
#include <string>
#include <list>
#include <openvpn/common/size.hpp>
#include <openvpn/common/exception.hpp>
#include <openvpn/common/string.hpp>
#include <openvpn/common/likely.hpp>
#include <openvpn/common/arraysize.hpp>
#include <openvpn/crypto/definitions.hpp>
Include dependency graph for cryptoalgs.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  openvpn::CryptoAlgs::Alg
 

Namespaces

namespace  openvpn
 
namespace  openvpn::CryptoAlgs
 

Enumerations

enum class  openvpn::CryptoAlgs::KeyDerivation { openvpn::CryptoAlgs::UNDEFINED , openvpn::CryptoAlgs::OPENVPN_PRF , openvpn::CryptoAlgs::TLS_EKM }
 
enum  openvpn::CryptoAlgs::Type {
  openvpn::CryptoAlgs::NONE = 0 , openvpn::CryptoAlgs::AES_128_CBC , openvpn::CryptoAlgs::AES_192_CBC , openvpn::CryptoAlgs::AES_256_CBC ,
  openvpn::CryptoAlgs::DES_CBC , openvpn::CryptoAlgs::DES_EDE3_CBC , openvpn::CryptoAlgs::BF_CBC , openvpn::CryptoAlgs::AES_256_CTR ,
  openvpn::CryptoAlgs::AES_128_GCM , openvpn::CryptoAlgs::AES_192_GCM , openvpn::CryptoAlgs::AES_256_GCM , openvpn::CryptoAlgs::CHACHA20_POLY1305 ,
  openvpn::CryptoAlgs::MD4 , openvpn::CryptoAlgs::MD5 , openvpn::CryptoAlgs::SHA1 , openvpn::CryptoAlgs::SHA224 ,
  openvpn::CryptoAlgs::SHA256 , openvpn::CryptoAlgs::SHA384 , openvpn::CryptoAlgs::SHA512 , openvpn::CryptoAlgs::SIZE
}
 
enum  openvpn::CryptoAlgs::Mode { openvpn::CryptoAlgs::MODE_UNDEF = 0 , openvpn::CryptoAlgs::CBC_HMAC , openvpn::CryptoAlgs::AEAD }
 
enum  openvpn::CryptoAlgs::AlgFlags { openvpn::CryptoAlgs::F_CIPHER = (1 << 0) , openvpn::CryptoAlgs::F_DIGEST = (1 << 1) , openvpn::CryptoAlgs::F_ALLOW_DC = (1 << 2) }
 
enum  { openvpn::CryptoAlgs::AEAD_NONCE_TAIL_SIZE = 8 }
 

Functions

 openvpn::CryptoAlgs::OPENVPN_EXCEPTION (crypto_alg)
 
 openvpn::CryptoAlgs::OPENVPN_SIMPLE_EXCEPTION (crypto_alg_index)
 
const char * openvpn::CryptoAlgs::name (const KeyDerivation kd)
 
bool openvpn::CryptoAlgs::defined (const Type type)
 
const Algopenvpn::CryptoAlgs::get_index (const size_t i)
 
const Algopenvpn::CryptoAlgs::get_ptr (const Type type)
 
const Algopenvpn::CryptoAlgs::get (const Type type)
 
std::size_t openvpn::CryptoAlgs::for_each (std::function< bool(Type, const Alg &)> fn)
 
Type openvpn::CryptoAlgs::lookup (const std::string &name)
 
const char * openvpn::CryptoAlgs::name (const Type type, const char *default_name=nullptr)
 
size_t openvpn::CryptoAlgs::size (const Type type)
 
size_t openvpn::CryptoAlgs::key_length (const Type type)
 
size_t openvpn::CryptoAlgs::iv_length (const Type type)
 
size_t openvpn::CryptoAlgs::block_size (const Type type)
 
Mode openvpn::CryptoAlgs::mode (const Type type)
 
uint64_t openvpn::CryptoAlgs::aead_usage_limit (const Type type)
 
Type openvpn::CryptoAlgs::legal_dc_cipher (const Type type)
 
Type openvpn::CryptoAlgs::legal_dc_digest (const Type type)
 
Type openvpn::CryptoAlgs::dc_cbc_cipher (const Type type)
 
Type openvpn::CryptoAlgs::dc_cbc_hash (const Type type)
 
void openvpn::CryptoAlgs::allow_dc_algs (const std::list< Type > types)
 
template<typename CRYPTO_API >
void openvpn::CryptoAlgs::allow_default_dc_algs (SSLLib::Ctx libctx, bool preferred=false, bool legacy=false)
 
bool openvpn::CryptoAlgs::use_cipher_digest (const Type type)
 

Variables

static constexpr uint64_t openvpn::CryptoAlgs::gcm_limit = (1ull << 36) - 1
 
std::array< Alg, Type::SIZEopenvpn::CryptoAlgs::algs