wolfSSL/wolfCOSE

GitHub: wolfSSL/wolfCOSE

wolfCOSE是一个轻量级的COSE + CBOR实现,适用于嵌入式系统安全。

Stars: 73 | Forks: 7

# wolfCOSE wolfCOSE 是一个轻量级的 C 库,使用 [wolfSSL](https://www.wolfssl.com/) 作为加密后端实现了 [CBOR (RFC 8949)](https://www.rfc-editor.org/rfc/rfc8949) 和 [COSE (RFC 9052/9053)](https://www.rfc-editor.org/rfc/rfc9052). ## 主要功能 - **完整的 RFC 9052 消息集**:包括所有六种 COSE 消息类型,包括多签名者 `COSE_Sign` 和多接收者 `COSE_Encrypt` / `COSE_Mac` - **后量子签名**:在所有三个安全级别上使用 ML-DSA (FIPS 204) - **40 种算法**涵盖签名、加密、MAC 和密钥分发 - **零动态分配**:所有操作都使用调用者提供的缓冲区 - **小巧的体积**:7.5 KB `.text` 最小构建(Sign1+ECC),25.6 KB 完整(40 算法),零 `.data`/`.bss` - **完整的 COSE 生命周期在 ~<1KB RAM**(不包括 wolfCrypt 内部)中 - **通过 wolfCrypt FIPS 证书 #4718 路径到 FIPS 140-3**(唯一的加密依赖项) ## 支持的算法 **签名:** `ES256, ES384, ES512, EdDSA (Ed25519/Ed448), PS256/384/512, ML-DSA-44/65/87` **加密:** `AES-GCM (128/192/256), ChaCha20-Poly1305, AES-CCM 变体` **MAC:** `HMAC-SHA256/384/512, AES-MAC` **密钥分发:** `直接,AES 密钥封装,ECDH-ES+HKDF` ## COSE 消息类型(RFC 9052) wolfCOSE 实现了所有 RFC 9052 消息的单个演员和多演员变体: | 消息 | RFC 9052 | API | 目的 | |---|---|---|---| | `COSE_Sign1` | Sec. 4.2 | `wc_CoseSign1_Sign` / `wc_CoseSign1_Verify` | 单签名者签名 | | `COSE_Sign` | Sec. 4.1 | `wc_CoseSign_Sign` / `wc_CoseSign_Verify` | **多签名者**(对相同有效负载的独立签名) | | `COSE_Encrypt0` | Sec. 5.2 | `wc_CoseEncrypt0_Encrypt` / `wc_CoseEncrypt0_Decrypt` | 单接收者 AEAD | | `COSE_Encrypt` | Sec. 5.1 | `wc_CoseEncrypt_Encrypt` / `wc_CoseEncrypt_Decrypt` | **多接收者**(一个密文,多个接收者通过直接/AES-KW/ECDH-ES) | | `COSE_Mac0` | Sec. 6.2 | `wc_CoseMac0_Create` / `wc_CoseMac0_Verify` | 单接收者 MAC | | `COSE_Mac` | Sec. 6.1 | `wc_CoseMac_Create` / `wc_CoseMac_Verify` | **多接收者** MAC(共享 MAC 密钥,分发给接收者) | | `COSE_Key` / `COSE_KeySet` | Sec. 7 | `wc_CoseKey_Encode` / `wc_CoseKey_Decode` | 所有密钥类型的密钥序列化 | ## 前置条件(wolfSSL) wolfCOSE 需要 [wolfSSL](https://www.wolfssl.com/) 作为其加密后端。**最低支持版本:v5.8.0-stable**(第一个带有公共 `wc_ForceZero` 符号的版本)。后量子签名使用规范 FIPS 204 `wc_MlDsaKey` API,该 API 在 wolfSSL **v5.9.1-stable 之后**提供;针对 v5.8.0–v5.9.1 构建 wolfCOSE 适用于除 ML-DSA 之外的所有内容。较老的 5.x 版本在技术上可以支持,但需要源代码级别的更改;请联系 [wolfSSL](https://www.wolfssl.com/contact/) 获取商业支持。 根据您需要的算法选择构建配置。 ### 最小构建(ECC + AES-GCM) 这为您提供了 COSE Sign1(ES256/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 ``` **启用的算法:** ES256, ES384, ES512, 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 上进一步缩小 wolfCrypt 的信息,请参阅 [Tuning for Constrained Targets](docs/Macros.md#tuning-for-constrained-targets) ### 最小构建(仅后量子 / ML-DSA) 对于纯后量子签名使用 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 需要 wolfSSL 新于 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 ``` ## 构建 ``` # 核心库(libwolfcose.a) make # 运行单元测试 make test # 构建并运行 CLI 工具往返测试(所有算法) make tool-test # 运行生命周期演示(11个算法) make demo ``` ### 构建目标 | 目标 | 描述 | |--------|-------------| | `make all` | 构建 `libwolfcose.a`(仅核心库) | | `make shared` | 构建 `libwolfcose.so` | | `make test` | 构建 + 运行 CBOR 和 COSE 单元测试 | | `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/`:固件签名、证明、车队配置 ## CI / 测试 在每次推送和 PR 上运行: - **构建 + 测试**:Ubuntu,macOS,GCC 10-14,Clang 14-18 - **综合测试**:约 240 种算法组合测试 - **静态分析**:cppcheck,Clang 分析器,GCC `-fanalyzer` - **MISRA C 2012**:cppcheck `--addon=misra` 检查所有 wolfCOSE 代码路径 - **MISRA C 2023**:严格的 GCC 警告和 clang-tidy (`bugprone-*`,`cert-*`,`clang-analyzer-*`,`misc-*`) - **Coverity Scan**:夜间缺陷分析 - **高级内部静态分析**:Fenrir wolfssl 高级静态分析工具 - **代码覆盖率**:wolfcose.c 99.3%,wolfcose_cbor.c 100% ``` make coverage # Run tests with gcov make coverage-force-failure # Include crypto failure path testing ``` Coverity Scan Build Status CI Status Skoll Review Fenrir Review ## 文档 完整的文档可在 [Wiki](https://github.com/wolfSSL/wolfCOSE/wiki)中找到: - [入门](https://github.com/wolfSSL/wolfCOSE/wiki/Getting-Started):构建说明和第一步 - [消息类型](https://github.com/wolfSSL/wolfCOSE/wiki/Message-Types):所有六种 RFC 9052 消息(Sign1、Sign、Encrypt0、Encrypt、Mac0、Mac)以及代码示例 - [算法](https://github.com/wolfSSL/wolfCOSE/wiki/Algorithms):40 种支持算法的完整列表及其 COSE ID - [API 参考](https://github.com/wolfSSL/wolfCOSE/wiki/API-Reference):函数签名、数据结构、错误代码 - [宏](https://github.com/wolfSSL/wolfCOSE/wiki/Macros):编译时配置选项 - [测试](https://github.com/wolfSSL/wolfCOSE/wiki/Testing):测试基础设施、覆盖率以及故障注入 - [MISRA 合规性](https://github.com/wolfSSL/wolfCOSE/wiki/MISRA-Compliance):MISRA C:2012 和 C:2023 合规性状态和偏差理由 - [项目结构](https://github.com/wolfSSL/wolfCOSE/wiki/Project-Structure):源文件布局 ## 许可证 wolfCOSE 是免费软件,根据 [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html)许可。 版权所有 (C) 2026 wolfSSL Inc。 ## 支持 有关商业许可、专业支持合同或讨论将 wolfCOSE 移入您的生产环境,请联系 [wolfSSL](https://www.wolfssl.com/contact/)。
标签:AES-CCM, AES-GCM, AES-MAC, CBOR, ChaCha20-Poly1305, COSE, DO-178, FIPS 140-3, FIPS认证, HMAC-SHA256, LangChain, MAC算法, MISRA C, ML-DSA, PQC, RFC 8949, RFC 9052, wolfSSL, 内存占用小, 加密库, 加密算法, 后量子密码, 安全协议, 客户端加密, 密钥分发, 嵌入式系统, 消息类型, 签名算法, 轻量级, 零动态分配