12个稳定版本 (4个主要版本)
4.0.0 | 2024年6月21日 |
---|---|
3.1.0 | 2024年6月7日 |
3.0.1 | 2023年1月31日 |
2.0.2 | 2022年6月28日 |
0.2.0 | 2016年2月10日 |
#19 in 加密学
150,139 下载/每月
用于 92 个crate(13个直接使用)
110KB
2K SLoC
Secret Service
通过DBus与FreeDesktop Secret Service API交互的Rust库。
基本用法
secret-service
默认使用纯Rust实现,因此不需要在Ubuntu上安装像 libdbus-1-dev
或 libdbus-1-3
这样的系统库。
在Cargo.toml中
添加crate时,必须选择代表所选运行时和加密后端的特性。例如
[dependencies]
secret-service = { version = "3.0.0", features = ["rt-tokio-crypto-rust"] }
可用的特性标志
rt-async-io-crypto-rust
:使用async-std
运行时和通过RustCrypto
的纯Rust加密。rt-async-io-crypto-openssl
:使用async-std
运行时和OpenSSL作为加密提供者。rt-tokio-crypto-rust
:使用tokio
运行时和通过RustCrypto
的纯Rust加密。rt-tokio-crypto-openssl
:使用tokio
运行时和OpenSSL作为加密提供者。
请注意,带有 -openssl
特性的设置需要系统上提供OpenSSL,或者必须在 cargo
依赖树中激活 openssl
crate的 bundled
特性。
在源代码中(以下示例适用于 --bin
,而非 --lib
)。此示例使用 tokio
作为异步运行时。
use secret_service::SecretService;
use secret_service::EncryptionType;
use std::{collections::HashMap, error::Error};
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
// initialize secret service (dbus connection and encryption session)
let ss = SecretService::connect(EncryptionType::Dh).await?;
// get default collection
let collection = ss.get_default_collection().await?;
// create new item
collection.create_item(
"test_label", // label
HashMap::from([("test", "test_value")]), // properties
b"test_secret", // secret
false, // replace item with same attributes
"text/plain" // secret content type
).await?;
// search items by properties
let search_items = ss.search_items(
HashMap::from([("test", "test_value")])
).await?;
let item = search_items.unlocked.first().ok_or("Not found!")?;
// retrieve secret from item
let secret = item.get_secret().await?;
assert_eq!(secret, b"test_secret");
// delete item (deletes the dbus object, not the struct instance)
item.delete().await?;
Ok(())
}
功能
- SecretService:初始化dbus,创建明文/加密会话。
- 集合:创建、删除、搜索。
- 项:创建、删除、搜索、获取/设置秘密。
变更日志
请参阅 GitHub发布列表及其发布说明
版本控制
此库功能齐全,大部分已稳定其API。然而,由于此crate几乎完全依赖于 zbus
crate,我们尝试将主要版本发布与其保持一致,以处理破坏性更改并随着更广泛的 zbus
生态系统一起发展。
许可证
许可协议为以下之一
- Apache许可证,版本2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- 麻省理工学院许可证(《LICENSE-MIT》或http://opensource.org/licenses/MIT)
根据您的选择。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交给作品并包含在内的任何贡献,都将按照上述方式双重许可,不附加任何额外条款或条件。
依赖关系
~7-19MB
~276K SLoC