52#ifndef QSC_TLS_LIMITS_H
53#define QSC_TLS_LIMITS_H
60QSC_CPLUSPLUS_ENABLED_START
72#define QSC_TLS_MAX_RECORD_SIZE 18432U
78#define QSC_TLS_STREAM_BUFFER_MAX_SIZE (QSC_TLS_MAX_RECORD_SIZE * 4U)
84#define QSC_TLS_MAX_PLAINTEXT_SIZE 16384U
90#define QSC_TLS_RECORD_MAX_PLAINTEXT_SIZE QSC_TLS_MAX_PLAINTEXT_SIZE
96#define QSC_TLS_RECORD_MAX_INNER_SIZE (QSC_TLS_MAX_PLAINTEXT_SIZE + QSC_TLS_INNER_CONTENT_TYPE_SIZE)
103#define QSC_TLS_MAX_GROUPS 16U
109#define QSC_TLS_MAX_SIGNATURE_SCHEMES 24U
115#define QSC_TLS_MAX_CIPHER_SUITES 16U
121#define QSC_TLS_MAX_HOSTNAME_SIZE 255U
127#define QSC_TLS_MAX_ALPN_SIZE 255U
133#define QSC_TLS_MAX_ALPN_PROTOCOLS 8U
139#define QSC_TLS_MAX_SERVER_IDENTITIES 4U
146#define QSC_TLS_CERTIFICATE_REQUEST_CONTEXT_MAX_SIZE 255U
152#define QSC_TLS_CERTIFICATE_LIST_MAX_ENTRIES 8U
158#define QSC_TLS_CERTIFICATE_MAX_SIZE 65535U
164#define QSC_TLS_HANDSHAKE_FINISHED_MAX_SIZE 64U
170#define QSC_TLS_MAX_PSK_IDENTITIES 4U
176#define QSC_TLS_TICKET_MAX_SIZE 1024U
182#define QSC_TLS_TICKET_NONCE_MAX_SIZE 255U
188#define QSC_TLS_PSK_BINDER_MAX_SIZE QSC_TLS_HASH_MAX_SIZE
195#define QSC_TLS_MAX_CLASSICAL_PUBLIC_KEY_SIZE 97U
201#define QSC_TLS_MAX_CLASSICAL_PRIVATE_KEY_SIZE 96U
207#define QSC_TLS_MAX_KEM_PUBLIC_KEY_SIZE QSC_KYBER_PUBLICKEY_SIZE
213#define QSC_TLS_MAX_KEM_PRIVATE_KEY_SIZE QSC_KYBER_PRIVATEKEY_SIZE
219#define QSC_TLS_MAX_KEM_CIPHERTEXT_SIZE QSC_KYBER_CIPHERTEXT_SIZE
225#define QSC_TLS_MAX_KEM_SHARED_SECRET_SIZE QSC_KYBER_SHAREDSECRET_SIZE
231#define QSC_TLS_MAX_HYBRID_CLIENT_KEYSHARE_SIZE (QSC_TLS_MAX_CLASSICAL_PUBLIC_KEY_SIZE + QSC_TLS_MAX_KEM_PUBLIC_KEY_SIZE)
237#define QSC_TLS_MAX_HYBRID_SERVER_KEYSHARE_SIZE (QSC_TLS_MAX_CLASSICAL_PUBLIC_KEY_SIZE + QSC_TLS_MAX_KEM_CIPHERTEXT_SIZE)
243#define QSC_TLS_MAX_PRIVATE_KEY_SIZE (QSC_TLS_MAX_CLASSICAL_PRIVATE_KEY_SIZE + QSC_TLS_MAX_KEM_PRIVATE_KEY_SIZE)
249#define QSC_TLS_MAX_SHARED_SECRET_SIZE (48U + QSC_TLS_MAX_KEM_SHARED_SECRET_SIZE)
255#define QSC_TLS_CERTIFICATE_VERIFY_MAX_SIGNATURE_SIZE QSC_DILITHIUM_SIGNATURE_SIZE
264#define QSC_TLS_MAX_SIGNING_PRIVATE_KEY_SIZE 4896U
270#define QSC_TLS_MAX_KEYSHARE_SIZE QSC_TLS_MAX_HYBRID_CLIENT_KEYSHARE_SIZE
276#define QSC_TLS_KEY_SHARE_MAX_SIZE QSC_TLS_MAX_KEYSHARE_SIZE
283#define QSC_TLS_MAX_EXTENSION_SIZE (64U + QSC_TLS_MAX_HYBRID_CLIENT_KEYSHARE_SIZE + (QSC_TLS_MAX_GROUPS * sizeof(uint16_t)) + (QSC_TLS_MAX_SIGNATURE_SCHEMES * sizeof(uint16_t)))
289#define QSC_TLS_SUPPORTED_VERSIONS_CLIENT_EXTENSION_SIZE 7U
295#define QSC_TLS_SUPPORTED_VERSIONS_SERVER_EXTENSION_SIZE 6U
301#define QSC_TLS_SUPPORTED_GROUPS_EXTENSION_MAX_SIZE (6U + (QSC_TLS_MAX_GROUPS * sizeof(uint16_t)))
307#define QSC_TLS_SIGNATURE_ALGORITHMS_EXTENSION_MAX_SIZE (6U + (QSC_TLS_MAX_SIGNATURE_SCHEMES * sizeof(uint16_t)))
313#define QSC_TLS_KEY_SHARE_CLIENT_EXTENSION_MAX_SIZE (8U + QSC_TLS_MAX_KEYSHARE_SIZE)
319#define QSC_TLS_KEY_SHARE_SERVER_EXTENSION_MAX_SIZE (8U + QSC_TLS_MAX_HYBRID_SERVER_KEYSHARE_SIZE)
325#define QSC_TLS_CLIENT_HELLO_EXTENSIONS_MAX_SIZE (QSC_TLS_SUPPORTED_VERSIONS_CLIENT_EXTENSION_SIZE + QSC_TLS_SUPPORTED_GROUPS_EXTENSION_MAX_SIZE + QSC_TLS_SIGNATURE_ALGORITHMS_EXTENSION_MAX_SIZE + QSC_TLS_KEY_SHARE_CLIENT_EXTENSION_MAX_SIZE)
331#define QSC_TLS_CLIENT_HELLO_BODY_MAX_SIZE (43U + QSC_TLS_CLIENT_HELLO_EXTENSIONS_MAX_SIZE)
337#define QSC_TLS_SERVER_HELLO_EXTENSIONS_MAX_SIZE (QSC_TLS_SUPPORTED_VERSIONS_SERVER_EXTENSION_SIZE + QSC_TLS_KEY_SHARE_SERVER_EXTENSION_MAX_SIZE)
343#define QSC_TLS_SERVER_HELLO_BODY_MAX_SIZE (72U + QSC_TLS_SERVER_HELLO_EXTENSIONS_MAX_SIZE)
350#define QSC_TLS_HKDF_LABEL_MAX_WIRE_SIZE (2U + 1U + (QSC_TLS_HKDF_LABEL_PREFIX_SIZE + QSC_TLS_LABEL_MAX_SIZE) + 1U + QSC_TLS_CONTEXT_MAX_SIZE)
360QSC_CPLUSPLUS_ENABLED_END
Contains the primary public API for the Dilithium asymmetric signature scheme implementation.
#define QSC_DILITHIUM_SIGNATURE_SIZE
The byte size of the signature array.
Definition dilithium.h:148
Contains the public API for the FIPS 203 implementation of the Kyber CCA-secure Key Encapsulation Mec...
Contains common definitions for the Quantum Secure Cryptographic (QSC) library.
Defines fixed TLS protocol constants and HKDF label constants.
#define QSC_TLS_MAX_CIPHER_SUITES
Maximum number of cipher suites tracked or advertised by the TLS layer.
Definition tlslimits.h:115
#define QSC_TLS_MAX_HYBRID_CLIENT_KEYSHARE_SIZE
Maximum hybrid client key-share size in bytes.
Definition tlslimits.h:231
#define QSC_TLS_CLIENT_HELLO_EXTENSIONS_MAX_SIZE
Maximum encoded ClientHello extension block size excluding the outer vector16 header.
Definition tlslimits.h:325
#define QSC_TLS_MAX_KEYSHARE_SIZE
Maximum encoded client key-share size in bytes.
Definition tlslimits.h:270
#define QSC_TLS_SERVER_HELLO_BODY_MAX_SIZE
Maximum encoded ServerHello body size for the current TLS scaffolding.
Definition tlslimits.h:343
#define QSC_TLS_CERTIFICATE_VERIFY_MAX_SIGNATURE_SIZE
Maximum CertificateVerify signature size in bytes across the registered signature schemes.
Definition tlslimits.h:255
#define QSC_TLS_MAX_PRIVATE_KEY_SIZE
Maximum stored private-key state across the current named groups.
Definition tlslimits.h:243
#define QSC_TLS_KEY_SHARE_CLIENT_EXTENSION_MAX_SIZE
Maximum encoded key_share extension size in bytes for ClientHello.
Definition tlslimits.h:313
#define QSC_TLS_MAX_KEM_PRIVATE_KEY_SIZE
Maximum KEM private-key size exposed by the TLS registry.
Definition tlslimits.h:213
#define QSC_TLS_CLIENT_HELLO_BODY_MAX_SIZE
Maximum encoded ClientHello body size for the current TLS scaffolding.
Definition tlslimits.h:331
#define QSC_TLS_KEY_SHARE_SERVER_EXTENSION_MAX_SIZE
Maximum encoded key_share extension size in bytes for ServerHello.
Definition tlslimits.h:319
#define QSC_TLS_MAX_EXTENSION_SIZE
Maximum size of an encoded extension block in bytes for the current ClientHello scaffolding.
Definition tlslimits.h:283
#define QSC_TLS_MAX_CLASSICAL_PRIVATE_KEY_SIZE
Maximum classical named-group private-key state size exposed by the TLS registry.
Definition tlslimits.h:201