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-gnu
armv7-unknown-linux-gnueabihf