19 个版本 (10 个重大更改)

0.12.0 2023年10月16日
0.10.0 2023年3月15日
0.9.3 2022年9月2日
0.9.2 2022年2月16日
0.3.0 2020年7月14日

#1885 in 密码学

Download history 304/week @ 2024-04-08 217/week @ 2024-04-15 273/week @ 2024-04-22 364/week @ 2024-04-29 755/week @ 2024-05-06 229/week @ 2024-05-13 263/week @ 2024-05-20 301/week @ 2024-05-27 302/week @ 2024-06-03 437/week @ 2024-06-10 436/week @ 2024-06-17 428/week @ 2024-06-24 406/week @ 2024-07-01 306/week @ 2024-07-08 323/week @ 2024-07-15 290/week @ 2024-07-22

每月下载量 1,352
用于 6 个 crate(通过 psa-crypto

Apache-2.0

6MB
128K SLoC

C 99K SLoC // 0.1% comments Shell 12K SLoC // 0.1% comments Visual Studio Project 9K SLoC Python 4.5K SLoC // 0.4% comments Perl 1.5K SLoC // 0.3% comments Rust 850 SLoC // 0.1% comments Visual Studio Solution 704 SLoC C++ 73 SLoC // 0.2% comments Batch 25 SLoC GDB Script 22 SLoC // 0.7% comments Bitbake 7 SLoC TCL 4 SLoC

PSA 密码学 API Rust 包装器

这是一个低级别的包装器,它向 Rust 暴露了最小的低级别 C 接口。

Crates.io Code documentation CI tests

依赖项

此 crate 提供了 PSA 密码学 API 的接口,因此链接到公开此接口的库。库的预期名称来自 API 的参考实现 - mbedcrypto

如果库及其头文件目录已在本地上安装,您可以在构建时使用 MBEDTLS_LIB_DIRMBEDTLS_INCLUDE_DIR 环境变量指定其位置(完整的绝对路径)。默认情况下尝试动态链接;如果您希望静态链接,可以启用 static 功能或传递 MBEDCRYPTO_STATIC 环境变量,设置为任何值。

或者,crate 将尝试从头开始构建库并将其静态链接。在这种情况下,启用 static 功能没有区别,并且无法允许动态链接。配置和构建 MbedTLS 的要求可以在其仓库主页上找到。

默认情况下,mbedcrypto 库自身以及需要用于内联函数的 shim 库(没有前缀)。如果启用了 prefix 功能,这两个库都会被重命名,并添加前缀 psa_crypto_X_Y_Z_。此外,那些库中每个全局定义的符号也会添加这个前缀。这是为了避免与其他可能使用相同库(包括此库的其他版本)在链接时发生冲突。符号重命名使用 nmobjcopy 命令。

链接和生成特定实现的 API 由默认启用的 operations 功能控制。因此,如果您只需要 API 的规范定义部分(即常量和类型),您只需禁用默认功能。

您可能只想使用此 crate 的接口部分(包括实现定义的位)来构建,例如,PSA 安全元素驱动程序。使用 interface 功能,此 crate 将只生成您需要传递的 MBEDTLS_INCLUDE_DIR 变量所对应的实现定义的类型及其辅助器/访问器。

交叉编译

interfaceoperations 功能需要一个 C 工具链。在交叉编译时,将自动选择合适的 C 工具链。如果您的系统上没有可用的工具链,编译将失败。

CI 当前测试以下目标的交叉编译

  • aarch64-unknown-linux-gnu
  • armv7-unknown-linux-gnueabihf

无运行时依赖