FreeRTOS/coreHTTP
GitHub: FreeRTOS/coreHTTP
一个专为嵌入式设备设计的轻量级 C 语言 HTTP 1.1 客户端库,具有极低依赖和经过形式化验证的内存安全性。
Stars: 110 | Forks: 89
# coreHTTP 客户端库
**[本库当前及先前版本的 API 文档页面可在此处找到](https://freertos.github.io/coreHTTP/)**
本仓库包含一个专为嵌入式平台设计的 C 语言 HTTP 客户端库。除了标准 C 库、[llhttp](https://github.com/nodejs/llhttp) 和用户自定义实现的传输接口外,它不依赖任何其他额外的库。本库基于 [MIT 开源许可证](LICENSE) 分发。
本库经过了代码质量检查,包括验证所有函数的 [GNU Complexity](https://www.gnu.org/software/complexity/manual/complexity.html) 得分均未超过 8。本库还经过了 [Coverity 静态分析](https://scan.coverity.com/)的静态代码分析,并通过 [CBMC 自动化推理工具](https://www.cprover.org/cbmc/)验证了内存安全性和数据结构不变性。
请参阅[此处](./docs/doxygen/include/size_table.md)了解本库的内存要求。
**coreHTTP v3.1.1 [源代码](https://github.com/FreeRTOS/coreHTTP/tree/v3.1.1/source) 是 [FreeRTOS 202406.00 LTS](https://github.com/FreeRTOS/FreeRTOS-LTS/tree/202406.00-LTS) 发行版的一部分。**
## coreHTTP 配置文件
HTTP 客户端库公开了构建该库所需的配置宏。所有配置及其默认值列表定义在 [core_http_config_defaults.h](source/include/core_http_config_defaults.h) 中。为了给这些配置宏提供自定义值,用户应用程序可以向该库提供一个名为 `core_http_config.h` 的自定义配置文件。
默认情况下,构建本库需要提供 `core_http_config.h` 自定义配置。若要禁用此要求并使用默认配置值构建本库,请在编译时提供 `HTTP_DO_NOT_USE_CUSTOM_CONFIG` 预处理宏。
**可以通过以下任一方式构建 HTTP 客户端库**:
- 在应用程序中定义 `core_http_config.h` 文件,并将其添加到库构建的 include 目录中。**或者**
- 为库构建定义 `HTTP_DO_NOT_USE_CUSTOM_CONFIG` 预处理宏。
## 构建库
[httpFilePaths.cmake](httpFilePaths.cmake) 文件包含了构建 HTTP 客户端库所需的所有源文件和头文件包含路径的信息。
如[前一节](#coreHTTP-Config-File)所述,构建 HTTP 客户端库需要提供自定义配置文件(即 `core_http_config.h`)或者 `HTTP_DO_NOT_USE_CUSTOM_CONFIG` 宏。
有关使用 `httpFilePaths.cmake` 文件构建 HTTP 库的 CMake 示例,请参阅 [test/CMakeLists.txt](test/CMakeLists.txt) 文件中的 `coverity_analysis` 库目标。
## 构建单元测试
### 平台前提条件
- 运行单元测试需要以下条件:
- **C90 编译器**(如 gcc)
- **CMake 3.13.0 或更高版本**
- 本仓库的 [CMock 测试框架](https://github.com/ThrowTheSwitch/CMock)需要 **Ruby 2.0.0 或更高版本**。
- 运行代码覆盖率目标需要以下条件:
- **gcov**
- **lcov**
### 构建**单元测试**的步骤
1. 转到本仓库的根目录。
2. 运行 _cmake_ 命令:
`cmake -S test -B build -DBUILD_CLONE_SUBMODULES=ON `
3. 运行以下命令构建库和单元测试:`make -C build all`
4. 生成的测试可执行文件将位于 `build/bin/tests` 文件夹中。
5. 运行 `cd build && ctest` 以执行所有测试并查看测试运行摘要。
## CBMC
要了解有关 CBMC 和证明的更多信息,请查看[此处](https://model-checking.github.io/cbmc-training)的培训材料。
`test/cbmc/proofs` 目录包含 CBMC 证明。
要运行这些证明,您需要按照[此处](https://model-checking.github.io/cbmc-training/installation.html)的说明安装 CBMC 及其他工具。
## 参考示例
AWS IoT Device SDK for Embedded C 仓库中包含了在 POSIX 平台上使用 HTTP 客户端库的演示,可在[此处](https://github.com/aws/aws-iot-device-sdk-embedded-C/tree/main/demos/http)查看。这些可以作为库 API 的参考示例。
## 文档
### 现有文档
对于预生成的文档,请查看以下位置链接的文档:
| 位置 |
| :------------------------------------------------------------------------------------------------------------------: |
| [AWS IoT Device SDK for Embedded C](https://github.com/aws/aws-iot-device-sdk-embedded-C#releases-and-documentation) |
| [API 文档](https://freertos.github.io/coreHTTP/main/index.html) |
请注意,不同仓库中包含的最新 coreHTTP 版本可能有所不同。
### 生成文档
Doxygen 参考文档是使用 Doxygen 1.9.6 版本创建的。要从本仓库根目录生成 Doxygen 页面,请运行以下命令:
```
doxygen docs/doxygen/config.doxyfile
```
## 贡献
请参阅 [CONTRIBUTING.md](./.github/CONTRIBUTING.md) 了解有关贡献的信息。
标签:Bash脚本, FreeRTOS, 内核驱动, 安全专业人员, 客户端加密, 嵌入式, 物联网, 网络协议