52#ifndef QSC_TLS_ENGINE_H
53#define QSC_TLS_ENGINE_H
64QSC_CPLUSPLUS_ENABLED_START
234 uint8_t* output,
size_t outlen,
size_t* written);
258 uint8_t* output,
size_t outlen,
size_t* written, uint8_t* responseoutput,
size_t responseoutlen,
size_t* responsewritten);
348QSC_CPLUSPLUS_ENABLED_END
Contains common definitions for the Quantum Secure Cryptographic (QSC) library.
#define QSC_EXPORT_API
API export macro for Microsoft compilers when importing from a DLL.
Definition qsccommon.h:645
Stores the static client policy used to initialize a TLS client state.
Definition tlsclient.h:120
Stores the active TLS 1.3 client handshake and record state.
Definition tlsclient.h:139
Unified TLS engine connection context.
Definition tlsengine.h:120
uint8_t applicationbuffer[QSC_TLS_MAX_RECORD_SIZE]
Definition tlsengine.h:130
qsc_tls_role role
Definition tlsengine.h:127
uint8_t handshakebuffer[QSC_TLS_STREAM_BUFFER_MAX_SIZE]
Definition tlsengine.h:128
qsc_tls_server_state server
Definition tlsengine.h:124
size_t handshakebufferlen
Definition tlsengine.h:129
qsc_tls_client_state client
Definition tlsengine.h:123
size_t applicationbufferlen
Definition tlsengine.h:131
Immutable server configuration.
Definition tlsserver.h:73
Server handshake state container.
Definition tlsserver.h:101
Definition tlssession.h:85
TLS 1.3 client handshake state machine declarations.
QSC_EXPORT_API void qsc_tls_engine_dispose(qsc_tls_connection *connection)
Dispose of a TLS engine connection.
Definition tlsengine.c:112
QSC_EXPORT_API qsc_tls_status qsc_tls_engine_read_application_data(qsc_tls_connection *connection, const uint8_t *input, size_t inlen, size_t *consumed, uint8_t *output, size_t outlen, size_t *written)
Decrypt inbound application records.
Definition tlsengine.c:219
QSC_EXPORT_API qsc_tls_status qsc_tls_engine_write_application_data(qsc_tls_connection *connection, const uint8_t *input, size_t inlen, uint8_t *output, size_t outlen, size_t *written)
Encrypt and frame application data.
Definition tlsengine.c:176
QSC_EXPORT_API qsc_tls_status qsc_tls_engine_emit_session_ticket(qsc_tls_connection *connection, uint32_t lifetime_seconds, uint8_t *output, size_t outlen, size_t *written, qsc_tls_session_ticket *ticketout)
Emit a TLS 1.3 NewSessionTicket record.
Definition tlsengine.c:498
QSC_EXPORT_API qsc_tls_status qsc_tls_engine_consume_session_ticket(qsc_tls_connection *connection, const uint8_t *input, size_t inlen, size_t *consumed, qsc_tls_session_ticket *ticketout)
Consume a TLS 1.3 NewSessionTicket record.
Definition tlsengine.c:615
QSC_EXPORT_API bool qsc_tls_engine_is_handshake_complete(const qsc_tls_connection *connection)
Test whether the TLS handshake is complete.
Definition tlsengine.c:769
QSC_EXPORT_API qsc_tls_status qsc_tls_engine_handshake(qsc_tls_connection *connection, const uint8_t *input, size_t inlen, size_t *consumed, uint8_t *output, size_t outlen, size_t *written)
Advance the TLS handshake state machine.
Definition tlsengine.c:131
QSC_EXPORT_API qsc_tls_status qsc_tls_engine_read_application_data_ex(qsc_tls_connection *connection, const uint8_t *input, size_t inlen, size_t *consumed, uint8_t *output, size_t outlen, size_t *written, uint8_t *responseoutput, size_t responseoutlen, size_t *responsewritten)
Decrypt inbound records and process post-handshake messages.
Definition tlsengine.c:225
QSC_EXPORT_API qsc_tls_status qsc_tls_engine_request_key_update(qsc_tls_connection *connection, bool requestpeerupdate, uint8_t *output, size_t outlen, size_t *written)
Initiate a TLS 1.3 KeyUpdate operation.
Definition tlsengine.c:395
QSC_EXPORT_API qsc_tls_status qsc_tls_engine_initialize_client(qsc_tls_connection *connection, const qsc_tls_client_config *config)
Initialize a TLS engine connection as a client.
Definition tlsengine.c:70
qsc_tls_role
TLS engine endpoint role.
Definition tlsengine.h:100
@ qsc_tls_role_client
Definition tlsengine.h:101
@ qsc_tls_role_server
Definition tlsengine.h:102
QSC_EXPORT_API qsc_tls_status qsc_tls_engine_close(qsc_tls_connection *connection, uint8_t *output, size_t outlen, size_t *written)
Build an encrypted close_notify alert record.
Definition tlsengine.c:730
QSC_EXPORT_API qsc_tls_status qsc_tls_engine_initialize_server(qsc_tls_connection *connection, const qsc_tls_server_config *config)
Initialize a TLS engine connection as a server.
Definition tlsengine.c:91
TLS status code definitions and diagnostic string conversion.
qsc_tls_status
Definition tlserrors.h:65
Fixed upper bounds used by the TLS implementation.
#define QSC_TLS_STREAM_BUFFER_MAX_SIZE
Maximum buffered inbound TLS stream size in bytes.
Definition tlslimits.h:78
#define QSC_TLS_MAX_RECORD_SIZE
Maximum accepted TLS record size in bytes.
Definition tlslimits.h:72
TLS 1.3 server handshake state machine.
TLS 1.3 session resumption ticket handling.
TLS internal state container type definitions shared across the record and handshake layers.
Public TLS type definitions.