37 const unsigned int key_id_arg,
84 OPENVPN_THROW(korekey_error,
"cipher alg " << calg.
name() <<
" is not currently supported by kovpn");
98 OPENVPN_THROW(korekey_error,
"HMAC alg " << halg.
name() <<
" is not currently supported by kovpn");
110 if (sk.
size() < size_required)
111 OPENVPN_THROW(korekey_error, title <<
": insufficient key material, provided=" << sk.
size() <<
" required=" << size_required);
119 const unsigned char *k =
verify_key(title, src, NONCE_TAIL_SIZE);
120 if (dest_size < NONCE_TAIL_SIZE)
122 std::memcpy(dest, k, NONCE_TAIL_SIZE);
125 if (dest_size > NONCE_TAIL_SIZE)
126 std::memset(dest + NONCE_TAIL_SIZE, 0, dest_size - NONCE_TAIL_SIZE);
132#include <openvpn/kovpn/kovpnkocrypto.hpp>
133#elif defined(ENABLE_OVPNDCO) || defined(ENABLE_OVPNDCOWIN)
136#error either ENABLE_KOVPN, ENABLE_OVPNDCO or ENABLE_OVPNDCOWIN must be defined
const char * name() const
const unsigned char * verify_key(const char *title, const StaticKey &sk, const size_t size_required)
static void validate(const CryptoAlgs::Type cipher, const CryptoAlgs::Type digest)
void set_nonce_tail(const char *title, unsigned char *dest, const size_t dest_size, const StaticKey &src)
Key & operator=(const Key &)=delete
const unsigned char * data() const
#define OPENVPN_EXCEPTION(C)
#define OPENVPN_THROW(exc, stuff)
const Alg & get(const Type type)
CryptoDCContext::Ptr dc_context_delegate
Info(const CryptoDCContext::Ptr &dc_context_delegate_arg, const unsigned int key_id_arg, const Frame::Ptr &frame_arg)