
Una implementación rápida, portátil y ligera de COSE + CBOR para sistemas embebidos. Admite PQC, FIPS 140-3, DO-178 y MISRA C. Desarrollado por wolfSSL.
wolfCOSE es una biblioteca ligera en C que implementa CBOR (RFC 8949), COSE (RFC 9052/9053) y ML-DSA para COSE (RFC 9964) poscuántico, utilizando wolfSSL como backend criptográfico.
COSE_Sign con múltiples firmantes
y COSE_Encrypt / COSE_Mac con múltiples destinatariosCOSE_Key RFC 9964 (tipo de clave AKP, claves privadas basadas en semilla).data/.bss)COSE_Sign1 con ES256, ~5.1 KB solo verificación y ~6.8 KB firma + verificación.
El flash total incluyendo wolfCrypt es de ~26.2 KB solo verificación (WOLFCOSE_LEAN_VERIFY) y ~34.6 KB firma + verificaciónCOSE_Sign1 ES256, x86_64, wolfCrypt sp_256 asm): 66,538 firmas/s, 26,437 verificaciones/sCOSE_Sign1 con ML-DSA-44 incluyendo wolfCrypt es de ~20.8 KB solo verificación
(WOLFCOSE_LEAN_VERIFY_MLDSA) y ~35.8 KB firma + verificación, aproximadamente a 1 KB de ES256 clásico. La parte de wolfCOSE
por sí sola es de 4.6 KB y ~6.6 KB respectivamente. Consulte FootprintFirma: ES256, ES384, ES512, EdDSA (Ed25519/Ed448), PS256/384/512, ML-DSA-44/65/87
Cifrado: AES-GCM (128/192/256), ChaCha20-Poly1305, variantes AES-CCM
MAC: HMAC-SHA256/384/512, AES-MAC
Distribución de Claves: Directo, AES Key Wrap, ECDH-ES+HKDF
wolfCOSE ha implementado todos los mensajes RFC 9052, tanto en variantes de actor único como de múltiples actores:
wolfCOSE requiere wolfSSL como backend criptográfico. Versión mínima soportada: v5.8.0-stable (primera versión con el símbolo público wc_ForceZero). La firma poscuántica utiliza la API canónica wc_MlDsaKey de FIPS 204, que llega a wolfSSL después de v5.9.1-stable; compilar wolfCOSE contra v5.8.0–v5.9.1 funciona para todo excepto ML-DSA. Las versiones 5.x más antiguas pueden soportarse técnicamente pero requieren cambios a nivel de código fuente; contacte con wolfSSL para soporte comercial.
Elija una configuración de compilación según los algoritmos que necesite.
Esto le proporciona COSE Sign1 (ES256/384/512) y Encrypt0 (AES-GCM):
cd wolfssl
./autogen.sh
./configure --enable-ecc --enable-aesgcm \
--enable-sha384 --enable-sha512 --enable-keygen
make && sudo make install
sudo ldconfig
Algoritmos habilitados: ES256, ES384, ES512, AES-GCM-128/192/256
Para una huella menor de wolfCrypt, añada --enable-cryptonly para eliminar la pila TLS
y deshabilite los algoritmos que una compilación Sign1 + Encrypt0 nunca utiliza:
./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
Consulte Tuning for Size y Tuning for Speed para exprimir aún más wolfCOSE y wolfCrypt en MCUs.
Para firma poscuántica pura con ML-DSA-44/65/87:
cd wolfssl
./autogen.sh
./configure --enable-cryptonly --enable-mldsa
make && sudo make install
sudo ldconfig
Algoritmos habilitados: ML-DSA-44, ML-DSA-65, ML-DSA-87
(SHAKE-128/256 se incorporan automáticamente con --enable-mldsa. La
API wc_MlDsaKey requiere wolfSSL posterior a 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
# Biblioteca principal (libwolfcose.a)
make
# Ejecutar pruebas unitarias
make test
# Compilar y ejecutar pruebas de ida y vuelta de la herramienta CLI (todos los algoritmos)
make tool-test
# Ejecutar demo del ciclo de vida (11 algoritmos)
make demo
Consulte examples/ para ver código funcional completo:
sign1_demo.c, encrypt0_demo.c, mac0_demo.c: demos de algoritmoslifecycle_demo.c: flujo de trabajo completo de extremo a nubecomprehensive/: pruebas de matriz de algoritmosscenarios/: firma de firmware, atestación, configuración de flotasSe ejecuta en cada push y PR:
-fanalyzer--addon=misra revisando todas las rutas de código de wolfCOSEbugprone-*, cert-*, clang-analyzer-*, misc-*)make coverage # Ejecutar pruebas con gcov
make coverage-force-failure # Incluir pruebas de rutas de fallo criptográfico
La documentación completa está disponible en la Wiki:
La versión actual es 1.0.0, la primera versión estable: el conjunto completo de mensajes COSE RFC 9052 (los seis tipos de mensaje, de actor único y múltiple), 40 algoritmos y ML-DSA poscuántico estandarizado (RFC 9964), todo ello con cero asignación dinámica. Consulte ChangeLog.md para las notas completas de la versión.
wolfCOSE 1.0.0 se ha desarrollado de acuerdo con el proceso de desarrollo y control de calidad de wolfSSL (consulte https://www.wolfssl.com/about/wolfssl-software-development-process-quality-assurance) y ha superado satisfactoriamente los criterios de calidad.
wolfCOSE es software libre bajo licencia GPLv3; consulte LICENSE para el texto completo.
Copyright (C) 2026 wolfSSL Inc.
Para licencias comerciales, contratos de soporte profesional o para hablar sobre llevar wolfCOSE a su entorno de producción, contacte con wolfSSL.
| Mensaje | RFC 9052 | API | Propósito |
|---|
COSE_Sign1 | Sec. 4.2 | wc_CoseSign1_Sign / wc_CoseSign1_Verify | Firma de firmante único |
COSE_Sign | Sec. 4.1 | wc_CoseSign_Sign / wc_CoseSign_Verify | Múltiples firmantes (firmas independientes sobre el mismo payload) |
COSE_Encrypt0 | Sec. 5.2 | wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_Decrypt | AEAD de destinatario único |
COSE_Encrypt | Sec. 5.1 | wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_Decrypt | Múltiples destinatarios (un solo ciphertext, muchos destinatarios mediante Direct / AES-KW / ECDH-ES) |
COSE_Mac0 | Sec. 6.2 | wc_CoseMac0_Create / wc_CoseMac0_Verify | MAC de destinatario único |
COSE_Mac | Sec. 6.1 | wc_CoseMac_Create / wc_CoseMac_Verify | MAC multidestinatario (clave MAC compartida, distribuida a los destinatarios) |
COSE_Key / COSE_KeySet | Sec. 7 | wc_CoseKey_Encode / wc_CoseKey_Decode | Serialización de claves para todos los tipos de clave |
| Objetivo | Descripción |
|---|
make all | Compila libwolfcose.a (solo biblioteca principal) |
make shared | Compila libwolfcose.so |
make test | Compila + ejecuta pruebas unitarias de CBOR y COSE |
make tool | Compila la herramienta CLI (tools/wolfcose_tool) |
make tool-test | Autoprueba de ida y vuelta para los 17 algoritmos |
make demo | Compila + ejecuta demo del ciclo de vida (11 algoritmos) |
make clean | Elimina todos los artefactos de compilación |