
Uma implementação rápida, portátil e leve de COSE + CBOR para sistemas embarcados. Suporta PQC, FIPS 140-3, DO-178 e MISRA C. Alimentado por wolfSSL.
wolfCOSE é uma biblioteca C leve que implementa CBOR (RFC 8949), COSE (RFC 9052/9053) e o ML-DSA pós-quântico para COSE (RFC 9964), usando wolfSSL como backend criptográfico.
COSE_Sign com múltiplos
assinantes e COSE_Encrypt / COSE_Mac com múltiplos destinatáriosCOSE_Key RFC 9964 (tipo de chave AKP, chaves privadas baseadas em semente).data/.bss)COSE_Sign1 wolfCOSE (motor COSE + CBOR) ~5,1 KB somente verificação e ~6,8 KB assinatura + verificação.
O flash total, incluindo wolfCrypt, é ~26,2 KB somente verificação (WOLFCOSE_LEAN_VERIFY) e ~34,6 KB assinatura + verificaçãoCOSE_Sign1, x86_64, wolfCrypt sp_256 asm): 66.538 assinaturas/s, 26.437 verificações/sCOSE_Sign1, incluindo wolfCrypt, é ~20,8 KB somente verificação
(WOLFCOSE_LEAN_VERIFY_MLDSA) e ~35,8 KB assinatura + verificação, dentro de cerca de 1 KB do ES256 clássico. A parte wolfCOSE
sozinha é 4,6 KB e ~6,6 KB, respectivamente. Consulte FootprintAssinatura: ES256, ES384, ES512, EdDSA (Ed25519/Ed448), PS256/384/512, ML-DSA-44/65/87
Criptografia: AES-GCM (128/192/256), ChaCha20-Poly1305, AES-CCM variants
MAC: HMAC-SHA256/384/512, AES-MAC
Distribuição de Chaves: Direct, AES Key Wrap, ECDH-ES+HKDF
wolfCOSE implementou todas as mensagens RFC 9052, tanto nas variantes de ator único quanto nas de múltiplos atores:
wolfCOSE requer wolfSSL como backend criptográfico. Versão mínima suportada: v5.8.0-stable (primeira versão com o símbolo público wc_ForceZero). A assinatura pós-quântica usa a API canônica wc_MlDsaKey do FIPS 204, que chega ao wolfSSL após v5.9.1-stable; compilar wolfCOSE com v5.8.0–v5.9.1 funciona para tudo, exceto ML-DSA. Versões 5.x mais antigas podem ser suportadas tecnicamente, mas exigem alterações no nível do código-fonte; entre em contato com a wolfSSL para suporte comercial.
Escolha uma configuração de compilação com base nos algoritmos de que você precisa.
Isso fornece COSE Sign1 (ES256/384/512) e 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 uma pegada wolfCrypt menor, adicione --enable-cryptonly para eliminar a pilha TLS e desabilitar os algoritmos que uma compilação Sign1 + Encrypt0 nunca usa:
./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 Ajuste para Tamanho e Ajuste para Velocidade para otimizar ainda mais wolfCOSE e wolfCrypt em MCUs.
Para assinatura pós-quântica pura com 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 são incluídos automaticamente por --enable-mldsa. A
API wc_MlDsaKey requer wolfSSL mais recente 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-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
Consulte examples/ para obter código funcional completo:
sign1_demo.c, encrypt0_demo.c, mac0_demo.c: demonstrações de algoritmoslifecycle_demo.c: fluxo de trabalho completo edge-to-cloudcomprehensive/: testes de matriz de algoritmosscenarios/: assinatura de firmware, atestação, configuração de frotaExecutado a cada push e PR:
-fanalyzer--addon=misra verificando todos os caminhos de código do wolfCOSEbugprone-*, cert-*, clang-analyzer-*, misc-*)make coverage # Run tests with gcov
make coverage-force-failure # Include crypto failure path testing
A documentação completa está disponível na Wiki:
O lançamento atual é o 1.0.0, o primeiro lançamento estável: o conjunto completo de mensagens COSE RFC 9052 (todos os seis tipos de mensagem, de ator único e múltiplos atores), 40 algoritmos e ML-DSA pós-quântico padronizado (RFC 9964), tudo com zero alocação dinâmica. Consulte ChangeLog.md para as notas de versão completas.
O wolfCOSE 1.0.0 foi desenvolvido de acordo com o processo de desenvolvimento e QA da wolfSSL (consulte https://www.wolfssl.com/about/wolfssl-software-development-process-quality-assurance) e passou com sucesso nos critérios de qualidade.
wolfCOSE é um software livre licenciado sob GPLv3; consulte LICENSE para o texto completo.
Copyright (C) 2026 wolfSSL Inc.
Para licenciamento comercial, contratos de suporte profissional ou para discutir a adoção do wolfCOSE em seu ambiente de produção, entre em contato com a wolfSSL.
| Mensagem | RFC 9052 | API | Finalidade |
|---|
COSE_Sign1 | Sec. 4.2 | wc_CoseSign1_Sign / wc_CoseSign1_Verify | Assinatura de assinante único |
COSE_Sign | Sec. 4.1 | wc_CoseSign_Sign / wc_CoseSign_Verify | Múltiplos assinantes (assinaturas independentes sobre o mesmo payload) |
COSE_Encrypt0 | Sec. 5.2 | wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_Decrypt | AEAD de destinatário único |
COSE_Encrypt | Sec. 5.1 | wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_Decrypt | Múltiplos destinatários (um texto cifrado, muitos destinatários via Direct / AES-KW / ECDH-ES) |
COSE_Mac0 | Sec. 6.2 | wc_CoseMac0_Create / wc_CoseMac0_Verify | MAC de destinatário único |
COSE_Mac | Sec. 6.1 | wc_CoseMac_Create / wc_CoseMac_Verify | MAC de múltiplos destinatários (chave MAC compartilhada, distribuída aos destinatários) |
COSE_Key / COSE_KeySet | Sec. 7 | wc_CoseKey_Encode / wc_CoseKey_Decode | Serialização de chaves para todos os tipos de chave |
| Alvo | Descrição |
|---|
make all | Compila libwolfcose.a (somente biblioteca principal) |
make shared | Compila libwolfcose.so |
make test | Compila + executa os testes unitários de CBOR e COSE |
make tool | Compila a ferramenta CLI (tools/wolfcose_tool) |
make tool-test | Autoteste de round-trip para todos os 17 algoritmos |
make demo | Compila + executa a demo de ciclo de vida (11 algoritmos) |
make clean | Remove todos os artefatos de compilação |