一个快速、便携且轻量级的COSE + CBOR实现,适用于嵌入式系统。支持PQC、FIPS 140-3、DO-178和MISRA C。由wolfSSL提供技术支持。
wolfCOSE 是一个轻量且快速的 C 库,实现了核心 CBOR 和 COSE 标准,并由 wolfSSL 提供密码学支持。
COSE_Sign1、COSE_Encrypt0 和 COSE_Mac0。COSE_Sign1 使用 ES256 可达到 66,538 次签名/秒和 26,437 次验证/秒,使用 ML-DSA-44 可达到 21,986 次签名/秒和 53,686 次验证/秒。请参阅性能与占用详情和 wolfCOSE 与同类对比。.data/.bss)。在调用者提供的缓冲区上运行,栈使用有界。I-CUBE-wolfCOSE),适用于 STM32CubeMX / IDE(详情)。ESP256、ESP384、ESP512、Ed25519、Ed448、PS256、PS384、PS512ML-DSA-44、ML-DSA-65、ML-DSA-87HSS-LMSAES-GCM(128 / 192 / 256)AES-CCM(变体)ChaCha20-Poly1305HMAC-SHA256、HMAC-SHA384、HMAC-SHA512AES-MACDirectAES Key WrapECDH-ES + HKDFwolfCOSE 已实现所有 RFC 9052 消息的单参与者和多参与者变体:
| 消息 | RFC 9052 | API | 用途 |
|---|---|---|---|
COSE_Sign1 | 第 4.2 节 | wc_CoseSign1_Sign / wc_CoseSign1_Verify | 单签名者签名 |
COSE_Sign | 第 4.1 节 | wc_CoseSign_Sign / wc_CoseSign_Verify | 多签名者(对同一负载的独立签名) |
COSE_Encrypt0 | 第 5.2 节 | wc_CoseEncrypt0_Encrypt / wc_CoseEncrypt0_Decrypt | 单接收者 AEAD |
COSE_Encrypt | 第 5.1 节 | wc_CoseEncrypt_Encrypt / wc_CoseEncrypt_Decrypt | 多接收者(一个密文,通过 Direct / AES-KW / ECDH-ES 分发给多个接收者) |
COSE_Mac0 | 第 6.2 节 | wc_CoseMac0_Create / wc_CoseMac0_Verify | 单接收者 MAC |
COSE_Mac | 第 6.1 节 | wc_CoseMac_Create / wc_CoseMac_Verify | 多接收者 MAC(共享 MAC 密钥,分发给各接收者) |
COSE_Key / COSE_KeySet | 第 7 节 | wc_CoseKey_Encode / wc_CoseKey_Decode | 所有密钥类型的密钥序列化 |
RFC 9338 计数器签名可以附加到本表中的任何带标签消息上。使用
wc_Cose_AddCounterSignature() 或
wc_Cose_AddCounterSignature0() 添加一个,然后使用相应的
wc_Cose_VerifyCounterSignature*() API 独立验证它。
wolfCOSE 需要 wolfSSL 作为其密码学后端。 最低支持版本:v5.8.0-stable。某些可选算法需要 更新的版本;有关特定功能的依赖下限和构建说明,请参阅入门指南。HSS/LMS(RFC 8778) 需要 v5.9.2-stable 或更高版本。
根据您需要的算法选择构建配置。
这将为您提供 COSE Sign1(ESP256/384/512)和 Encrypt0(AES-GCM):
cd wolfssl
./autogen.sh
./configure --enable-ecc --enable-aesgcm \
--enable-sha384 --enable-sha512 --enable-keygen
make && sudo make install
sudo ldconfig
启用的算法: ESP256、ESP384、ESP512、AES-GCM-128/192/256
为了获得更小的 wolfCrypt 占用,添加 --enable-cryptonly 以去掉 TLS
栈,并禁用 Sign1 + Encrypt0 构建从不使用的算法:
./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
有关在 MCU 上进一步压缩 wolfCOSE 和 wolfCrypt 的信息,请参阅为尺寸调优和为速度调优。
对于使用 ML-DSA-44/65/87 的纯后量子签名:
cd wolfssl
./autogen.sh
./configure --enable-cryptonly --enable-mldsa
make && sudo make install
sudo ldconfig
启用的算法: ML-DSA-44、ML-DSA-65、ML-DSA-87
(SHAKE-128/256 由 --enable-mldsa 自动引入。
wc_MlDsaKey API 需要高于 v5.9.1-stable 的 wolfSSL。)
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
| 目标 | 描述 |
|---|---|
make all | 构建 libwolfcose.a(仅核心库) |
make shared | 构建 libwolfcose.so |
make test | 构建并运行 CBOR 和 COSE 单元测试 |
make pkg-config-test | 验证 wolfSSL 包发现和覆盖 |
make eat-psa-test | 构建并运行显式的完整 RFC 9783 PSA/EAT 一致性套件 |
make eat-psa-min-buffers-test | 在 WOLFCOSE_MIN_BUFFERS 受限目标限制下运行完整 PSA/EAT 套件 |
make eat-psa-config-check | 验证 PSA/EAT 默认不存在,并验证功能门组合 |
make psa-eat-lean-verify | 构建并运行完整的 #tfm 仅验证 PSA/EAT RFC 向量示例 |
make psa-eat-demo | 签发、验证并评估当前 RFC 9783 设备入网令牌 |
make tool | 构建 CLI 工具(tools/wolfcose_tool) |
make tool-test | 所有 17 种算法的往返自测 |
make demo | 构建并运行生命周期演示(11 种算法) |
make clean | 移除所有构建产物 |
请参阅 examples/ 获取完整可运行代码:
sign1_demo.c、encrypt0_demo.c、mac0_demo.c:算法演示lifecycle_demo.c:完整的边缘到云工作流comprehensive/:算法矩阵测试scenarios/:固件签名、证明、车队配置psa_eat_demo.c:带测量评估的 RFC 9783 设备入网psa_eat_verify_lean.c:精简构建中的 RFC 9783 当前配置文件 Sign1 验证在每次 push 和 PR 时运行:
-fanalyzer--addon=misra 检查所有 wolfCOSE 代码路径bugprone-*、cert-*、clang-analyzer-*、misc-*)make coverage # Run tests with gcov
make coverage-force-failure # Include crypto failure path testing
官方 wolfCOSE 手册发布于 wolfssl.com/documentation/manuals/wolfcose: