Releases: wolfSSL/wolfCOSE
wolfCOSE 1.0.0
First stable release of wolfCOSE, a zero-allocation C implementation of CBOR (RFC 8949) and COSE (RFC 9052/9053) built on wolfCrypt. All six COSE message types, 40 algorithms, and standardized post-quantum ML-DSA (RFC 9964), with no dynamic memory and a small footprint.
What it does
- All six COSE message types, single-actor and multi-actor:
COSE_Sign1/COSE_Sign,COSE_Encrypt0/COSE_Encrypt,COSE_Mac0/COSE_Mac(includes multi-signer and multi-recipient). - Dependency-free CBOR engine (RFC 8949) with deterministic/preferred-encoding enforcement and strict decode (rejects non-preferred and trailing input).
- COSE_Key / COSE_KeySet serialization for every supported key type, including full RFC 8230 RSA private keys.
- Post-quantum signing: ML-DSA (FIPS 204) at all three levels, conformant to RFC 9964 using the AKP key type.
Why it is different
- Zero dynamic allocation. Every operation uses caller-provided buffers. No heap, no
.data, no.bss. Memory use is deterministic. - Tiny footprint. ES256
COSE_Sign1is about 5.1 KB verify-only and 6.8 KB sign+verify for the COSE + CBOR engine. - Lean by config.
WOLFCOSE_LEAN,WOLFCOSE_HAVE_*gates,WOLFCOSE_LEAN_VERIFY, and a bounded-stackWOLFCOSE_MIN_BUFFERSprofile. Verify-only ECC links against sign-disabled wolfCrypt. - Path to FIPS 140-3 through wolfCrypt FIPS Certificate #4718, the sole crypto dependency.
Algorithms (40, RFC 9053)
- Signing: ES256/384/512, EdDSA (Ed25519/Ed448), PS256/384/512, ML-DSA-44/65/87
- Encryption: AES-GCM (128/192/256), AES-CCM variants, ChaCha20-Poly1305
- MAC: HMAC-SHA256/384/512, AES-MAC
- Key distribution: Direct, AES Key Wrap, ECDH-ES + HKDF
Tested
MISRA C:2012/C:2023 and ISO C99 conformant. ~240 algorithm-combination round-trips, static analysis (cppcheck, Clang analyzer, GCC -fanalyzer, Coverity), CodeQL + Semgrep security scanning, ASan/UBSan, and a wolfCOSE / t_cose wire-interop conformance suite.
What's in 1.0.0
- COSE + algorithms: core algorithm set and CLI tooling (#1), full coverage and multi-party support (#10), RFC 9052/9053 message-path hardening (#30)
- Post-quantum: RFC 9964 ML-DSA / AKP key type (#49), Dilithium to ML-DSA rename + latest-stable CI (#33)
- RFC 8230 RSA keys: private-key round-trip (#46), dP/dQ + fixed-width
d(#50), decode + length-guard + zeroize coverage (#48) - Lean / embedded:
WOLFCOSE_LEANgates (#42), lean verify + ML-DSA profiles (#43), bounded-stack +WOLFCOSE_MIN_BUFFERS(#38), verify-only ECC (#53) - Quality / security: MISRA checker (#16), CodeQL + Semgrep gates (#52), t_cose interop (#45), C99 conformance (#37), hardening (#55, #56, #40), Coverity fixes (#58)
Requirements
Requires wolfSSL 5.8.0+ as the crypto backend; ML-DSA needs wolfSSL 5.9.2+. Makefile-only, single dependency on wolfCrypt: make && make test. Dual-licensed GPLv3 / commercial; for commercial, FIPS, or support, contact facts@wolfssl.com. Full notes: ChangeLog.md.
The GitHub-generated source archives are an automatic bundle. Official downloads are on the wolfSSL download page.