10个版本 (6个稳定版本)
1.2.1 | 2024年6月27日 |
---|---|
1.2.0 | 2024年6月25日 |
0.2.2 | 2024年5月22日 |
0.1.0 | 2024年5月21日 |
#106 in 认证
每月65次下载
在 konpeito 中使用
81KB
1.5K SLoC
Keyring-search v1
用法
要在项目中使用此库,请将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
keyring-search = "1"
这是一个跨平台的库,用于搜索特定平台的密钥库。
目前支持的平台有Linux、Windows、macOS和iOS。
设计
这个crate原本计划作为keyring的一个功能,提供了基于用户提供的搜索参数对特定平台密钥库的广泛搜索。
Windows
Windows机器可以选择按'用户'、'服务'或'target'进行搜索。
use keyring_search::{Search, Limit, List};
let result = Search::new()
.expect("ERROR")
.by_user("test-user");
let list = List::list_credentials(result, Limit::All)
.expect("Error");
println!("{}", list);
Linux - Secret Service
如果使用Linux Secret Service平台,密钥库存储为HashMap,因此可以更自由地搜索密钥。使用不同的搜索函数将搜索这些密钥,但by_target
搜索application
密钥除外。要更精确地控制by
参数,请调用特定平台的search_items
。
use keyring_search::{Search, Limit, List};
let result = Search::new()
.expect("ERROR")
.by_user("test-user");
let list = List::list_credentials(result, Limit::All)
.expect("Error");
println!("{}", list);
Linux - Keyutils
如果使用Linux Keyutils平台,密钥库是非持久的,更多用作安全缓存。要利用对任何密钥环的搜索,请直接调用此函数。通用平台无关搜索默认为session
密钥环,并忽略by
参数。要自定义对除session
以外的其他密钥环的搜索,请使用keyutils模块中的search_by_keyring
。
use keyring_search::{Search, Limit, List};
let result = Search::new()
.expect("ERROR")
.by_user("test-user@test-service");
let list = List::list_credentials(result, Limit::All)
.expect("Error");
println!("{}", list);
MacOS
MacOS机器可以选择按'帐户'、'服务'或'label'进行搜索。by_user
按帐户搜索,by_target
按label搜索,by_service
按服务搜索
use keyring_search::{Search, Limit, List};
let result = Search::new()
.expect("ERROR")
.by_user("test-user");
let list = List::list_credentials(result, Limit::All)
.expect("Error");
println!("{}", list);
错误
SearchError由于在创建或执行搜索过程中遇到任何错误而返回,无论是正则表达式、格式化还是搜索构建。当没有找到结果时返回NoResults。当向函数传递或从函数返回意外参数时返回Unexpected。
示例
在示例中捆绑了一个可工作的命令行应用程序:默认:cargo run --example cli
(默认为当前目标,启动时需要输入查询)由用户
cargo运行 --示例cli ----user test-user
由服务提供
cargo运行 --示例cli ----service test-service
由目标指定
cargo运行 --示例cli ----target test-target
在以下任何一个命令后添加子命令 limit
并跟一个数字,将结果限制到该数量。
cargo运行 --示例cli ----target test-target limit 2
如果没有使用 limit
参数,默认显示所有结果,尽管传递 all
也会得到相同的结果。
cargo运行 --示例cli ----target test-target all
iOS模块不搜索用于存储密码的iCloud密钥链。相反,它搜索用于凭证的应用容器。要为iOS构建库,请使用
cargolipo --manifest-pathexamples/ios/rs/Cargo.toml --发布
在项目目录中。这应该在项目中已经链接。虽然文章较旧,并非所有概述的架构仍在使用中,但有关在iOS上构建Rust的信息可以在以下位置找到:[rust on ios](https://mozilla.github.io/firefox-browser-architecture/experiments/2017-09-06-rust-on-ios.html)。值得注意的是,iOS应用程序仅通过在按下搜索按钮时创建凭证来模拟凭证搜索。要获取结果,选择“用户”并输入“testAccount”,然后按搜索按钮(“服务”和“testService”也会工作)以查看此功能。
客户端测试
对搜索平台的基线测试。
平台
MacOS、Windows、iOS、Linux-Keyutils/Secret Service
许可证
根据您的要求,许可如下
- Apache License,版本2.0,[LICENSE-APACHE](https://github.com/wiimmers/keyring-search/blob/bdf116fa5db911947a4a967864a3c7442425c15f/LICENSE-APACHE) 或 [https://apache.ac.cn/licenses/LICENSE-2.0](https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 ([LICENSE-MIT](https://github.com/wiimmers/keyring-search/blob/bdf116fa5db911947a4a967864a3c7442425c15f/LICENSE-MIT) 或 [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT))
。
依赖项
~0-13MB
~161K SLoC