QSC Post Quantum Cryptographic Library 1.3.0.0 (C1)
A post quantum secure library written in Ansi C
Loading...
Searching...
No Matches
tlslimits.h File Reference

Fixed upper bounds used by the TLS implementation. More...

#include "qsccommon.h"
#include "tlsdefs.h"
#include "kyber.h"
#include "dilithium.h"

Go to the source code of this file.

Macros

#define QSC_TLS_MAX_RECORD_SIZE   18432U
 Maximum accepted TLS record size in bytes.
#define QSC_TLS_STREAM_BUFFER_MAX_SIZE   (QSC_TLS_MAX_RECORD_SIZE * 4U)
 Maximum buffered inbound TLS stream size in bytes.
#define QSC_TLS_MAX_PLAINTEXT_SIZE   16384U
 Maximum TLS plaintext fragment size in bytes.
#define QSC_TLS_RECORD_MAX_PLAINTEXT_SIZE   QSC_TLS_MAX_PLAINTEXT_SIZE
 Alias for the TLS plaintext maximum.
#define QSC_TLS_RECORD_MAX_INNER_SIZE   (QSC_TLS_MAX_PLAINTEXT_SIZE + QSC_TLS_INNER_CONTENT_TYPE_SIZE)
 Maximum TLSInnerPlaintext size including the content-type trailer.
#define QSC_TLS_MAX_GROUPS   16U
 Maximum number of supported groups tracked per peer.
#define QSC_TLS_MAX_SIGNATURE_SCHEMES   24U
 Maximum number of signature schemes tracked per peer.
#define QSC_TLS_MAX_CIPHER_SUITES   16U
 Maximum number of cipher suites tracked or advertised by the TLS layer.
#define QSC_TLS_MAX_HOSTNAME_SIZE   255U
 Maximum hostname length accepted by the TLS layer.
#define QSC_TLS_MAX_ALPN_SIZE   255U
 Maximum ALPN identifier length in bytes.
#define QSC_TLS_MAX_ALPN_PROTOCOLS   8U
 Maximum number of ALPN identifiers stored in a TLS endpoint policy.
#define QSC_TLS_MAX_SERVER_IDENTITIES   4U
 Maximum number of SNI-selectable certificate identities stored by a TLS server configuration.
#define QSC_TLS_CERTIFICATE_REQUEST_CONTEXT_MAX_SIZE   255U
 Maximum certificate request-context size.
#define QSC_TLS_CERTIFICATE_LIST_MAX_ENTRIES   8U
 Maximum number of certificates tracked in a chain.
#define QSC_TLS_CERTIFICATE_MAX_SIZE   65535U
 Maximum size of a single encoded certificate.
#define QSC_TLS_HANDSHAKE_FINISHED_MAX_SIZE   64U
 Maximum size of a Finished verify-data field.
#define QSC_TLS_MAX_PSK_IDENTITIES   4U
 Maximum number of PSK identities processed in a ClientHello.
#define QSC_TLS_TICKET_MAX_SIZE   1024U
 Maximum size of a serialized session ticket.
#define QSC_TLS_TICKET_NONCE_MAX_SIZE   255U
 Maximum ticket nonce size in bytes.
#define QSC_TLS_PSK_BINDER_MAX_SIZE   QSC_TLS_HASH_MAX_SIZE
 Maximum size of a PSK binder in bytes.
#define QSC_TLS_MAX_CLASSICAL_PUBLIC_KEY_SIZE   97U
 Maximum classical named-group public-key size exposed by the TLS registry.
#define QSC_TLS_MAX_CLASSICAL_PRIVATE_KEY_SIZE   96U
 Maximum classical named-group private-key state size exposed by the TLS registry.
#define QSC_TLS_MAX_KEM_PUBLIC_KEY_SIZE   QSC_KYBER_PUBLICKEY_SIZE
 Maximum KEM public-key size exposed by the TLS registry.
#define QSC_TLS_MAX_KEM_PRIVATE_KEY_SIZE   QSC_KYBER_PRIVATEKEY_SIZE
 Maximum KEM private-key size exposed by the TLS registry.
#define QSC_TLS_MAX_KEM_CIPHERTEXT_SIZE   QSC_KYBER_CIPHERTEXT_SIZE
 Maximum KEM ciphertext size exposed by the TLS registry.
#define QSC_TLS_MAX_KEM_SHARED_SECRET_SIZE   QSC_KYBER_SHAREDSECRET_SIZE
 Maximum KEM shared-secret size exposed by the TLS registry.
#define QSC_TLS_MAX_HYBRID_CLIENT_KEYSHARE_SIZE   (QSC_TLS_MAX_CLASSICAL_PUBLIC_KEY_SIZE + QSC_TLS_MAX_KEM_PUBLIC_KEY_SIZE)
 Maximum hybrid client key-share size in bytes.
#define QSC_TLS_MAX_HYBRID_SERVER_KEYSHARE_SIZE   (QSC_TLS_MAX_CLASSICAL_PUBLIC_KEY_SIZE + QSC_TLS_MAX_KEM_CIPHERTEXT_SIZE)
 Maximum hybrid server key-share size in bytes.
#define QSC_TLS_MAX_PRIVATE_KEY_SIZE   (QSC_TLS_MAX_CLASSICAL_PRIVATE_KEY_SIZE + QSC_TLS_MAX_KEM_PRIVATE_KEY_SIZE)
 Maximum stored private-key state across the current named groups.
