
wolfCOSE v2.0.0
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
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.
Fonctionnalités principales
- Jeu complet de messages RFC 9052 : les six types de messages COSE, y compris
COSE_Signmulti-signataire etCOSE_Encrypt/COSE_Macmulti-destinataire - Signature post-quantique : ML-DSA (FIPS 204) aux trois niveaux de sécurité, avec
COSE_KeyRFC 9964 (type de clé AKP, clés privées basées sur une graine) - 40 algorithmes couvrant la signature, le chiffrement, le MAC et la distribution de clés
- Zéro allocation dynamique : sans allocation sur le tas et non récursif. Chaque opération s'exécute sur des tampons fournis par l'appelant
dans une limite de pile bornée et personnalisable selon la cible (rien sur le tas, zéro
.data/.bss) - Empreinte minimale : ES256
COSE_Sign1wolfCOSE (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érification - Rapide : (ES256
COSE_Sign1, x86_64, asmsp_256de wolfCrypt) : 66,538 signatures/s, 26,437 vérifications/s - Post-quantique au même coût : la flash totale de ML-DSA-44
COSE_Sign1incluant 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 Empreinte - Chemin vers FIPS 140-3 : via le certificat FIPS #4718 de wolfCrypt (unique dépendance cryptographique)
Algorithmes pris en charge
Signature : 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
Types de messages COSE (RFC 9052)
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 |
Prérequis (wolfSSL)
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.
Compilation minimale (ECC + AES-GCM)
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.
Compilation minimale (Post-quantique / ML-DSA uniquement)
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.)
Compilation complète (tous les algorithmes)
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
Compilation
# 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
Cibles de compilation
| 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 |
Démarrage rapide
Exemples
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 flotte
CI / Tests
Exécutés à chaque push et PR :
- Compilation + Tests : Ubuntu, macOS, GCC 10-14, Clang 14-18
- Tests complets : ~240 tests de combinaisons d'algorithmes
- Analyse statique : cppcheck, analyseur Clang, GCC
-fanalyzer - MISRA C 2012 : cppcheck
--addon=misravérifiant tous les chemins de code de wolfCOSE - MISRA C 2023 : avertissements GCC stricts et clang-tidy (
bugprone-*,cert-*,clang-analyzer-*,misc-*) - Coverity Scan : analyse nocturne des défauts
- Analyse statique interne avancée : outils d'analyse statique avancée Fenrir wolfssl
- Couverture de code : 99.3 % pour wolfcose.c, 100 % pour wolfcose_cbor.c
make coverage # Run tests with gcov
make coverage-force-failure # Include crypto failure path testing
Documentation
La documentation complète est disponible dans le Wiki :
- Pour commencer : instructions de compilation et premiers pas
- Types de messages : les six messages RFC 9052 (Sign1, Sign, Encrypt0, Encrypt, Mac0, Mac) avec des exemples de code
- Algorithmes : liste complète des 40 algorithmes pris en charge avec leurs identifiants COSE
- Référence API : signatures de fonctions, structures de données, codes d'erreur
- Macros : options de configuration à la compilation
- Empreinte : chiffres de taille et de vitesse, sur poste de travail et sur appareil
- Tests : infrastructure de test, couverture et injection de pannes
- Conformité MISRA : statut de conformité MISRA C:2012 et C:2023 et justification des dérogations
- Structure du projet : organisation des fichiers sources
Notes de version
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é.
Licence
wolfCOSE est un logiciel libre sous licence GPLv3 ; voir LICENSE pour le texte intégral.
Copyright (C) 2026 wolfSSL Inc.
Support
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.