qbit-libbitcoinpqc v0.3.0
Release notes
Initial public Qbit release of qbit-libbitcoinpqc.
This release preserves the upstream pre-fork libbitcoinpqc history through baseline commit 09cdb3e2426c5367ced613751ddcbc8c6f9fbcf2, then squashes Qbit-specific development into a single release commit.
Highlights
- Renames the Cargo package to
qbit-libbitcoinpqc. - Keeps the exported Rust crate name as
bitcoinpqc. - Keeps the C library target, headers, and
bitcoin_pqc_*ABI namespace unchanged. - Sets the core library version to
0.3.0. - Narrows the public release surface to the Qbit-supported C and Rust APIs.
- Removes non-production bindings and unused crypto payload from the public release tree.
Supported Profile
This release supports the Qbit bounded SLH-DSA profile only:
SLH-DSA-SHA2-128s-bounded30- Public key size:
32bytes - Secret key size:
64bytes - Signature size:
3680bytes
The public API is intentionally single-profile and does not expose algorithm selection.
Production Surface
Supported release surfaces:
- Native C API headers under
include/libbitcoinpqc/ - CMake target
bitcoinpqc - Rust crate
bitcoinpqcfrom Cargo packageqbit-libbitcoinpqc
Python and Node.js bindings are not part of this public production release.
Security And Signing Posture
This release includes hardening around malformed input rejection, fail-closed signing behavior, secret-key validation, secret cleanup, fuzz/sanitizer evidence, and deterministic verification behavior.
Signing remains deterministic and is not a side-channel-hardening guarantee. Production signing should be limited to trusted local wallet processes, dedicated signing hosts, or comparably isolated key-custody environments.
Supply Chain Notes
- GitHub Actions external action refs are SHA-pinned.
- Rust advisory audit passes with
cargo audit --deny warnings. - Vendored SPHINCS+ source is based on upstream
sphincs/sphincspluscommit7ec789ace6874d875f4bb84cb61b81155398167e. - The initial vendored SPHINCS+ snapshot differs from that upstream commit by one local entropy adapter,
ref/randombytes_custom.c, and by omitting two upstream test-only headers:ref/test/cycles.handshake-a64/test/cycles.h. - Current Qbit sources then apply the documented bounded-profile, hardening, and public release-surface changes.
Validation
Release-prep validation included:
cargo check --lockedcargo check --manifest-path fuzz/Cargo.toml --lockedcargo fmt -- --checkcargo audit --deny warningsruby scripts/check-workflow-action-pins.rbscripts/check-source-inventory.shscripts/check-no-tracked-symlinks.shgit diff --check