
Une implémentation COSE + CBOR rapide, portable et légère pour les systèmes embarqués. Prend en charge PQC, FIPS 140-3, DO-178 et MISRA C. Propulsé par wolfSSL.
wolfCOSE est une bibliothèque C légère implémentant CBOR (RFC 8949), COSE (RFC 9052/9053) et le ML-DSA post-quantique pour COSE (RFC 9964) en utilisant wolfSSL comme backend cryptographique.
COSE_Sign multi-signataire et COSE_Encrypt / COSE_Mac multi-destinataireCOSE_Key RFC 9964 (type de clé AKP, clés privées basées sur une graine).data/.bss)COSE_Sign1 wolfCOSE (moteur COSE + CBOR) ~5.1 KB en vérification seule et ~6.8 KB en signature + vérification.
La flash totale incluant wolfCrypt est de ~26.2 KB en vérification seule (WOLFCOSE_LEAN_VERIFY) et ~34.6 KB en signature + vérificationCOSE_Sign1, x86_64, asm sp_256 de wolfCrypt) : 66,538 signatures/s, 26,437 vérifications/sCOSE_Sign1 incluant wolfCrypt est de ~20.8 KB en vérification seule
(WOLFCOSE_LEAN_VERIFY_MLDSA) et ~35.8 KB en signature + vérification, à environ 1 KB près de l'ES256 classique. La partie wolfCOSE
seule est respectivement de 4.6 KB et ~6.6 KB. Voir EmpreinteSignature : ES256, ES384, ES512, EdDSA (Ed25519/Ed448), PS256/384/512, ML-DSA-44/65/87
Chiffrement : AES-GCM (128/192/256), ChaCha20-Poly1305, AES-CCM variants
MAC : HMAC-SHA256/384/512, AES-MAC
Distribution de clés : Direct, AES Key Wrap, ECDH-ES+HKDF
wolfCOSE a implémenté tous les messages RFC 9052, dans leurs variantes mono-acteur et multi-acteur :
| Message | RFC 9052 | API | Objectif |
|---|---|---|---|
COSE_Sign1 | Sec. 4.2 | wc_CoseSign1_Sign / wc_CoseSign1_Verify | Signature à signataire unique |
COSE_Sign | Sec. 4.1 | wc_CoseSign_Sign / wc_CoseSign_Verify | Multi-signataire (signatures indépendantes sur la même charge utile) |
COSE_Encrypt0 | Sec. 5.2 | wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_Decrypt | AEAD à destinataire unique |
COSE_Encrypt | Sec. 5.1 | wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_Decrypt | Multi-destinataire (un seul texte chiffré, de nombreux destinataires via Direct / AES-KW / ECDH-ES) |
COSE_Mac0 | Sec. 6.2 | wc_CoseMac0_Create / wc_CoseMac0_Verify | MAC à destinataire unique |
COSE_Mac | Sec. 6.1 | wc_CoseMac_Create / wc_CoseMac_Verify | MAC multi-destinataire (clé MAC partagée, distribuée aux destinataires) |
COSE_Key / COSE_KeySet | Sec. 7 | wc_CoseKey_Encode / wc_CoseKey_Decode | Sérialisation des clés pour tous les types de clés |
wolfCOSE nécessite wolfSSL comme backend cryptographique. Version minimale prise en charge : v5.8.0-stable (première version avec le symbole public wc_ForceZero). La signature post-quantique utilise l'API canonique FIPS 204 wc_MlDsaKey, qui apparaît dans wolfSSL après v5.9.1-stable ; compiler wolfCOSE contre v5.8.0–v5.9.1 fonctionne pour tout sauf ML-DSA. Les versions 5.x plus anciennes peuvent techniquement être prises en charge, mais nécessitent des modifications au niveau du code source ; contactez wolfSSL pour un support commercial.
Choisissez une configuration de compilation en fonction des algorithmes dont vous avez besoin.
Ceci vous donne COSE Sign1 (ES256/384/512) et Encrypt0 (AES-GCM) :
cd wolfssl
./autogen.sh
./configure --enable-ecc --enable-aesgcm \
--enable-sha384 --enable-sha512 --enable-keygen
make && sudo make install
sudo ldconfig
Algorithmes activés : ES256, ES384, ES512, AES-GCM-128/192/256
Pour réduire l'empreinte de wolfCrypt, ajoutez --enable-cryptonly pour retirer la pile TLS et désactiver les algorithmes qu'une compilation Sign1 + Encrypt0 n'utilise jamais :
./configure --enable-cryptonly --enable-ecc --enable-aesgcm \
--enable-sha384 --enable-sha512 --enable-keygen \
--enable-lowresource \
--disable-dh --disable-rsa --disable-aescbc \
--disable-sha --disable-md5 --disable-chacha --disable-poly1305 \
--disable-errorstrings
Consultez Réglage pour la taille et Réglage pour la vitesse pour optimiser davantage wolfCOSE et wolfCrypt sur les MCU.
Pour une signature post-quantique pure avec ML-DSA-44/65/87 :
cd wolfssl
./autogen.sh
./configure --enable-cryptonly --enable-mldsa
make && sudo make install
sudo ldconfig
Algorithmes activés : ML-DSA-44, ML-DSA-65, ML-DSA-87
(SHAKE-128/256 sont inclus automatiquement par --enable-mldsa. L'API
wc_MlDsaKey nécessite wolfSSL plus récent que v5.9.1-stable.)
cd wolfssl
./autogen.sh
./configure --enable-ecc --enable-ed25519 --enable-ed448 \
--enable-curve25519 --enable-aesgcm --enable-aesccm \
--enable-sha384 --enable-sha512 --enable-keygen \
--enable-rsapss --enable-chacha --enable-poly1305 \
--enable-mldsa \
--enable-hkdf --enable-aeskeywrap
make && sudo make install
sudo ldconfig
# Core library (libwolfcose.a)
make
# Run unit tests
make test
# Build and run CLI tool round-trip tests (all algorithms)
make tool-test
# Run lifecycle demo (11 algorithms)
make demo
| Target | Description |
|---|---|
make all | Compiler libwolfcose.a (bibliothèque cœur uniquement) |
make shared | Compiler libwolfcose.so |
make test | Compiler + exécuter les tests unitaires CBOR et COSE |
make tool | Compiler l'outil CLI (tools/wolfcose_tool) |
make tool-test | Auto-test aller-retour pour les 17 algorithmes |
make demo | Compiler + exécuter la démo de cycle de vie (11 algorithmes) |
make clean | Supprimer tous les artefacts de compilation |
Consultez examples/ pour des exemples complets et fonctionnels :
sign1_demo.c, encrypt0_demo.c, mac0_demo.c : démos d'algorithmeslifecycle_demo.c : workflow complet de la périphérie au cloudcomprehensive/ : tests de matrice d'algorithmesscenarios/ : signature de firmware, attestation, configuration de flotteExécutés à chaque push et PR :