wolfCOSE: CBOR and COSE on FIPS-Validated wolfCrypt: Announcing wolfCOSE for wolfCrypt

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