Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,13 @@ ED25519, ED448, MLDSA). RSA, ECC, Ed25519, Ed448 and ML-DSA are each
`WOLFCERT_ERR_UNSUPPORTED`), with two constraints: at least one key
algorithm must be present, and **SCEP requires RSA** (RFC 8894 is
RSA-only) so a `NO_RSA` wolfSSL hard-fails unless SCEP is disabled. SCEP
content encryption uses AES-128-CBC (the RFC 8894 `AES` capability); when
content encryption defaults to AES-128-CBC (the RFC 8894 `AES` capability); when
a legacy peer does not advertise `AES` the client falls back to
triple DES-CBC, which needs a wolfSSL built with 3DES support. A wolfSSL
built `NO_DES3` still interoperates with any AES-advertising peer, but the
client rejects a non-AES peer with `WOLFCERT_ERR_UNSUPPORTED`. TLS:
client rejects a non-AES peer with `WOLFCERT_ERR_UNSUPPORTED`. A caller can
override this per-connection via `WolfCertServerCfg.proto_opts.scep.content_cipher`
(e.g. force AES-256-CBC for a peer that requires it). TLS:
the HTTPS transport pins its floor to TLS 1.2, or TLS 1.3 when wolfSSL
is built `WOLFSSL_NO_TLS12`.

Expand Down Expand Up @@ -183,5 +185,8 @@ Minimal orientation:
MCU / CryptoCb integration guide (start here for non-trivial changes).
- `docs/EMBEDDED.md` - RAM-sizing knobs for constrained targets
(`Cert`/`CertName` shrinking, tunable HTTP stack buffers).
- `docs/MIGRATING-FROM-WOLFSCEP.md` - call mapping and behavioural
differences for an existing wolfSCEP integration, including which
messageType a renewal should carry.
- `wolfcert/*.h` - authoritative API reference (inline
comments document every field and function contract).
24 changes: 23 additions & 1 deletion Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,28 @@ endif
endif

TESTS = $(check_PROGRAMS)

# The CLI's protocol scoping and keyword validation, driven against the built
# binary rather than the library. Every case fails before any network access,
# so no server is involved. Kept at parity with the CTest registration in
# tests/CMakeLists.txt.
if WOLFCERT_BUILD_CLI
if WOLFCERT_HAVE_EST
if WOLFCERT_HAVE_SCEP
TESTS += tests/integration/cli_proto_scoping.sh
endif
endif
endif
endif

# TEST_EXTENSIONS and friends cannot live inside a conditional, so they sit at
# file scope even though only the CLI script above uses them. The script takes
# the binary under test from WOLFCERT_CLI, since the harness passes no
# arguments.
TEST_EXTENSIONS = .sh
SH_LOG_COMPILER = $(SHELL)
AM_TESTS_ENVIRONMENT = WOLFCERT_CLI=$(abs_builddir)/wolfcert-client; \
export WOLFCERT_CLI;

EXTRA_DIST = \
README.md \
Expand All @@ -207,4 +228,5 @@ EXTRA_DIST = \
cmake/wolfCertConfigVersion.cmake.in \
cmake/wolfCertTargets.cmake.in \
cmake/wolfcert.pc.in \
tests/integration/tls_test_util.h
tests/integration/tls_test_util.h \
tests/integration/cli_proto_scoping.sh
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,13 @@ Enroll a certificate from the CLI:
The CLI also covers TLS / mutual TLS (`--trust`, `--client-cert`,
`--client-key`), TLS 1.3 post-handshake auth (`--pha`), SCEP polling
(`--poll-attempts`, `--poll-interval-ms`), `getnextca`, and `/csrattrs`
key-policy pinning (`--csrattrs-auto`). Run `wolfcert-client --help` and
key-policy pinning (`--csrattrs-auto`). The SCEP-specific knobs are
`--ca-id` (select one CA on a multi-CA responder), `--txid-mode` (`random`
or `pubkey`, the RFC 8894 §3.2.1 public-key derivation) and
`--content-cipher` (`auto`, `aes128`, `aes256`, `des3` - force one for a
peer that requires it, since no GetCACaps keyword advertises AES-256).
Options that belong to one protocol are rejected under the other rather
than silently ignored. Run `wolfcert-client --help` and
`wolfcert-server --help` for the full set.

EST mandates authenticating the server (RFC 7030), so an EST enroll needs
Expand Down Expand Up @@ -183,6 +189,9 @@ caveats apply to SCEP and to some servers:
- [`docs/CI.md`](docs/CI.md) — the GitHub Actions pipeline, the shared
`scripts/ci/build-wolfssl.sh` helper, and how to reproduce a CI config
locally.
- [`docs/MIGRATING-FROM-WOLFSCEP.md`](docs/MIGRATING-FROM-WOLFSCEP.md) — moving an
existing wolfSCEP integration to wolfCert: call mapping, the behavioural
differences, and a worked enrollment.

## License

Expand Down
Loading
Loading