We are excited to announce wolfCOSE for wolfCrypt. It is a zero-allocation C library that implements CBOR (RFC 8949) and COSE (RFC 9052/9053). All six COSE message types are supported: Sign1, Sign, Encrypt0, Encrypt, Mac0, and Mac. Multi-signer, multi-recipient, and countersignature variants are included. Cryptographic operations use wolfCrypt under CMVP certificate #4718. That gives COSE a direct path to FIPS 140-3.
Post-Quantum Built In
wolfCOSE is the only embedded C COSE library with native post-quantum signatures. ML-DSA (FIPS 204) at all three security levels (ML-DSA-44, ML-DSA-65, ML-DSA-87) is built in, not patched on. The COSE ML-DSA draft is at the RFC Editor queue. Algorithm IDs -48, -49, -50 track toward standardization.
40 Algorithms, All Six COSE Types
| Category | Algorithms |
|---|---|
| Signing | ES256/384/512, EdDSA (Ed25519, Ed448), PS256/384/512, ML-DSA-44/65/87 |
| Encryption | AES-GCM (128/192/256), ChaCha20-Poly1305*, AES-CCM (8 variants) |
| MAC | HMAC-SHA256/384/512, AES-MAC (128/256, 64/128) |
| Key Distribution | Direct, AES Key Wrap (128/192/256), ECDH-ES+HKDF |
- ChaCha20-Poly1305 is available in wolfCOSE but is not FIPS-approved. AES-GCM is the FIPS-compliant AEAD path.
The full algorithm set compiles at 25.6 KB .text. A minimal Sign1+ECC build is 7.5 KB, with zero .data and zero .bss.
Fits Embedded Targets
wolfCOSE uses no dynamic allocation. Every API takes caller-provided buffers. Stack crypto material is zeroized on every exit. A full COSE lifecycle (key decode, sign, encode, verify) runs in under 1 KB RAM. The library is MISRA C:2012 and C:2023 checked. CI runs Coverity, ASan, UBSan, and 15 workflows including a nightly wolfSSL-versions compatibility matrix. Code coverage is 99.3% on wolfcose.c and 100% on wolfcose_cbor.c.
Built on wolfCrypt
wolfCOSE’s sole dependency is wolfCrypt. That is the same FIPS 140-3 validated core (#4718) used across the wolfSSL product line. wolfCOSE firmware manifests can be verified by wolfBoot during secure boot. COSE-encrypted IoT messages can flow through wolfMQTT. The full stack sits within the Full Linux FIPS programme, all under the same wolfCrypt FIPS boundary. wolfCOSE includes a purpose-built CBOR engine (502 lines, 2.7 KB .text). No second CBOR library is needed.
Build Instructions
wolfCOSE requires wolfSSL 5.8.0 or later. Build wolfSSL first:
# wolfSSL with ECC + AES-GCM + SHA-384/512 + keygen
./configure --enable-ecc --enable-aesgcm \
--enable-sha384 --enable-sha512 --enable-keygen
make && sudo make install
For PQC support, add –enable-mldsa. Then build wolfCOSE:
git clone https://github.com/wolfSSL/wolfCOSE
Get wolfCOSE on GitHub at github.com/wolfSSL/wolfCOSE. The library is GPLv3 or commercial. Contact facts@wolfssl.com for production support or an official wolfSSL product commitment.
If you have questions about any of the above, please contact us at facts@wolfssl.com or call us at +1 425 245 8247.
Download wolfSSL Now

