Skip to content

Releases: coinbase/cb-mpc

CB-MPC v0.2.1

Choose a tag to compare

@github-actions github-actions released this 31 Mar 20:49
99ecc49

Security & Bug Fixes

  • Harden Paillier validation: create_pub now validates the modulus (odd, >1, within bit_size) and returns error_t, preventing acceptance of malicious moduli from counterparties.
  • Enforce Paillier modulus size bounds in ECDSA 2PC keygen/refresh to prevent potential buffer overflows in constant-time decryption.
  • Fix use-after-free in buf_t: operator= and operator+= with an aliasing mem_t view would read zeroed/freed memory.
  • Fix out-of-bounds write in HD key derivation: resize derived_keys inside derive_keys() rather than relying on caller pre-allocation.
  • Fix const-correctness in secp256k1 point conversion to avoid undefined behavior from casting away const on Jacobian coordinates.

Other

  • Add vartime_scope_t to paillier_t::verify_cipher for correct side-channel annotation.
  • Add bits_t::ref_t copy assignment operator for correct value semantics.

CB-MPC v0.2.0

Choose a tag to compare

@github-actions github-actions released this 25 Mar 15:43
b2ff26f

Major Refactoring Release

This release introduces a significant architectural reorganization of the cb-mpc library, focused on establishing clear API boundaries and improving the developer experience. It also includes various bug fixes and hardening.

Highlights

New High-Level API Layers

The library now provides two distinct public API layers for consuming MPC protocols:

  • C++ API (include/cbmpc/api/) — High-level, type-safe C++ wrappers in the coinbase::api namespace covering all major protocols: ECDSA (2PC & MPC), EdDSA (2PC & MPC), Schnorr (2PC & MPC), HD keyset derivation, PVE (base PKE, batch, access-structure), and TDH2.
  • C API (include/cbmpc/c_api/) — ABI C bindings (cbmpc_* functions) designed for building wrappers in other languages such as Go, Rust, etc.

Bug Bounty Program

We have published a dedicated BUG_BOUNTY.md that clarifies the scope and severity guidelines for our HackerOne bug bounty program. See the BUG_BOUNTY.md for full details on what qualifies and how to report.

Two Install Modes

  • Public install (make install): Only installs the high-level API and core headers — recommended for most users.
  • Full install (make install-full): Also installs internal headers for users who need to modify protocols or build custom primitives.

We stress that all functions in the public API are safe, including validation of all externally received inputs. In contrast, not all lower-level APIs include all such validations.

Breaking Changes

Header include paths have changed. All public headers are now under <cbmpc/api/...>, <cbmpc/c_api/...>, or <cbmpc/core/...>. Internal headers use <cbmpc/internal/...>.

Go Demos Removed

The Go wrappers and demos (demos-go/) have been removed from this repository. They now live in a dedicated repository at coinbase/cb-mpc-go.

New Demos

  • demo-api/ — New API-level demos showcasing common use cases through the high-level C++ API:
  • demo-cpp/parallel_transport/ — New demo for parallel transport usage

CB-MPC v0.1.1

Choose a tag to compare

@github-actions github-actions released this 21 Jan 17:29
cb60753

This is a cumulative release including all changes since v0.1.0. The primary focus is security, featuring multiple fixes and hardening changes across crypto primitives, ZK proofs, and protocol-level validation. We recommend that all users upgrade to this version.

Security fixes & hardening

  • Side-channel resistance improvements:
    • Make key curve operations more consistently constant-time (including constant-time point operations and constant-time conditional selection/copy helpers).
    • Replace non-constant-time equality checks in core buffer/types with constant-time comparisons.
    • Enforce constant-time-capable curves for certain operations and reduce scalars mod q where required.
  • Correctness/security fixes in crypto primitives:
    • RSA-OAEP: correctly configure the MGF1 hash (previously could fall back to SHA-1 unintentionally).
    • AES-GCM: zeroize decrypted plaintext on authentication failure to avoid leaving sensitive data in memory.
    • Fix constant-time big-number comparison corner cases (e.g., negative values).
  • Memory-safety fixes:
    • Prevent an out-of-bounds read in PVE message handling by validating buffer sizes before slicing.
    • Prevent potential buffer/offset issues in serialization/conversion paths by adding bounds and overflow checks.
  • Stronger input validation across proofs and protocols:
    • Add range checks and curve point validation in ZK verifiers; add parameter validation for Fischlin-style proofs.
    • Fix vector hash encoding to include length/size prefixes; add unit test coverage.
    • Add batch size consistency checks across protocols (including ECDSA, Schnorr, and DKG).
    • Add additional validation for secret sharing indices/thresholds and broader protocol message validation.

Developer & integration improvements

  • Enable more flexible t-of-n operation participation by identifying parties via unique party names (indices become session-local rather than persistent).
  • Go/FFI refactor: move C memory allocation helpers into a dedicated FFI module and update CGO bindings accordingly.
  • Miscellaneous cleanup and robustness improvements (removal of unused code paths, additional assertions/checks).

Behavior / compatibility notes

  • Validation is stricter by design: malformed inputs that previously slipped through (or triggered asserts) may now return explicit errors earlier.
  • Paillier randomness generation now fails with an error when the sampled value is not coprime to N; callers should handle the error.
  • Go/CGO consumers who depended on internal headers/types may need minor include/import updates and a rebuild.

CB-MPC 0.1.0

Choose a tag to compare

@github-actions github-actions released this 26 Mar 13:30
dc7ce21

This is the initial public release of Coinbase Open Source MPC Library.

This release contains the following:

  • The complete source code for Coinbase Open Source MPC Library
  • Cryptographic code, specifications and theory documents for the MPC Library
  • External code review report from Cure53
  • For full details and instructions see README.md