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 密码学
每月下载量 1,352
用于 6 个 crate(通过 psa-crypto)
6MB
128K SLoC
PSA 密码学 API Rust 包装器
这是一个低级别的包装器,它向 Rust 暴露了最小的低级别 C 接口。
依赖项
此 crate 提供了 PSA 密码学 API 的接口,因此链接到公开此接口的库。库的预期名称来自 API 的参考实现 - mbedcrypto。
如果库及其头文件目录已在本地上安装,您可以在构建时使用 MBEDTLS_LIB_DIR 和 MBEDTLS_INCLUDE_DIR 环境变量指定其位置(完整的绝对路径)。默认情况下尝试动态链接;如果您希望静态链接,可以启用 static 功能或传递 MBEDCRYPTO_STATIC 环境变量,设置为任何值。
或者,crate 将尝试从头开始构建库并将其静态链接。在这种情况下,启用 static 功能没有区别,并且无法允许动态链接。配置和构建 MbedTLS 的要求可以在其仓库主页上找到。
默认情况下,mbedcrypto 库自身以及需要用于内联函数的 shim 库(没有前缀)。如果启用了 prefix 功能,这两个库都会被重命名,并添加前缀 psa_crypto_X_Y_Z_。此外,那些库中每个全局定义的符号也会添加这个前缀。这是为了避免与其他可能使用相同库(包括此库的其他版本)在链接时发生冲突。符号重命名使用 nm 和 objcopy 命令。
链接和生成特定实现的 API 由默认启用的 operations 功能控制。因此,如果您只需要 API 的规范定义部分(即常量和类型),您只需禁用默认功能。
您可能只想使用此 crate 的接口部分(包括实现定义的位)来构建,例如,PSA 安全元素驱动程序。使用 interface 功能,此 crate 将只生成您需要传递的 MBEDTLS_INCLUDE_DIR 变量所对应的实现定义的类型及其辅助器/访问器。
交叉编译
interface 和 operations 功能需要一个 C 工具链。在交叉编译时,将自动选择合适的 C 工具链。如果您的系统上没有可用的工具链,编译将失败。
CI 当前测试以下目标的交叉编译
aarch64-unknown-linux-gnuarmv7-unknown-linux-gnueabihf