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 硬件支持
每月144次下载
在 3 crates 中使用
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_ID
,NK_list_devices_by_cpuID
。这些函数可以通过调用NK_connect_with_path
和NK_list_devices
来替换,这些函数也有更干净的API。NK_enable_firmware_update_pro
,NK_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_time
、NK_status
、NK_set_unencrypted_read_only
、NK_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-rs
和 nitrokey-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