52#ifndef QSC_TLS_RECORD_H
53#define QSC_TLS_RECORD_H
59QSC_CPLUSPLUS_ENABLED_START
76 size_t keylen,
const uint8_t* iv,
size_t ivlen);
104 size_t keylen,
const uint8_t* iv,
size_t ivlen);
128 const uint8_t* input,
size_t inlen);
142 const uint8_t** payload,
size_t* payloadlen);
188QSC_CPLUSPLUS_ENABLED_END
#define QSC_EXPORT_API
API export macro for Microsoft compilers when importing from a DLL.
Definition qsccommon.h:645
Stores the active TLS traffic keying material and sequence number for one record direction.
Definition tlsstate.h:88
TLS status code definitions and diagnostic string conversion.
qsc_tls_status
Definition tlserrors.h:65
QSC_EXPORT_API qsc_tls_status qsc_tls_record_state_install_keys(qsc_tls_record_state *state, qsc_tls_cipher_suite suite, const uint8_t *key, size_t keylen, const uint8_t *iv, size_t ivlen)
Install or replace traffic keys on an existing record state, resetting the sequence.
Definition tlsrecord.c:217
QSC_EXPORT_API qsc_tls_status qsc_tls_record_decode_plaintext(const uint8_t *input, size_t inlen, qsc_tls_record_content_type *type, const uint8_t **payload, size_t *payloadlen)
Decode a plaintext TLS record.
Definition tlsrecord.c:312
QSC_EXPORT_API qsc_tls_status qsc_tls_record_decrypt(qsc_tls_record_state *state, uint8_t *output, size_t outlen, size_t *written, qsc_tls_record_content_type *inner_type, const uint8_t *input, size_t inlen)
Decrypt a protected TLSCiphertext record.
Definition tlsrecord.c:623
QSC_EXPORT_API qsc_tls_status qsc_tls_record_try_get_span_length(const uint8_t *input, size_t inlen, size_t *recordlen, bool *complete)
Determine the full span length of a TLS record.
Definition tlsrecord.c:395
QSC_EXPORT_API uint64_t qsc_tls_record_state_get_sequence(const qsc_tls_record_state *state)
Read the current sequence number. Returns 0 when state is NULL or uninitialized.
Definition tlsrecord.c:260
QSC_EXPORT_API qsc_tls_status qsc_tls_record_encode_plaintext(uint8_t *output, size_t outlen, size_t *written, qsc_tls_record_content_type type, const uint8_t *input, size_t inlen)
Encode a plaintext TLS record.
Definition tlsrecord.c:276
QSC_EXPORT_API qsc_tls_status qsc_tls_record_encrypt(qsc_tls_record_state *state, uint8_t *output, size_t outlen, size_t *written, qsc_tls_record_content_type inner_type, const uint8_t *input, size_t inlen)
Protect a TLSInnerPlaintext payload as a TLSCiphertext record.
Definition tlsrecord.c:445
QSC_EXPORT_API void qsc_tls_record_state_dispose(qsc_tls_record_state *state)
Dispose of a TLS record protection state.
Definition tlsrecord.c:207
QSC_EXPORT_API void qsc_tls_record_state_initialize(qsc_tls_record_state *state, qsc_tls_cipher_suite suite, const uint8_t *key, size_t keylen, const uint8_t *iv, size_t ivlen)
Initialize a TLS record protection state.
Definition tlsrecord.c:181
TLS internal state container type definitions shared across the record and handshake layers.
Public TLS type definitions.
qsc_tls_cipher_suite
TLS 1.3 cipher-suite identifiers.
Definition tlstypes.h:129
qsc_tls_record_content_type
TLS record content-type codes.
Definition tlstypes.h:81