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 日 |
每月下载量:54
20KB
387 行
Dono Rust crate
🚚 Rust 的 Dono 密钥派生函数 crate
关于 Dono
Dono 是一种密码派生工具,通过使用目标服务的简短描述从主密钥中派生密码。
您可以在项目的白皮书仓库或下载 PDF中了解更多关于此项目的信息。
用法
要使用此 crate,请将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
dono = "2.0.0"
然后在您的 rust 代码中
extern crate dono;
这将为您提供访问 Dono
和 DonoError
结构体的权限。
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
- 持有当前标题,表示为 Stringprevious_title
- 持有最后保存的标题,表示为 Stringpersisted
- 持有一个布尔值,表示标签是否已持久化到存储中
可用的公共方法包括
new(label: &String) -> Label
- 使用给定的标题创建一个新的 Labelnew_saved(label: &String) -> Label
- 与new
相同,但将persisted
设置为 truechanged() -> bool
- 如果当前标题和上一个标题相同,则返回 truesave() -> 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
- rust-crypto - PBKDF2和SHA256算法实现
- regex - 通用正则表达式匹配和字符串替换
- rustc-serialize - 对象序列化
贡献
总是欢迎贡献!请注意,新功能和错误修复首先添加到develop
分支。因此,所有拉取请求都应从develop
分支提交。此外,请在提交自己的问题之前检查问题和拉取请求页面以查找类似的问题和解决方案。
当你提交错误报告时,请始终添加最小的工作示例并指定你使用的crate版本。
测试很重要!始终在拉取请求中测试你提交的代码。
许可
本项目受GPLv3许可。完整的许可文本可在此处找到。
依赖项
~7.5MB
~124K SLoC