6 个版本
0.3.2 | 2023年6月30日 |
---|---|
0.3.1 | 2023年4月24日 |
0.3.0 | 2023年3月8日 |
0.2.0 | 2022年3月4日 |
0.1.0 | 2021年4月14日 |
892 在 命令行工具 中
94 每月下载
用于 didkit-http
145KB
2.5K SLoC
DIDKit CLI
DIDKit 以命令行程序的形式提供其功能,程序名为 didkit
。
构建
$ cargo build
安装
$ cargo install --path .
命令
didkit help
输出 didkit
及其子命令的帮助信息。
didkit generate-ed25519-key
生成 Ed25519 密钥对并以 JWK 格式 输出。
didkit key-to-did<method_pattern>
给定一个 JWK 和一个受支持的 DID 方法名称或模式,输出相应的 DID。
didkit key-to-verification-method<method_pattern>
给定一个 JWK 和一个受支持的 DID 方法名称或模式,输出相应的 验证方法。
选项
-k, --key-path <file>
(必需,与 jwk 冲突) - JWK 文件名-j, --jwk <jwk>
(必需,与 key-path 冲突) - JWK。
支持的 DID 方法名称和模式
key
- did:key (Ed25519, P-256 Secp256k1)tz
- did:tz (Ed25519, P-256 Secp256k1)ethr
- did:ethr (Secp256k1)sol
-did:sol
(Ed25519)pkh:[…]
-did:pkh
(Ed25519, P-256 Secp256k1)
didkit vc-发行-凭证
发行一个可验证凭证。从stdin读取凭证,构建一个用于添加到凭证中的链接数据证明,并输出生成的可验证凭证。
对应于/credentials/issue在vc-http-api。
证明类型将根据提供的密钥文件自动设置。除了加密组件之外,JWK参数,例如kid(密钥ID),目前被忽略。对于RSA密钥,alg(算法)参数被忽略,并且对于RsaSignature2018使用RS256
。
选项
-r, --did-resolver <url>
- DID解析器HTTP(S)端点,用于非内置DID方法的DID解析和DID URL解析。相当于环境变量DID_RESOLVER
。-R, --did-resolver-override <url>
- DID解析器HTTP(S)端点,用于所有DID方法的DID解析和DID URL解析。相当于环境变量DID_RESOLVER_OVERRIDE
。-k, --key-path <file>
- 签名的JWK文件名。与-j
冲突。-j, --jwk <jwk>
- 签名的JWK。与-k
冲突。-S, --ssh-agent
- 使用SSH代理进行签名,而不是使用JWK私钥。有关更多信息,请参阅下面的SSH代理部分。
需要以下之一:-k
(--key-path
)、-j
(--jwk
)或-S
(--ssh-agent
)。
以下选项对应于在 ld-proofs 和 vc-http-api 中指定的链接数据 证明选项
-t, --type <type>
- 创建证明对象type
的类型。-C, --challenge <challenge>
- 证明的 challenge 属性。-c, --created <created>
- 证明的 created 属性。ISO8601 日期时间。默认为当前时间。-d, --domain <domain>
- 证明的 domain 属性。-p, --proof-purpose <proof-purpose>
证明的 proofPurpose 属性。-v, --verification-method <verification-method>
证明的 verificationMethod 属性。证明验证信息的 URI,例如公钥标识符。
支持的 JWK 密钥类型
RSA
OKP
(curve
:Ed25519
)
SSH 代理
DIDKit 可以使用 SSH 代理 进行签名,作为使用 JWK 私钥签名的替代方案。如果使用 -S
(--ssh-agent
) 命令行选项,DIDKit 将尝试连接到通过环境变量 SSH_AUTH_SOCK
指定的本地 ssh-agent
实例,该变量引用了 UNIX 域套接字,遵循 SSH 代理协议。
密钥选择
当使用 -S
(--ssh-agent
) 时,通过 -k
(--key-file
) 或 -j
(--jwk
) 指定的 JWK 被视为公钥,并用于选择 SSH 代理用于签名的密钥。如果没有使用 JWK 选项,则假定 SSH 代理只有一个密钥,该密钥用于签名。
didkit vc-verify-凭证
验证可验证凭证。从标准输入读取可验证凭证,并输出验证结果。如果凭证成功验证,则返回退出状态零,或者在遇到错误时返回非零值。
对应于 /credentials/verify 在 vc-http-api 中的。
选项
-r, --did-resolver <url>
- DID解析器HTTP(S)端点,用于非内置DID方法的DID解析和DID URL解析。相当于环境变量DID_RESOLVER
。-R, --did-resolver-override <url>
- DID解析器HTTP(S)端点,用于所有DID方法的DID解析和DID URL解析。相当于环境变量DID_RESOLVER_OVERRIDE
。
以下选项与链接数据 证明选项 相关联,这些选项在 ld-proofs 和 vc-http-api 中指定。如果存在多个证明,则至少有一个必须通过在选项中指定的所有要求。
-C, --challenge <challenge>
- 证明的 challenge 属性必须等于此值。-c, --created <created>
- 证明的 created 属性必须在给定的 ISO8601 日期时间或之后。默认为当前时间。-d, --domain <domain>
- 证明的 domain 属性必须等于给定的值。-p, --proof-purpose <proof-purpose>
- 证明的 proofPurpose 属性必须等于此值。-v, --verification-method <verification-method>
- 证明的 verificationMethod 属性必须等于此值。
支持的证明类型
输出
验证结果输出是一个根据 vc-http-api 指定的 VerificationResult
JSON 对象。
{
"checks": [],
"warnings": [],
"errors": []
}
验证结果属性
checks
- 表示对凭证完成检查的字符串数组。warnings
- 表示在验证或验证过程中遇到的警告的字符串数组。errors
- 表示在验证或验证过程中遇到的错误的字符串数组。如果errors
为空,则凭证已验证。
didkit vc-发行-presentation
颁发一个可验证的展示。从 stdin 读取展示,生成要添加的证明,并输出结果可验证的展示。
对应于 /presentations/prove 在 vc-http-api 中的。
选项与 didkit vc-issue-credential 中的选项相同。
didkit vc-verify-presentation
验证一个可验证的展示。从 stdin 读取可验证的展示,并输出验证结果。如果展示成功验证,则返回退出状态零,如果遇到错误,则返回非零。
对应于 /presentations/verify 在 vc-http-api 中的。
选项和输出格式与 didkit vc-verify-credential 中的选项相同。
didkit did-resolve<did>
根据 DID 解析 将 DID 解析为 DID 文档。
选项
-m, --with-metadata
- 返回包含解析元数据和文档元数据的解析DID文档,在一个 DID解析结果 对象中。-i <name=value>
- 一个 DID解析输入元数据 属性。如果省略=
,则使用布尔值true
作为值,否则,值是一个字符串。可以重复使用以添加多个属性。如果使用相同的name
多次,则值将被合并到一个数组值中,形成一个单个属性。-r, --did-resolver <url>
- DID解析器HTTP(S)端点,用于非内置DID方法的DID解析和DID URL解析。相当于环境变量DID_RESOLVER
。-R, --did-resolver-override <url>
- DID解析器HTTP(S)端点,用于所有DID方法的DID解析和DID URL解析。相当于环境变量DID_RESOLVER_OVERRIDE
。
输出
返回解析后的DID文档,可选地包含元数据。
如果没有使用 -m
选项,则返回解析DID文档的表示,不包含文档元数据或解析元数据。
如果使用 -m
选项,则返回一个DID解析结果,它是一个包含以下属性的JSON对象
didDocument
- 解析的DID文档didResolutionMetadata
- DID解析元数据didDocumentMetadata
- DID文档元数据@context
- 如果使用JSON-LD表示,则为JSON-LD上下文
成功时退出状态为零,失败时为非零。在失败时,如果使用了 -m
选项,则可能仍然在标准输出上返回DID解析结果对象,其中DID解析元数据对象的 error
属性被设置为错误消息。如果没有使用 -m
,则错误消息将返回到标准错误。
didkit did-dereference<did-url>
将DID URL反引用到资源,如 did-core - DID URL反引用 中所述。
选项
-m, --with-metadata
- 返回包含解析元数据和文档元数据的反引用的资源,在一个 DID解析结果 对象中。-i <name=value>
- 一个 DID URL反引用输入元数据 属性。如果省略=
,则使用布尔值true
作为值,否则,值是一个字符串。可以重复使用以添加多个属性。如果使用相同的name
多次,则值将被合并到一个数组值中,形成一个单个属性。-r, --did-resolver <url>
- DID解析器HTTP(S)端点,用于非内置DID方法的DID解析和DID URL解析。相当于环境变量DID_RESOLVER
。-R, --did-resolver-override <url>
- DID解析器HTTP(S)端点,用于所有DID方法的DID解析和DID URL解析。相当于环境变量DID_RESOLVER_OVERRIDE
。
输出
返回从DID URL反引用的资源,可选地包含元数据。
如果没有使用 -m
选项,则返回反引用操作的结果,不包含内容元数据或反引用元数据。
如果使用 -m
选项,则返回包含以下三个对象的JSON数组
成功时退出状态为0,错误时为非0。在错误情况下,如果使用了-m
,则错误消息将返回到标准输出中DID反解析元数据对象的error
属性中;如果没有使用-m
,则错误将打印到标准错误。
didkit did-创建<did-method>
构建一个 DID方法事务 以创建具有给定DID方法的DID。
选项
-o <name=value>
- DID创建操作的选项。-r, --recovery-key <file>
- 用于DID恢复和/或停用的JWK文件,如在Sidetree DID方法(例如did:ion
)中使用。-u, --update-key <file>
- 用于Sidetree DID方法(例如did:ion
)中的DID更新操作的JWK文件。-v, --verification-key <file>
- 默认验证方法的JWK文件
输出
一个用于DID创建操作的 DID方法事务。
didkit did-更新<子命令>
构建一个 DID方法事务 以更新DID。
选项
-o <name=value>
- DID更新操作的选项。-u, --new-update-key <file>
- 用于Sidetree DID方法(例如did:ion
)中的下一个DID更新操作的新的JWK文件。-U, --update-key <file>
- 执行此DID更新操作的JWK文件
子命令
使用这些 did-update
子命令可以对DID文档进行更新。这些大致对应于DIF DID注册中的 didDocumentOperation
值和在Sidetree中的 DID状态补丁。
输出
一个用于DID更新操作的 DID方法事务。
didkit did-更新设置-服务<标识符>
构建一个 DID 方法事务,以在DID文档中添加或修改 服务。
如果已存在,则创建指定的服务对象,如果不存在,则将其重置,以包含与传递的选项对应的属性,即 type
和 serviceEndpoint
属性。
选项
-d, --did <did>
- 要更新的DID的DID文档。默认:从<id>
中隐含。-t, --type <type>...
- 服务类型-e, --endpoint <endpoint>...
- serviceEndpoint URI或JSON对象
didkit did-更新设置-verification-method<标识符>
构建一个 DID 方法事务,以在DID文档中添加或修改 验证方法。
如果不存在,则创建指定的验证方法,如果已存在,则将其重置。验证方法被构建为包含选项中传递的属性。
选项
-c, --controller <did>
- 验证方法控制属性-d, --did <did>
- 要更新的DID的DID文档。默认:从<id>
中隐含。-t, --type <type>
- 验证方法类型(必需)
验证关系选项
必须提供至少一个 验证关系(证明目的)。这些选项中的每一个都会为验证方法对象在DID文档中创建相应的验证关系。
-S, --assertionMethod
- 声明-U, --authentication
- 认证-D, --capabilityDelegation
- 能力委派-I, --capabilityInvocation
- 能力调用-K, --keyAgreement
- 密钥协商
公钥选项
必须提供恰好一个公钥属性。允许哪些属性取决于验证方法类型。
-j, --publicKeyJwk <JWK>
- publicKeyJwk 的值-k, --publicKeyJwkPath <filename>
- 从文件中读取的 publicKeyJwk 的值-m, --publicKeyMultibase <string>
- 多基编码的公钥 (publicKeyMultibase 的值)-b, --blockchainAccountId <account>
- blockchainAccountId (CAIP-10) 的值
didkit did-更新删除-服务<标识符>
构造一个 DID 方法事务,用于从 DID 文档中删除一个 服务。
选项
-d, --did <did>
- 要更新的DID的DID文档。默认:从<id>
中隐含。
didkit did-更新删除-verification-method<标识符>
构造一个 DID 方法事务,用于从 DID 文档中删除一个 验证方法。
选项
-d, --did <did>
- 要更新的DID的DID文档。默认:从<id>
中隐含。
didkit did-恢复<did>
构造一个 DID 方法事务,执行 DID 恢复操作 (DID 恢复),如果 DID 方法支持。
选项
-o <name=value>
- DID 恢复操作的选项。-r, --new-recovery-key <file>
- 用于 DID 恢复和/或停用目的的新 JWK 文件,如在 Sidetree DID 方法中使用(例如did:ion
)。-u, --new-update-key <file>
- 用于下一次 DID 更新操作的新 JWK 文件,如在 Sidetree DID 方法中使用(例如did:ion
)。-v, --new-verification-key <file>
- 默认验证方法的新 JWK 文件-R, --recovery-key <file>
- 执行此 DID 恢复操作使用的 JWK 文件
输出
DID 恢复操作的 DID 方法事务。
didkit did-停用<did>
如果 DID 方法支持,则构造一个 DID 方法事务 来停用 DID。
选项
-k, --key <key>
- 执行 DID 停用操作使用的 JWK 文件-o <name=value>
- DID停用操作的选项。
输出
用于DID停用操作的DID方法事务。
didkit did-从-tx
读取标准输入上的DID方法事务,并提取或推导其DID。
输出
对应于输入事务的DID。
didkit did-提交-tx<did>
读取标准输入上的DID方法事务,并以特定方式提交。如果事务成功提交,则返回退出状态零。
输出
特定于方法的数据结构。
概念
DID方法事务
DIDKit的DID方法操作命令(创建、更新、恢复、停用)并不完全执行相应的操作;相反,它们返回一个表示部分应用操作的、称为DID方法事务的数据结构。事务是由DID控制器创建的、用于执行DID方法操作的可验证消息。根据DID方法,可以使用did-submit-tx子命令提交、发布和/或完全执行事务。
示例
请参阅附带的shell脚本。
还请参阅以下演示创建、更新、恢复和停用操作的shell脚本
依赖关系
~43–62MB
~1M SLoC