Skip to content

chore(tropic01-driver): prepare the crate for a beta crates.io release#13

Merged
0xEthamin merged 1 commit into
mainfrom
feat/tropic01-driver-publish-prep
Jun 17, 2026
Merged

chore(tropic01-driver): prepare the crate for a beta crates.io release#13
0xEthamin merged 1 commit into
mainfrom
feat/tropic01-driver-publish-prep

Conversation

@0xEthamin

Copy link
Copy Markdown
Member

Make the driver ready for a first beta publication as version 0.0.1. The focus is documentation examples, with a feature gate, the publish metadata, and the README brought to a publishable state around them.

Four runnable doc examples are added, all marked no_run because they cannot reach real hardware. A crate-level example opens a secure channel and runs one command, and there are per-item examples on open_session, on the random_into trait method, and on the bootloader update flow. Each builds a stub SpiDevice and SeWait behind hidden setup lines, so the visible code stays focused on the real API. The examples carry placeholder keys with a comment that real key material comes from a TRNG and from provisioning, and they point at read_verified_chip_stpub for a genuine-chip trust decision rather than the unverified read_chip_stpub. The read_chip_stpub documentation itself is hardened to say plainly that it does not attest authenticity.

The X.509 chain verification moves behind an attestation feature that stays on by default. It pulls the ecdsa, p384, and p521 curve crates, which are release candidates today, so a consumer that only needs STPUB extraction can drop them with default-features = false and keep a release-candidate-free build. The feature gates verify_cert_chain, parse_verified_stpub, RootAnchor, read_verified_chip_stpub, the ChainError type and its SeError variant, the curve verify helpers, the chain-only DER navigators, the chain tests, and the fuzz seam. parse_stpub stays always available. A build without the feature no longer compiles the curve crates into the tree.

The publish metadata is completed. The workspace version drops to 0.0.1 and declares a 1.88 minimum supported Rust, which the let-chain and is_multiple_of uses require. The invalid documentation field is removed so crates.io points at docs.rs by default, and a docs.rs metadata block renders the attestation API. The README gains a beta banner, a quick-start that mirrors the crate example, a note on the release-candidate curve crates, and an updated roadmap. The keyword list drops to the five crates.io allows.

cargo publish --dry-run packages and verifies the crate standalone. 407 host tests pass with the feature on and 385 with it off, the four doc examples compile, clippy is clean on host all targets, all features, no default features, the fuzz seam, and thumbv8m, cargo doc is warning free, hermetic coverage holds at 93 percent, and the six fuzz targets stay crash free. The build is confirmed on Rust 1.88.

Make the driver ready for a first beta publication as version 0.0.1. The focus is
documentation examples, with a feature gate, the publish metadata, and the README
brought to a publishable state around them.

Four runnable doc examples are added, all marked no_run because they cannot reach
real hardware. A crate-level example opens a secure channel and runs one command,
and there are per-item examples on open_session, on the random_into trait method,
and on the bootloader update flow. Each builds a stub SpiDevice and SeWait behind
hidden setup lines, so the visible code stays focused on the real API. The examples
carry placeholder keys with a comment that real key material comes from a TRNG and
from provisioning, and they point at read_verified_chip_stpub for a genuine-chip
trust decision rather than the unverified read_chip_stpub. The read_chip_stpub
documentation itself is hardened to say plainly that it does not attest authenticity.

The X.509 chain verification moves behind an attestation feature that stays on by
default. It pulls the ecdsa, p384, and p521 curve crates, which are release
candidates today, so a consumer that only needs STPUB extraction can drop them with
default-features = false and keep a release-candidate-free build. The feature gates
verify_cert_chain, parse_verified_stpub, RootAnchor, read_verified_chip_stpub, the
ChainError type and its SeError variant, the curve verify helpers, the chain-only
DER navigators, the chain tests, and the fuzz seam. parse_stpub stays always
available. A build without the feature no longer compiles the curve crates into the
tree.

The publish metadata is completed. The workspace version drops to 0.0.1 and declares
a 1.88 minimum supported Rust, which the let-chain and is_multiple_of uses require.
The invalid documentation field is removed so crates.io points at docs.rs by default,
and a docs.rs metadata block renders the attestation API. The README gains a beta
banner, a quick-start that mirrors the crate example, a note on the release-candidate
curve crates, and an updated roadmap. The keyword list drops to the five crates.io
allows.

cargo publish --dry-run packages and verifies the crate standalone. 407 host tests
pass with the feature on and 385 with it off, the four doc examples compile, clippy
is clean on host all targets, all features, no default features, the fuzz seam, and
thumbv8m, cargo doc is warning free, hermetic coverage holds at 93 percent, and the
six fuzz targets stay crash free. The build is confirmed on Rust 1.88.
@0xEthamin 0xEthamin merged commit e1a8be1 into main Jun 17, 2026
16 checks passed
@0xEthamin 0xEthamin deleted the feat/tropic01-driver-publish-prep branch June 17, 2026 16:17
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.

1 participant