Skip to content

Add nat20cli command line tool for nat20device.#104

Open
werwurm wants to merge 6 commits into
werwurm/linux_example_integration_testfrom
werwurm/linux_example_nat20cli
Open

Add nat20cli command line tool for nat20device.#104
werwurm wants to merge 6 commits into
werwurm/linux_example_integration_testfrom
werwurm/linux_example_nat20cli

Conversation

@werwurm
Copy link
Copy Markdown
Contributor

@werwurm werwurm commented May 12, 2026

This commandline tool provides a primitive interface to communicate with
a nat20 device.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 12, 2026

LCOV of commit bca940f during lcov-test-coverage-report #235

Summary coverage rate:
  lines......: 95.6% (3048 of 3188 lines)
  functions..: 99.1% (232 of 234 functions)
  branches...: 87.1% (1658 of 1904 branches)

Files changed coverage rate: n/a

@werwurm werwurm force-pushed the werwurm/linux_example_nat20cli branch 3 times, most recently from 54d8a0f to 0612f25 Compare May 14, 2026 13:44
@werwurm werwurm requested a review from Copilot May 16, 2026 14:40
@werwurm werwurm marked this pull request as ready for review May 16, 2026 14:43
@werwurm werwurm requested a review from a team as a code owner May 16, 2026 14:43
@werwurm werwurm requested review from smacdude and timhirsh May 16, 2026 14:43
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new nat20cli Linux userspace command-line tool that drives the nat20 DICE service through /dev/nat200, together with a parallel nat20test integration test suite and CI plumbing to run both in QEMU. The CLI exposes promote/cdi-cert/eca-cert/eca-ee-cert/eca-ee-sign operations and ships with a helper test script that uses OpenSSL to validate the produced chain; the integration test exhaustively verifies all key-type/format permutations across promote levels using libnat20 + OpenSSL primitives in test_helpers.c/h.

Changes:

  • New nat20cli tool (option parsing, request construction, response handling, hex helpers) plus shell test script and OpenSSL DICE OID config.
  • New nat20test integration test binary with COSE/X.509/signature verification helpers and a full multi-level promote chain test.
  • Buildroot packages (nat20cli, nat20test), defconfig wiring, envsetup additions, and a CI workflow extension that builds the rootfs and runs both suites under QEMU.

Reviewed changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
examples/linux/nat20cli/src/main.c New CLI program implementing all request types and hex parsing.
examples/linux/nat20cli/nat20cli_test.sh E2E test invoking the CLI and OpenSSL chain/signature verification.
examples/linux/nat20cli/nat20cli_qemu_init.sh PID 1 init wrapper to run the CLI test in QEMU.
examples/linux/nat20cli/openssl_dice.cnf Registers DICE OID names for openssl x509 -text.
examples/linux/nat20cli/CMakeLists.txt CMake build for the CLI binary and scripts.
examples/linux/nat20test/test/nat20_integration_test.c Parameterised integration test driving the DICE service.
examples/linux/nat20test/test/test_helpers.{c,h} OpenSSL/COSE/X.509 verification utilities used by the test.
examples/linux/nat20test/nat20test.sh / nat20_qemu_init.sh Test runner and QEMU init wrappers.
examples/linux/nat20test/CMakeLists.txt CMake build for the integration test.
examples/linux/br_external/package/nat20cli/{Config.in,nat20cli.mk} Buildroot package definition for the CLI.
examples/linux/br_external/package/nat20test/{Config.in,nat20test.mk} Buildroot package definition for the integration test.
examples/linux/br_external/Config.in / configs/qemu_br_defconfig Hooks new packages into the build.
examples/linux/br_external/utils/envsetup.sh Adds SRCDIR overrides and a run_cli_test helper.
.github/workflows/linux-kmod-build.yml Builds CLI/test packages and runs both QEMU test suites in CI.
.github/license-check/license-config.json Adds openssl_dice.cnf to exempted-formats list.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.


int parse_output_format(char const *str) {
if (strcmp(str, "x509") == 0) return n20_certificate_format_x509_e;
#ifdef N20_WITH_COSE
size_t pos = 0;
if ((len & 1) != 0) {
// Odd length, assume leading zero
*out_pos++ = nibble2bits(hex[0]);
" --certificate-format -f <x509|cose>\n"
" The format of the certificate to be issued.\n"
"\n"
"Options (cdi-cert):"
Comment on lines +186 to +190
if (strcmp(str, "sign") == 0) {
N20_OPEN_DICE_KEY_USAGE_SET_DIGITAL_SIGNATURE(key_usage);
} else if (strcmp(str, "cert-sign") == 0) {
N20_OPEN_DICE_KEY_USAGE_SET_KEY_CERT_SIGN(key_usage);
}
Comment thread examples/linux/nat20cli/nat20cli_qemu_init.sh Outdated
Comment thread examples/linux/nat20cli/CMakeLists.txt Outdated
" The output file to write the resulting certificate or "
"signature to.\n"
"\n"
"Options (*-cert commands):\n"
Comment thread examples/linux/br_external/package/nat20cli/Config.in
@werwurm werwurm requested a review from seidelrj May 16, 2026 14:43
Copy link
Copy Markdown
Member

@timhirsh timhirsh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving GH Actions changes 👍

@werwurm werwurm changed the base branch from werwurm/linux_example_libnat20 to werwurm/linux_example_integration_test May 18, 2026 15:03
werwurm and others added 2 commits May 18, 2026 08:12
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants