
Eine schnelle, portable und leichtgewichtige Implementierung von COSE + CBOR für eingebettete Systeme. Unterstützt PQC, FIPS 140-3, DO-178 und MISRA C. Basiert auf wolfSSL.
wolfCOSE ist eine leichtgewichtige C-Bibliothek, die CBOR (RFC 8949), COSE (RFC 9052/9053) und die Post-Quanten-Spezifikation ML-DSA für COSE (RFC 9964) implementiert und wolfSSL als Krypto-Backend verwendet.
COSE_Sign mit mehreren Signierern und COSE_Encrypt / COSE_Mac mit mehreren EmpfängernCOSE_Key nach RFC 9964 (AKP-Schlüsseltyp, seed-basierte private Schlüssel).data/.bss)COSE_Sign1 wolfCOSE (COSE + CBOR-Engine) ~5,1 KB nur Verifizierung und ~6,8 KB Signieren + Verifizieren. Der gesamte Flash-Speicher inklusive wolfCrypt beträgt ~26,2 KB nur Verifizierung (WOLFCOSE_LEAN_VERIFY) und ~34,6 KB Signieren + VerifizierenCOSE_Sign1, x86_64, wolfCrypt sp_256 asm): 66.538 Signierungen/s, 26.437 Verifizierungen/sCOSE_Sign1 inklusive wolfCrypt beträgt ~20,8 KB nur Verifizierung (WOLFCOSE_LEAN_VERIFY_MLDSA) und ~35,8 KB Signieren + Verifizieren und liegt damit innerhalb von etwa 1 KB des klassischen ES256. Der wolfCOSE-Anteil allein beträgt 4,6 KB bzw. ~6,6 KB. Siehe FootprintSignierung: ES256, ES384, ES512, EdDSA (Ed25519/Ed448), PS256/384/512, ML-DSA-44/65/87
Verschlüsselung: AES-GCM (128/192/256), ChaCha20-Poly1305, AES-CCM variants
MAC: HMAC-SHA256/384/512, AES-MAC
Schlüsselverteilung: Direct, AES Key Wrap, ECDH-ES+HKDF
wolfCOSE hat alle RFC-9052-Nachrichten sowohl in Einzelakteur- als auch in Mehrfachakteur-Varianten implementiert:
wolfCOSE benötigt wolfSSL als Krypto-Backend. Mindestens unterstützte Version: v5.8.0-stable (erste Version mit dem öffentlichen wc_ForceZero-Symbol). Die Post-Quanten-Signierung verwendet die kanonische wc_MlDsaKey-API (FIPS 204), die in wolfSSL nach v5.9.1-stable erscheint; ein Build von wolfCOSE gegen v5.8.0–v5.9.1 funktioniert für alles außer ML-DSA. Ältere 5.x-Versionen können technisch unterstützt werden, erfordern jedoch Änderungen auf Quellcode-Ebene; wenden Sie sich für kommerziellen Support an wolfSSL.
Wählen Sie eine Build-Konfiguration basierend auf den Algorithmen, die Sie benötigen.
Damit erhalten Sie COSE Sign1 (ES256/384/512) und Encrypt0 (AES-GCM):
cd wolfssl
./autogen.sh
./configure --enable-ecc --enable-aesgcm \
--enable-sha384 --enable-sha512 --enable-keygen
make && sudo make install
sudo ldconfig
Aktivierte Algorithmen: ES256, ES384, ES512, AES-GCM-128/192/256
Für einen kleineren wolfCrypt-Speicherbedarf fügen Sie --enable-cryptonly hinzu, um den TLS-Stack zu entfernen und die Algorithmen zu deaktivieren, die ein Sign1- + Encrypt0-Build nie verwendet:
./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
Siehe Tuning für die Größe und Tuning für die Geschwindigkeit, um wolfCOSE und wolfCrypt auf MCUs weiter zu verkleinern bzw. zu beschleunigen.
Für reine Post-Quanten-Signierung mit ML-DSA-44/65/87:
cd wolfssl
./autogen.sh
./configure --enable-cryptonly --enable-mldsa
make && sudo make install
sudo ldconfig
Aktivierte Algorithmen: ML-DSA-44, ML-DSA-65, ML-DSA-87
(SHAKE-128/256 werden automatisch durch --enable-mldsa eingebunden. Die wc_MlDsaKey-API erfordert wolfSSL neuer als 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
# Kernbibliothek (libwolfcose.a)
make
# Unit-Tests ausführen
make test
# Roundtrip-Tests des CLI-Tools erstellen und ausführen (alle Algorithmen)
make tool-test
# Lebenszyklus-Demo ausführen (11 Algorithmen)
make demo
Siehe examples/ für vollständigen funktionsfähigen Code:
sign1_demo.c, encrypt0_demo.c, mac0_demo.c: Algorithmus-Demoslifecycle_demo.c: vollständiger Edge-to-Cloud-Workflowcomprehensive/: Algorithmus-Matrixtestsscenarios/: Firmware-Signierung, Attestierung, FlottenkonfigurationLäuft bei jedem Push und jeder PR:
-fanalyzer--addon=misra prüft alle wolfCOSE-Codepfadebugprone-*, cert-*, clang-analyzer-*, misc-*)make coverage # Tests mit gcov ausführen
make coverage-force-failure # Krypto-Fehlerpfad-Tests einschließen
Die vollständige Dokumentation ist im Wiki verfügbar:
Die aktuelle Version ist 1.0.0, das erste stabile Release: der vollständige RFC-9052-COSE-Nachrichtensatz (alle sechs Nachrichtentypen, Einzel- und Mehrfachakteure), 40 Algorithmen und das standardisierte Post-Quanten-Signaturverfahren ML-DSA (RFC 9964) – alles ohne dynamische Allokation. Die vollständigen Versionshinweise finden Sie in ChangeLog.md.
wolfCOSE 1.0.0 wurde gemäß dem Entwicklungs- und QA-Prozess von wolfSSL entwickelt (siehe https://www.wolfssl.com/about/wolfssl-software-development-process-quality-assurance) und hat die Qualitätskriterien erfolgreich bestanden.
wolfCOSE ist freie Software, lizenziert unter GPLv3; den vollständigen Text finden Sie in LICENSE.
Copyright (C) 2026 wolfSSL Inc.
Für kommerzielle Lizenzierung, professionelle Supportverträge oder Gespräche über die Integration von wolfCOSE in Ihre Produktionsumgebung wenden Sie sich an wolfSSL.
| Nachricht | RFC 9052 | API | Zweck |
|---|
COSE_Sign1 | Abschn. 4.2 | wc_CoseSign1_Sign / wc_CoseSign1_Verify | Signatur mit einem Signierer |
COSE_Sign | Abschn. 4.1 | wc_CoseSign_Sign / wc_CoseSign_Verify | Mehrere Signierer (unabhängige Signaturen über dieselben Nutzdaten) |
COSE_Encrypt0 | Abschn. 5.2 | wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_Decrypt | AEAD mit einem Empfänger |
COSE_Encrypt | Abschn. 5.1 | wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_Decrypt | Mehrere Empfänger (ein Chiffrat, viele Empfänger über Direct / AES-KW / ECDH-ES) |
COSE_Mac0 | Abschn. 6.2 | wc_CoseMac0_Create / wc_CoseMac0_Verify | MAC mit einem Empfänger |
COSE_Mac | Abschn. 6.1 | wc_CoseMac_Create / wc_CoseMac_Verify | Mehrere Empfänger: MAC (gemeinsamer MAC-Schlüssel, verteilt an die Empfänger) |
COSE_Key / COSE_KeySet | Abschn. 7 | wc_CoseKey_Encode / wc_CoseKey_Decode | Schlüsselserialisierung für alle Schlüsseltypen |
| Ziel | Beschreibung |
|---|
make all | Erstellt libwolfcose.a (nur Kernbibliothek) |
make shared | Erstellt libwolfcose.so |
make test | Erstellt und führt CBOR- und COSE-Unit-Tests aus |
make tool | Erstellt CLI-Tool (tools/wolfcose_tool) |
make tool-test | Roundtrip-Selbsttest für alle 17 Algorithmen |
make demo | Erstellt und führt Lebenszyklus-Demo aus (11 Algorithmen) |
make clean | Entfernt alle Build-Artefakte |