25 个不稳定版本 (8 个破坏性版本)

0.9.0 2021年3月28日
0.8.0 2020年9月29日
0.7.1 2020年8月30日
0.7.0 2020年7月14日
0.1.1 2018年5月20日

#279 in 硬件支持

Download history 24/week @ 2024-03-11 24/week @ 2024-03-18 8/week @ 2024-03-25 51/week @ 2024-04-01 16/week @ 2024-04-08 25/week @ 2024-04-15 21/week @ 2024-04-22 25/week @ 2024-04-29 19/week @ 2024-05-06 22/week @ 2024-05-13 32/week @ 2024-05-20 35/week @ 2024-05-27 35/week @ 2024-06-03 33/week @ 2024-06-10 37/week @ 2024-06-17 33/week @ 2024-06-24

每月144次下载
3 crates 中使用

MITLGPL-3.0

170KB
2K SLoC

nitrokey-rs

为Rust提供对Nitrokey设备的访问的libnitrokey包装器。

使用方法

有关使用信息,请参阅API参考examples目录中的示例。您还可以查看使用此crate的Nitrokey设备的命令行界面crate nitrocli

兼容性

此crate提供了对Nitrokey Pro和Nitrokey Storage的libnitrokey C API的所有功能的访问:一般配置、一次性密码生成、密码保险库和Nitrokey Storage上的安全存储。

所需的libnitrokey版本是从源代码构建的。主机系统必须在默认库搜索路径中提供libhidapi-libusb0(Linux)或libhidapi(非Linux)。根据您的系统,您可能还必须安装Nitrokey udev规则

如果您想使用预编译版本的libnitrokey,您可以在构建期间设置USE_SYSTEM_LIBNITROKEY环境变量。在这种情况下,libnitrokey必须在库搜索路径中可用。

不支持的功能

以下由libnitrokey提供的功能是故意不支持的nitrokey-rs

  • NK_connect_with_IDNK_list_devices_by_cpuID。这些函数可以通过调用NK_connect_with_pathNK_list_devices来替换,这些函数也有更干净的API。
  • NK_enable_firmware_update_proNK_change_firmware_password_pro。这些函数执行尚未由Nitrokey Pro固件支持的命令。
  • NK_get_device_model. 我们知道我们连接到了哪个型号,因此可以在不调用 libnitrokey 的情况下提供此信息。
  • NK_is_AES_supported. 此函数对于具有最新固件版本的 Nitrokey 设备不再需要。
  • NK_send_startup. 目前,此函数与 NK_get_time 函数是冗余的。
  • NK_set_unencrypted_volume_rorw_pin_type_user:此函数仅适用于较旧的固件版本(v0.51之前)。由于 Nitrokey 存储固件可以轻松更新,我们不支持这些过时的版本。
  • NK_totp_get_timeNK_statusNK_set_unencrypted_read_onlyNK_set_unencrypted_read_write。这些函数已弃用。
  • NK_read_HOTP_slot。此函数仅适用于HOTP槽,不适用于TOTP。一旦 libnitrokey 支持这两种类型,我们将支持它。
  • 所有返回其他函数返回的数据字符串表示的 *_as_string 函数。

测试

该crate具有针对不同场景的测试:一些测试要求没有连接 Nitrokey 设备,其他测试要求连接 Nitrokey 存储或 Nitrokey Pro。我们使用 nitrokey-test crate来选择测试用例。您只需运行 cargo test 以自动检测连接的 Nitrokey 设备并运行适当的测试。如果您想手动选择测试,将 NITROKEY_TEST_GROUP 环境变量设置为 nodev(未连接设备)、pro(连接 Nitrokey Pro)或 storage(连接 Nitrokey 存储)。

请注意,测试假设设备的密码是出厂默认值(管理员PIN 12345678,用户PIN 123456,更新密码 12345678)并且已构建AES密钥。一些测试将覆盖存储在 Nitrokey 设备上的数据或执行出厂重置。如果您不希望销毁任何连接的 Nitrokey 设备上的所有数据,切勿执行测试!

测试套件包含一些执行时间非常长的测试,例如用随机数据填充 Nitrokey 存储的SD卡。默认情况下,这些测试被忽略。要执行测试,请使用 cargo test -- --ignored

目前,由于我们首先需要发布一个新的 nitrokey-rs 版本,该版本 nitrokey-test 可以使用,因此没有针对 Librem Key 的特定测试。

贡献

欢迎对此项目的贡献!请将补丁提交到邮件列表 ~ireas/[email protected]存档)并使用 [PATCH nitrokey-rs] 主题前缀。有关更多信息,请参阅 贡献指南

致谢

感谢 Nitrokey GmbH 提供两个 Nitrokey 设备以支持此 crate 的开发。感谢 Daniel Mueller 对 nitrokey-rsnitrokey-test crate 的贡献。

最低支持的 Rust 版本

此 crate 支持 Rust 1.40.0 或更高版本。

联系

对于错误报告、补丁、功能请求或其他消息,请发送邮件至 ~ireas/[email protected]存档)。

许可证

本项目采用MIT许可证。本仓库中包含的文档和配置文件采用Creative Commons Zero许可证。您可以在LICENSES目录中找到许可证文本。libnitrokey采用LGPL-3.0许可证。

nitrokey-rs符合REUSE规范3.0版

依赖项

~300–670KB
~12K SLoC