13#ifndef CRYPTO_DATA_EPOCH_H
14#define CRYPTO_DATA_EPOCH_H
70 const uint8_t *context,
83 openvpn::SSLLib::CryptoAPI::CipherContextAEAD
cipher;
88 void calculate_iv(uint8_t *packet_id, std::array<uint8_t, IV_SIZE> &iv_dest);
EpochDataChannelDecryptContext retiring_decrypt_ctx
void generate_encrypt_ctx()
bool should_renegotiate()
EpochDataChannelDecryptContext * lookup_decrypt_key(uint16_t epoch)
EpochDataChannelEncryptContext encrypt_ctx
EpochDataChannelDecryptContext decrypt_ctx
void replace_update_recv_key(std::uint16_t new_epoch, const SessionStats::Ptr &stats_arg)
DataChannelEpoch()=default
void check_send_iterate()
uint16_t future_keys_count
void generate_future_receive_keys()
EpochDataChannelEncryptContext & encrypt()
std::vector< EpochDataChannelDecryptContext > future_keys
uint16_t get_future_keys_count()
openvpn::CryptoAlgs::Type cipher
EpochDataChannelCryptoContext key_context(openvpn::SSLLib::Ctx libctx, openvpn::CryptoAlgs::Type cipher, int mode)
static constexpr int SECRET_SIZE
EpochKey(decltype(keydata) keydata, uint16_t epoch)
std::array< uint8_t, SECRET_SIZE > keydata
std::pair< StaticKey, StaticKey > data_key(openvpn::CryptoAlgs::Type cipher)
#define OPENVPN_EXCEPTION(C)
void ovpn_expand_label(const uint8_t *secret, size_t secret_len, const uint8_t *label, size_t label_len, const uint8_t *context, size_t context_len, uint8_t *out, size_t out_len)
void ovpn_hkdf_expand(const uint8_t *secret, const uint8_t *info, int info_len, uint8_t *out, int out_len)
void calculate_iv(uint8_t *packet_id, std::array< uint8_t, IV_SIZE > &iv_dest)
openvpn::SSLLib::CryptoAPI::CipherContextAEAD cipher
static constexpr int IV_SIZE
std::array< uint8_t, IV_SIZE > implicit_iv
openvpn::PacketIDDataReceive pid
openvpn::PacketIDDataSend pid
static std::stringstream out