#general #store #save #file #destroy

dono

Rust 的 Dono 密钥派生函数 crate

8 个稳定版本

使用旧的 Rust 2015

2.0.0 2016 年 10 月 5 日
1.1.5 2016 年 8 月 29 日
1.1.3 2016 年 8 月 28 日
1.1.1 2016 年 8 月 27 日
1.0.0 2016 年 8 月 21 日
Download history 13/week @ 2023-10-25 7/week @ 2023-11-01 11/week @ 2023-11-08 2/week @ 2023-11-15 9/week @ 2023-11-22 35/week @ 2023-11-29 1/week @ 2023-12-06 9/week @ 2023-12-13 9/week @ 2023-12-20 17/week @ 2023-12-27 1/week @ 2024-01-03 2/week @ 2024-01-10 18/week @ 2024-01-17 17/week @ 2024-01-24 17/week @ 2024-01-31

每月下载量:54

GPL-3.0 许可

20KB
387

Dono Rust crate

Build Status codecov crates.io version license

🚚 Rust 的 Dono 密钥派生函数 crate

关于 Dono

Dono 是一种密码派生工具,通过使用目标服务的简短描述从主密钥中派生密码。

您可以在项目的白皮书仓库下载 PDF中了解更多关于此项目的信息。

用法

要使用此 crate,请将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
dono = "2.0.0"

然后在您的 rust 代码中

extern crate dono;

这将为您提供访问 DonoDonoError 结构体的权限。

Dono

Dono 结构体提供了基本的密码散列实现。

可以使用 new() 函数创建 Dono 的新实例。这为您提供了访问 compute_password 函数的权限。

extern crate dono;

fn main() {
  let dono = dono::Dono::new();

  let key = "this_is_a_long_test_key".to_string();
  let label = "test".to_string();

  let password = dono.compute_password(&key, &label).unwrap();

  println!("password: {}", password);
}

标签

Label 结构体提供了一种易于使用的方法来从存储中索引、创建、更新和销毁标签。

标签具有以下属性

  • title - 持有当前标题,表示为 String
  • previous_title - 持有最后保存的标题,表示为 String
  • persisted - 持有一个布尔值,表示标签是否已持久化到存储中

可用的公共方法包括

  • new(label: &String) -> Label - 使用给定的标题创建一个新的 Label
  • new_saved(label: &String) -> Label - 与 new 相同,但将 persisted 设置为 true
  • changed() -> bool - 如果当前标题和上一个标题相同,则返回 true
  • save() -> Result<&Label, DonoError> - 将标签保存到存储中
  • destroy() -> Result<&Label, DonoError> - 从存储中销毁标签

模块方法

  • labels::all() - 返回一个包含存储中所有预构建Label结构的Vec

示例

extern crate dono;

fn main() {
  /* Initial state of the store:
   * github
   * facebook
   * twitter
   */

  // Return a Vec<Label> containing the github, facebook and twitter Labels
  let mut labels = dono::labels::all();

  // Get the twitter Label
  let mut twitter_label = labels.last_mut().unwrap();

  // Change the title from twitter to gitter
  twitter_label.title = "gitter".to_string();

  // Check if the value has changed
  println!("Value has changed? {}", twitter_label.changed());

  // Persist the changes
  twitter_label.save().unwrap();

  /* Current state of the store:
   * github
   * facebook
   * gitter
   */

  // Delete the gitter label
  twitter_label.destroy();

  /* Current state of the store:
   * github
   * facebook
   */

  // Create a new label
  let mut label  = dono::labels::Label::new(&"test".to_string());

  // Save the new label
  label.save();

  /* Current state of the store:
   * github
   * facebook
   * test
   */
}

错误

此库有一个名为DonoError的自定义错误,其中包含以下字符串字段

  • field - 指示哪个参数导致了错误
  • code - 与该错误关联的代码
  • description - 详细描述了出了什么问题以及可能的解决方案
  • message - 简要描述出了什么问题

错误代码

  • CP001 - 键太短
  • CP002 - 所需密码长度太长
  • SV001 - 无法打开存储文件
  • SV002 - 无法写入存储文件

使用的OSS

贡献

总是欢迎贡献!请注意,新功能和错误修复首先添加到develop分支。因此,所有拉取请求都应从develop分支提交。此外,请在提交自己的问题之前检查问题和拉取请求页面以查找类似的问题和解决方案。

当你提交错误报告时,请始终添加最小的工作示例并指定你使用的crate版本。

测试很重要!始终在拉取请求中测试你提交的代码。

许可

本项目受GPLv3许可。完整的许可文本可在此处找到。

依赖项

~7.5MB
~124K SLoC