
wolfCOSE v2.0.0
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
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.
Características Principales
- Conjunto completo de mensajes RFC 9052: los seis tipos de mensaje COSE, incluidos
COSE_Signcon múltiples firmantes yCOSE_Encrypt/COSE_Maccon múltiples destinatarios - Firma poscuántica: ML-DSA (FIPS 204) en los tres niveles de seguridad, con
COSE_KeyRFC 9964 (tipo de clave AKP, claves privadas basadas en semilla) - 40 algoritmos en firma, cifrado, MAC y distribución de claves
- Cero asignación dinámica: sin asignación en el heap y no recursivo. Cada operación se ejecuta en buffers proporcionados por el llamante
dentro de un límite de pila acotado y personalizable por objetivo (nada en el heap, cero
.data/.bss) - Huella mínima: wolfCOSE (motor COSE + CBOR) para
COSE_Sign1con 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ón - Rápido: (
COSE_Sign1ES256, x86_64, wolfCryptsp_256asm): 66,538 firmas/s, 26,437 verificaciones/s - Poscuántico al mismo costo: el flash total de
COSE_Sign1con 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 Footprint - Camino a FIPS 140-3: mediante wolfCrypt Certificado FIPS #4718 (única dependencia criptográfica)
Algoritmos Soportados
Firma: 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
Tipos de Mensaje COSE (RFC 9052)
wolfCOSE ha implementado todos los mensajes RFC 9052, tanto en variantes de actor único como de múltiples actores:
| 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 |
Requisitos Previos (wolfSSL)
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.
Compilación Mínima (ECC + AES-GCM)
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.
Compilación Mínima (solo Poscuántico / ML-DSA)
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).
Compilación Completa (Todos los Algoritmos)
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
Compilación
# 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
Objetivos de Compilación
| 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 |
Inicio Rápido
Ejemplos
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 flotas
CI / Pruebas
Se ejecuta en cada push y PR:
- Compilación + Pruebas: Ubuntu, macOS, GCC 10-14, Clang 14-18
- Pruebas Exhaustivas: ~240 pruebas de combinación de algoritmos
- Análisis Estático: cppcheck, analizador Clang, GCC
-fanalyzer - MISRA C 2012: cppcheck
--addon=misrarevisando todas las rutas de código de wolfCOSE - MISRA C 2023: advertencias estrictas de GCC y clang-tidy (
bugprone-*,cert-*,clang-analyzer-*,misc-*) - Coverity Scan: análisis de defectos nocturno
- Análisis Estático Interno Avanzado: herramientas avanzadas de análisis estático de Fenrir wolfssl
- Cobertura de Código: 99.3% para wolfcose.c, 100% para wolfcose_cbor.c
make coverage # Ejecutar pruebas con gcov
make coverage-force-failure # Incluir pruebas de rutas de fallo criptográfico
Documentación
La documentación completa está disponible en la Wiki:
- Getting Started: Instrucciones de compilación y primeros pasos
- Message Types: Los seis mensajes RFC 9052 (Sign1, Sign, Encrypt0, Encrypt, Mac0, Mac) con ejemplos de código
- Algorithms: Lista completa de los 40 algoritmos soportados con ID de COSE
- API Reference: Firmas de funciones, estructuras de datos, códigos de error
- Macros: Opciones de configuración en tiempo de compilación
- Footprint: Cifras de tamaño y velocidad, en escritorio y en dispositivo
- Testing: Infraestructura de pruebas, cobertura e inyección de fallos
- MISRA Compliance: Estado de cumplimiento de MISRA C:2012 y C:2023 y justificación de desviaciones
- Project Structure: Organización de los archivos fuente
Notas de la Versión
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.
Licencia
wolfCOSE es software libre bajo licencia GPLv3; consulte LICENSE para el texto completo.
Copyright (C) 2026 wolfSSL Inc.
Soporte
Para licencias comerciales, contratos de soporte profesional o para hablar sobre llevar wolfCOSE a su entorno de producción, contacte con wolfSSL.