seleniumbase_rs_codec::ids names the TLS and HTTP/2 values a browser
fingerprint is built from, and seeds what BoringSSL can emit in a client hello.
Each registry is a Registry: a static table of (id, IANA name) rows, looked up
in both directions. The BORINGSSL_* slices list the ids BoringSSL can emit; the
*_CIPHERS, REFUSED_EXTENSIONS, UNSUPPORTED_GROUPS and ML_DSA_SIGALGS
constants list the ids the spec refuses before a client exists. The numbers come
from the vendored BoringSSL headers of btls-sys 0.5.6, cross-checked against
rustls 0.23.45 and http2 0.5.20; the wire probe of the mimic crate decides what
the wire really carries.
Registry#
struct
A registry of wire ids, each with its IANA name. new wraps a static table in
which each id and each name appears once (a test checks it); rows is the table
in order; name and id look up in either direction (id matches the name
exactly); contains says whether the id is listed.
Registries#
constEach holds the rows the module names, sorted by id: for example
0x1301 TLS_AES_128_GCM_SHA256, 0xCA34 trust_anchors, 0x11EC X25519MLKEM768,
0x0904 ml_dsa_44, 0x0304 TLS 1.3, 0x0004 INITIAL_WINDOW_SIZE.
is_grease, is_alpn#
fn
Whether id is a GREASE value (RFC 8701: both bytes equal, low nibble 0xA), and
whether name is one of ALPN_PROTOCOLS.
Constants#
constThe TLS 1.2 legacy_version a JA3 version field carries (771); the uncompressed
EC point format, the only one BoringSSL emits; the ALPN ids this module names; and
the HTTP/2 SETTINGS ids a measured spec may carry (any other is refused).
What BoringSSL can emit#
constBORINGSSL_CIPHERS: the suites the spec layer lets through, each checked by the wire probe oftests/impersonate_wire.rs. The TLS 1.2 DHE suites reach the wire too but are kept out by policy; PSK, CCM, RC4, NULL, export, anonymous and signalling suites do not reach the wire.TLS13_CIPHERS: a spec may reorder them but never drop one.BORINGSSL_CLIENT_EXTENSIONS: one perTlsOptionsknob; padding (21) only where BoringSSL’s length rule places it.BORINGSSL_ALWAYS_SENT_EXTENSIONS:supported_groupsandsignature_algorithmsare in every hello; a spec without them describes a hello no client can send.BORINGSSL_LEGACY_ONLY_EXTENSIONS: sent exactly when the lowest offered version is below TLS 1.3.BORINGSSL_TLS13_ONLY_EXTENSIONS: sent exactly when TLS 1.3 is offered.BORINGSSL_GROUPSandBORINGSSL_KEY_SHARE_GROUPS: the FFDHE groups can be offered but have no key share.BORINGSSL_SIGALGS: the internal MD5-SHA1 code0xFF01never reaches the wire and is not listed.
What the spec refuses#
constThe TLS 1.2 DHE suites (a policy, not a limit: the probe shows BoringSSL writes
them), the TLS 1.3 CCM suites, the signalling suites (BoringSSL replaces them with
0xFF01), the refused extensions with their reasons, the groups BoringSSL does not
name (x448, brainpool, secp256k1, the larger FFDHE groups, ML-KEM 512 and 768 and
the P-256 hybrid), and the ML-DSA signature schemes.