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命令行工具

Download history 43/week @ 2024-03-11 22/week @ 2024-03-18 7/week @ 2024-03-25 43/week @ 2024-04-01 24/week @ 2024-04-08 15/week @ 2024-04-15 23/week @ 2024-04-22 15/week @ 2024-04-29 17/week @ 2024-05-06 15/week @ 2024-05-13 22/week @ 2024-05-20 16/week @ 2024-05-27 23/week @ 2024-06-03 25/week @ 2024-06-10 17/week @ 2024-06-17 27/week @ 2024-06-24

94 每月下载
用于 didkit-http

Apache-2.0Apache-2.0…

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 方法名称和模式

didkit vc-发行-凭证

发行一个可验证凭证。从stdin读取凭证,构建一个用于添加到凭证中的链接数据证明,并输出生成的可验证凭证。

对应于/credentials/issuevc-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-proofsvc-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/verifyvc-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-proofsvc-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/provevc-http-api 中的。

选项与 didkit vc-issue-credential 中的选项相同。

didkit vc-verify-presentation

验证一个可验证的展示。从 stdin 读取可验证的展示,并输出验证结果。如果展示成功验证,则返回退出状态零,如果遇到错误,则返回非零。

对应于 /presentations/verifyvc-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文档中添加或修改 服务

如果已存在,则创建指定的服务对象,如果不存在,则将其重置,以包含与传递的选项对应的属性,即 typeserviceEndpoint 属性。

选项

  • -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文档中创建相应的验证关系。

公钥选项

必须提供恰好一个公钥属性。允许哪些属性取决于验证方法类型。

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