22#if defined(HITLS_TLS_PROTO_DTLS12) && defined(HITLS_BSL_UIO_UDP)
23#include "rec_anti_replay.h"
30#define REC_MAX_MAC_KEY_LEN 64
31#define REC_MAX_KEY_LENGTH 64
32#define REC_MAX_IV_LENGTH 16
33#define REC_MAX_KEY_BLOCK_LEN (REC_MAX_MAC_KEY_LEN * 2 + REC_MAX_KEY_LENGTH * 2 + REC_MAX_IV_LENGTH * 2)
34#define MAX_SHA1_SIZE 20
35#define MAX_MD5_SIZE 16
37#define REC_CONN_SEQ_SIZE 8u
45 HITLS_CipherAlgo cipherAlg;
46 HITLS_CipherType cipherType;
47 HITLS_Cipher_Ctx *ctx;
48 HITLS_HMAC_Ctx *macCtx;
50 uint8_t macKey[REC_MAX_MAC_KEY_LEN];
51 uint8_t key[REC_MAX_KEY_LENGTH];
52 uint8_t iv[REC_MAX_IV_LENGTH];
58 uint8_t fixedIvLength;
62 uint8_t recordIvLength;
73#if defined(HITLS_TLS_PROTO_DTLS12) && defined(HITLS_BSL_UIO_UDP)
82#ifdef HITLS_TLS_FEATURE_ETM
83 bool isEncryptThenMac;
88 uint16_t negotiatedVersion;
90 uint8_t seq[REC_CONN_SEQ_SIZE];
123void RecConnSetSeqNum(
RecConnState *state, uint64_t seq);
125#ifdef HITLS_TLS_PROTO_DTLS12
145void RecConnSetEpoch(
RecConnState *state, uint16_t epoch);
177int32_t RecConnEncrypt(TLS_Ctx *ctx,
193int32_t RecConnDecrypt(TLS_Ctx *ctx,
RecConnState *state,
194 const REC_TextInput *cryptMsg, uint8_t *data, uint32_t *dataLen);
209int32_t RecConnKeyBlockGen(HITLS_Lib_Ctx *libCtx,
const char *attrName,
225int32_t RecTLS13ConnKeyBlockGen(HITLS_Lib_Ctx *libCtx,
const char *attrName,
240 const uint8_t *text, uint32_t textLen);
254int32_t RecConnGenerateMac(HITLS_Lib_Ctx *libCtx,
const char *attrName,
256 uint8_t *mac, uint32_t *macLen);
268void RecConnInitGenerateMacInput(
const REC_TextInput *in,
const uint8_t *text, uint32_t textLen,
271#ifdef HITLS_TLS_SUITE_CIPHER_CBC
272uint32_t RecGetHashAlgoFromMacAlgo(HITLS_MacAlgo macAlgo);