
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 :
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
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 :
-fanalyzer--addon=misra vérifiant tous les chemins de code de wolfCOSEbugprone-*, cert-*, clang-analyzer-*, misc-*)make coverage # Run tests with gcov
make coverage-force-failure # Include crypto failure path testing
La documentation complète est disponible dans le Wiki :
La version actuelle est la 1.0.0, la première version stable : le jeu complet de messages COSE RFC 9052 (les six types de messages, mono- et multi-acteur), 40 algorithmes et le ML-DSA post-quantique standardisé (RFC 9964), le tout avec zéro allocation dynamique. Consultez ChangeLog.md pour les notes de version complètes.
wolfCOSE 1.0.0 a été développé conformément au processus de développement et d'assurance qualité de wolfSSL (voir https://www.wolfssl.com/about/wolfssl-software-development-process-quality-assurance) et a passé avec succès les critères de qualité.
wolfCOSE est un logiciel libre sous licence GPLv3 ; voir LICENSE pour le texte intégral.
Copyright (C) 2026 wolfSSL Inc.
Pour une licence commerciale, des contrats de support professionnel, ou pour discuter de l'intégration de wolfCOSE dans votre environnement de production, contactez wolfSSL.
| 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 |
| 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 |