Skip to contentQbit Wallet is live — add it to Chrome
← All releases
Libraries

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: 32 bytes
  • Secret key size: 64 bytes
  • Signature size: 3680 bytes

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 bitcoinpqc from Cargo package qbit-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/sphincsplus commit 7ec789ace6874d875f4bb84cb61b81155398167e.
  • 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.h and shake-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 --locked
  • cargo check --manifest-path fuzz/Cargo.toml --locked
  • cargo fmt -- --check
  • cargo audit --deny warnings
  • ruby scripts/check-workflow-action-pins.rb
  • scripts/check-source-inventory.sh
  • scripts/check-no-tracked-symlinks.sh
  • git diff --check