Architecture
The workspace separates cryptographic primitives, certificate handling, transport I/O, and protocol logic into focused crates—so devices can ship only the layers they need (for example crypto-only attestation tooling without pulling the full TLS state machine).
Device view
- Edge device (MCU) — Typically
noxtls+noxtls-io(embedded adapter) + minimalnoxtls-x509trust material; optionalprovider-psafor secure element offload. - Gateway (host) —
noxtlswithstdand oftenadapter-tokio; may also terminate DTLS toward radios. - Crypto service —
noxtls-cryptoalone or withnoxtls-pem/noxtls-x509for parsing without live TLS sessions.
Dependency direction
noxtls-coreis the foundational crate and should remain dependency-light.noxtls-crypto(hash, symmetric, PKC, DRBG) depends onnoxtls-core.noxtls-pemdepends onnoxtls-core.noxtls-x509composesnoxtls-core,noxtls-crypto, andnoxtls-pem.noxtls-iodepends onnoxtls-core(transport adapters).noxtlscomposesnoxtls-core,noxtls-crypto,noxtls-x509,noxtls-io, andnoxtls-platform.noxtls-testsits at the top of the graph.
Workspace structure
Rust packages are under noxtls/crates/ (workspace members are noxtls/crates/* from the repository root):
noxtls-core/noxtls-crypto/noxtls-pem/noxtls-x509/noxtls-io/noxtls-platform/noxtls/noxtls-test/
Configuration model
noxtls-core includes a configuration layer for mbedTLS-style #define policy files:
- template:
noxtls_config.h - parser API:
LibraryConfig::from_mbedtls_style_file(...)
The model lets consumers tune features and security policy at build/config time while keeping crate boundaries clear.