#define QSC_TLS_MAX_SHARED_SECRET_SIZE   (48U + QSC_TLS_MAX_KEM_SHARED_SECRET_SIZE)
 Maximum combined shared-secret size across the current classical and hybrid groups.
#define QSC_TLS_CERTIFICATE_VERIFY_MAX_SIGNATURE_SIZE   QSC_DILITHIUM_SIGNATURE_SIZE
 Maximum CertificateVerify signature size in bytes across the registered signature schemes.
#define QSC_TLS_MAX_SIGNING_PRIVATE_KEY_SIZE   4896U
 Maximum private-key size in bytes across all supported CertificateVerify signature schemes. Sized to ML-DSA-87 (Dilithium level 5) at 4896 bytes, the largest supported scheme. Used to size the inline private-key storage in qsc_tls_local_certificate_config and qsc_x509w_tls_local_certificate.
#define QSC_TLS_MAX_KEYSHARE_SIZE   QSC_TLS_MAX_HYBRID_CLIENT_KEYSHARE_SIZE
 Maximum encoded client key-share size in bytes.
#define QSC_TLS_KEY_SHARE_MAX_SIZE   QSC_TLS_MAX_KEYSHARE_SIZE
 Alias for the maximum key-share size.
#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)))
 Maximum size of an encoded extension block in bytes for the current ClientHello scaffolding.
#define QSC_TLS_SUPPORTED_VERSIONS_CLIENT_EXTENSION_SIZE   7U
 Encoded supported_versions extension size in bytes for the current ClientHello.
#define QSC_TLS_SUPPORTED_VERSIONS_SERVER_EXTENSION_SIZE   6U
 Encoded supported_versions extension size in bytes for the current ServerHello.
#define QSC_TLS_SUPPORTED_GROUPS_EXTENSION_MAX_SIZE   (6U + (QSC_TLS_MAX_GROUPS * sizeof(uint16_t)))
 Maximum encoded supported_groups extension size in bytes.
#define QSC_TLS_SIGNATURE_ALGORITHMS_EXTENSION_MAX_SIZE   (6U + (QSC_TLS_MAX_SIGNATURE_SCHEMES * sizeof(uint16_t)))
 Maximum encoded signature_algorithms extension size in bytes.
#define QSC_TLS_KEY_SHARE_CLIENT_EXTENSION_MAX_SIZE   (8U + QSC_TLS_MAX_KEYSHARE_SIZE)
 Maximum encoded key_share extension size in bytes for ClientHello.
#define QSC_TLS_KEY_SHARE_SERVER_EXTENSION_MAX_SIZE   (8U + QSC_TLS_MAX_HYBRID_SERVER_KEYSHARE_SIZE)
 Maximum encoded key_share extension size in bytes for ServerHello.
#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)
 Maximum encoded ClientHello extension block size excluding the outer vector16 header.
#define QSC_TLS_CLIENT_HELLO_BODY_MAX_SIZE   (43U + QSC_TLS_CLIENT_HELLO_EXTENSIONS_MAX_SIZE)
 Maximum encoded ClientHello body size for the current TLS scaffolding.
#define QSC_TLS_SERVER_HELLO_EXTENSIONS_MAX_SIZE   (QSC_TLS_SUPPORTED_VERSIONS_SERVER_EXTENSION_SIZE + QSC_TLS_KEY_SHARE_SERVER_EXTENSION_MAX_SIZE)
 Maximum encoded ServerHello extension block size excluding the outer vector16 header.
#define QSC_TLS_SERVER_HELLO_BODY_MAX_SIZE   (72U + QSC_TLS_SERVER_HELLO_EXTENSIONS_MAX_SIZE)
 Maximum encoded ServerHello body size for the current TLS scaffolding.
#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)
 Maximum serialized HKDF label size.

Typedefs

typedef char qsc_tls_limit_assert_keyshare[(QSC_TLS_MAX_KEYSHARE_SIZE >=QSC_TLS_MAX_HYBRID_CLIENT_KEYSHARE_SIZE) ? 1 :-1]
typedef char qsc_tls_limit_assert_extension[(QSC_TLS_MAX_EXTENSION_SIZE >=QSC_TLS_CLIENT_HELLO_EXTENSIONS_MAX_SIZE) ? 1 :-1]
typedef char qsc_tls_limit_assert_client_hello[(QSC_TLS_CLIENT_HELLO_BODY_MAX_SIZE >=(43U+QSC_TLS_KEY_SHARE_CLIENT_EXTENSION_MAX_SIZE)) ? 1 :-1]
typedef char qsc_tls_limit_assert_server_hello[(QSC_TLS_SERVER_HELLO_BODY_MAX_SIZE >=(72U+QSC_TLS_KEY_SHARE_SERVER_EXTENSION_MAX_SIZE)) ? 1 :-1]
typedef char qsc_tls_limit_assert_private[(QSC_TLS_MAX_PRIVATE_KEY_SIZE >=(QSC_TLS_MAX_CLASSICAL_PRIVATE_KEY_SIZE+QSC_TLS_MAX_KEM_PRIVATE_KEY_SIZE)) ? 1 :-1]
typedef char qsc_tls_limit_assert_signature[(QSC_TLS_CERTIFICATE_VERIFY_MAX_SIGNATURE_SIZE >=QSC_DILITHIUM_SIGNATURE_SIZE) ? 1 :-1]
typedef char qsc_tls_limit_assert_ciphersuites[(QSC_TLS_MAX_CIPHER_SUITES >=3U) ? 1 :-1]

Detailed Description

Fixed upper bounds used by the TLS implementation.