
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 et rapide implémentant les normes fondamentales CBOR et COSE, s'appuyant sur wolfSSL pour la cryptographie.
COSE_Sign1, COSE_Encrypt0 et COSE_Mac0.COSE_Sign1 de bout en bout atteint 66 538 sign/s et 26 437 verify/s avec ES256, et 21 986 sign/s et 53 686 verify/s avec ML-DSA-44. Voir les détails de performance et d'empreinte et wolfCOSE vs. The Field..data/.bss). Fonctionne sur des tampons fournis par l'appelant avec une utilisation de pile bornée.I-CUBE-wolfCOSE) disponible pour STM32CubeMX / IDE (Détails).ESP256, ESP384, ESP512, Ed25519, Ed448, PS256, PS384, PS512ML-DSA-44, ML-DSA-65, ML-DSA-87HSS-LMSAES-GCM (128 / 192 / 256)AES-CCM (variantes)ChaCha20-Poly1305HMAC-SHA256, HMAC-SHA384, HMAC-SHA512AES-MACDirectAES Key WrapECDH-ES + HKDFwolfCOSE a implémenté tous les messages de la 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-signataires (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-destinataires (un seul texte chiffré, plusieurs 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-destinataires (clé MAC partagée, distribuée aux destinataires) |
COSE_Key / COSE_KeySet | Sec. 7 | wc_CoseKey_Encode / wc_CoseKey_Decode | Sérialisation de clés pour tous les types de clés |
Les contre-signatures de la RFC 9338 peuvent être attachées à n'importe quel
message balisé de ce tableau. Utilisez wc_Cose_AddCounterSignature() ou
wc_Cose_AddCounterSignature0() pour en ajouter une, puis vérifiez-la
indépendamment avec l'API wc_Cose_VerifyCounterSignature*() correspondante.
wolfCOSE nécessite wolfSSL comme backend cryptographique. Version minimale prise en charge : v5.8.0-stable. Certains algorithmes optionnels nécessitent des versions plus récentes ; voir Getting Started pour les seuils de dépendance spécifiques aux fonctionnalités et les instructions de compilation. HSS/LMS (RFC 8778) nécessite v5.9.2-stable ou une version ultérieure.
Choisissez une configuration de compilation en fonction des algorithmes dont vous avez besoin.
Cela vous donne COSE Sign1 (ESP256/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 : ESP256, ESP384, ESP512, AES-GCM-128/192/256
Pour une empreinte wolfCrypt plus réduite, ajoutez --enable-cryptonly afin de
supprimer la pile TLS et de 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
Voir Tuning for Size et Tuning for Speed pour réduire davantage wolfCOSE et wolfCrypt sur les MCU.
Pour une signature purement post-quantique 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 tirés automatiquement par --enable-mldsa. L'API
wc_MlDsaKey nécessite une version de wolfSSL plus récente 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-lms \
--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