9个版本
0.1.1 | 2023年6月22日 |
---|---|
0.1.0 | 2022年5月5日 |
0.0.8 | 2020年9月4日 |
0.0.7 | 2020年6月30日 |
0.0.5 | 2020年3月31日 |
#121 in 身份验证
每月42次下载
在 7 crate 中使用
95KB
527 行
瓦德
关于
Vade
是一个用于以一致的方式在不同提供者和平台上处理VC和DID的框架。即使它们背后的实际实现和逻辑可能发生变化,Vade
仍然提供了一个一致的接口来处理它们。它考虑到 wasm支持,不仅可以运行在服务器上,还可以运行在不同客户端上,例如资源有限的物联网设备。
"瓦德"这个名字是"VC和DID引擎"的缩写,专注于处理VC和DID。它旨在提供一个一致的接口以进行操作,同时支持将实际工作移入插件。
该库目前处于开发阶段。行为以及提供的导出可能随时间而变化。
关于 Vade
的功能和它们的意义的文档可以在 此处
找到。
插件
Vade
依赖于插件来运行特定提供者的交互逻辑。以下是可以看到当前插件集
DID插件
方法 | 信息 |
---|---|
did:evan | |
did:example | vade-example-plugin |
(通用解析器方法列表) | 开发中 |
更多即将推出。要编写自己的插件,请参阅 编写自己的插件。
VC插件
方法 | 信息 |
---|---|
did:evan |
更多即将推出。要编写自己的插件,请参阅 编写自己的插件。
示例用法
use vade::Vade;
use some_crate:ExamplePlugin;
use vade::VadePlugin;
struct ExamplePlugin { }
impl ExamplePlugin { pub fn new() -> Self { ExamplePlugin {} } }
impl VadePlugin for ExamplePlugin {}
async fn example_vade_usage() {
let ep: ExamplePlugin = ExamplePlugin::new();
let mut vade = Vade::new();
vade.register_plugin(Box::from(ep));
match vade.did_create("did:example", "", "").await {
Ok(results) => {
let result = results[0].as_ref().unwrap().to_string();
println!("created did: {}", result);
},
Err(e) => panic!(format!("could not create did; {}", e)),
};
}
如您所见,一个 ExamplePlugin
的实例被创建并传递给一个 Vade
实例,并使用 register_plugin
进行注册。为了成为有效的参数,ExamplePlugin
需要实现 VadePlugin
。
Vade
将与 VadePlugin
中函数同名的一切函数调用委托给所有已注册的插件,因此这种调用结果是一个可选的 String
值的 Vec
(Vec<Option<String>>
)。
基本插件流程
插件相关函数的调用遵循以下规则集
- 一个
Vade
实例将所有插件相关函数的调用委托给所有已注册的插件 - 这些
VadePlugin
实例可能会处理或不会处理请求 - 请求可能因为未实现或由于插件内部逻辑(例如,如果插件不支持 did 方法,则通常忽略该方法的请求)而被忽略
- 被忽略的插件请求不会出现在结果
Vec
中,因此一个Vade
可能已注册多个插件,但如果只有一个插件支持某种 did 方法,则与该方法相关的调用将只产生单个结果
Vade 功能
当前的功能集可以分为 3 组
- 管理函数
- DID 交互
- 零知识证明 VC 交互
管理函数
注册一个新的插件。有关它们如何工作的详细信息,请参阅 VadePlugin
。
DID 交互
创建一个新的 DID。根据插件实现,可能还会持久化其 DID 文档。
获取有关 DID 的数据。这通常返回一个 DID 文档。
更新与 DID 相关的数据。根据插件实现,可能还会持久化其 DID 文档。
零知识证明 VC 交互
vc_zkp_create_credential_schema
创建一个新的零知识证明凭证模式。该模式指定凭证包含的属性,包括可选的和必须的。
vc_zkp_create_credential_definition
创建一个新的零知识证明凭证定义。凭证定义包含加密密钥材料,并由发行者用于颁发凭证,因此需要在颁发之前创建。凭证定义始终绑定到一个凭证模式。
vc_zkp_create_credential_proposal
创建一个新的零知识证明凭证提案。这是凭证颁发流程中的第一消息。
vc_zkp_create_credential_offer
创建一个新的零知识证明凭证出价。这是对凭证提案的响应。
请求一个凭证。这是对凭证出价的响应。
vc_zkp_create_revocation_registry_definition
创建一个新的撤销注册表定义。定义包括公共和私有两部分。公共部分包含创建非撤销证明所需的加密材料。私有部分需要由注册表所有者保存,并用于撤销凭证。
vc_zkp_update_revocation_registry
更新零知识证明的撤销注册表。在撤销一个或多个凭证后,这一步是必要的。
发行新的凭证。这需要已发行的架构、凭证定义、活动撤销注册表和凭证请求消息。
撤销凭证。撤销后,发布的撤销注册表需要更新为该函数返回的信息。
请求一个或多个特定架构下发行的凭证的零知识证明。
展示零知识证明凭证的证明。证明展示是对证明请求的响应。
验证证明展示中发送的一个或多个证明。
自定义函数
调用自定义函数。插件可以订阅此类自定义调用,这些调用不属于默认的 Vade
功能集,这允许在使用 `Vade` 时添加自定义插件逻辑。例如,这可能包括连接处理和密钥生成。
除了管理函数外,所有函数都将委托给插件。插件处理遵循以下规则
- 一个
Vade
实例将所有插件相关函数的调用委托给所有已注册的插件 - 这些
VadePlugin
实例可能会处理或不会处理请求 - 请求可能因为未实现或由于插件内部逻辑(例如,如果插件不支持 did 方法,则通常忽略该方法的请求)而被忽略
- 被忽略的插件请求不会出现在结果
Vec
中,因此一个Vade
可能已注册多个插件,但如果只有一个插件支持某种 did 方法,则与该方法相关的调用将只产生单个结果
编写自己的插件
编写自己的插件相当简单,示例及其编写细节可以在 VadePlugin
文档中找到。
Wasm 支持
Vade 支持 Wasm!^^
有关如何在 Wasm 中使用 Vade
的示例和指南,请查看我们的 vade-wasm-example 项目。
依赖关系
~3–13MB
~137K SLoC