Announcing wolfCOSE v2.0.0

We are excited to announce wolfCOSE 2.0.0, a major update to wolfSSL’s complete, zero-allocation C implementation of CBOR (RFC 8949) and COSE (RFC 9052) built on wolfCrypt. This release adds standardized HSS/LMS stateful hash-based signatures, RFC 9338 countersignatures, RFC 9783 PSA/EAT attestation, RFC 9864 fully specified signature algorithms, delegated signing, and experimental COSE-HPKE, while preserving the small and deterministic memory profile required by embedded systems.

Feature 1: HSS/LMS Stateful Hash-Based Signatures

v1.0.0 shipped ML-DSA (FIPS 204 / RFC 9964) at all three security levels. v2.0.0 adds the second NIST-standardized post-quantum family, HSS/LMS, using the COSE representation from RFC 8778. It works with COSE_Sign1, multi-signer COSE_Sign, delegated signing, and lean sign-only or verify-only profiles.`

Feature 2: PSA/EAT Attestation and Delegated Signing

v2.0.0 adds RFC 9783 PSA/EAT attestation token issuance and verification in both COSE_Sign1 and COSE_Mac0 envelopes, with UEID-selected key resolution, software-component iteration, current and legacy profiles, and compile-time gates so a device that only issues tokens does not link the verifier.

Attestation keys rarely leave the hardware that owns them, so delegated signing lets an HSM, secure element, PSA Crypto service, or remote KMS produce the signature while wolfCOSE builds and parses the message. The private key never enters wolfCOSE, and the same path covers COSE_Sign1, COSE_Sign, ML-DSA, and HSS/LMS.

Feature 3: RFC 9338 Countersignatures

v2.0.0 adds full and abbreviated RFC 9338 countersignatures across all six tagged message types. A second party can endorse an existing message in place and have it verified independently, which is what approval chains, audit evidence, and multi-party authorization need, without rebuilding the original COSE message.

Default Algorithm Identifiers Now RFC 9864

RFC 9864 replaces the polymorphic RFC 9053 signature identifiers with fully specified algorithms that bind the algorithm to its intended curve. wolfCOSE 2.0.0 uses ESP256, ESP384, ESP512, Ed25519, and Ed448 by default.

Behavior change: the deprecated ES256, ES384, ES512, and EdDSA identifiers require WOLFCOSE_ENABLE_DEPRECATED_ALGS. Since the protected algorithm identifier is covered by the signature, an existing message cannot be relabeled; it must be re-signed.

Experimental COSE-HPKE

v2.0.0 includes experimental COSE-HPKE P0 support for COSE_Encrypt0 and multi-recipient COSE_Encrypt, with command-line support and automated tests. It requires both WOLFCOSE_EXPERIMENTAL and the selected HPKE operation gates, keeping draft protocol behavior out of production builds unless an application asks for it.

Other v2.0.0 Release Improvements

  • COSE_Key and CBOR API expansion: exact encoded-size queries, public-only key encoding, raw ECC coordinate support, metadata inspection before key import, safer context initialization, and zero-copy capture of skipped CBOR items.
  • STM32 integration: the I-CUBE-wolfCOSE pack gives drop-in STM32CubeMX and STM32CubeIDE integration with an on-device test.
  • MISRA C:2012 and C:2023 checked, with release qualification covering C and C++ compilation, Valgrind, merged coverage, and reproducible source archives.
  • Expanded CI: cppcheck, Clang analyzer, GCC -fanalyzer, and Coverity; CodeQL and Semgrep; ASan and UBSan; plus interoperability testing against t_cose/QCBOR, go-cose, python-cwt, Rust coset, OpenSSL, and RFC vectors.
  • FIPS 140-3 path through wolfCrypt FIPS Certificate #4718, still wolfCOSE’s sole cryptographic dependency.

Getting Started

wolfCOSE requires wolfSSL 5.8.0 or later as its crypto backend, and wolfSSL 5.9.2 or later for ML-DSA.

git clone https://github.com/wolfSSL/wolfCOSE.git
cd wolfCOSE
git checkout v2.0.0
make
make test

wolfCOSE is dual-licensed under GPLv3 and a commercial license. For commercial licensing, FIPS 140-3 integration, custom ports, or help deploying post-quantum COSE, contact facts@wolfssl.com or support@wolfssl.com, or call +1 425 245 8247. We would love to hear what you are building.

Download wolfSSL Now