You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从现有DID创建IOTA可验证凭证时如何获取fragment变量?

解决IOTA identity.rs中从现有DID获取签名用的Fragment问题

核心概念

你提到的fragment其实是DID文档中验证方法(Verification Method)的ID后缀,格式为#xxx,用来指定签发VC时使用哪一对密钥。创建新DID时工具会自动生成这个片段并返回,但解析现有DID时,需要从文档的验证方法列表中手动提取。

具体步骤

  1. 筛选可用的验证方法:签发VC需要使用类型为AssertionMethod的验证方法(W3C VC规范要求),先从解析后的issuer_document中筛选出这类方法。
  2. 提取Fragment:从选中的验证方法ID中截取#之后的部分,就是需要的fragment字符串。

代码实现

替换你代码中fragment相关的疑问部分,改成以下逻辑:

// 从发行方DID文档中获取用于断言签名的验证方法
let assertion_method = issuer_document
    .assertion_methods()
    .next() // 取第一个可用的,可根据实际需求筛选特定密钥
    .ok_or_else(|| anyhow::anyhow!("发行方DID文档中没有可用的AssertionMethod"))?;

// 提取验证方法ID中的fragment部分(#后面的内容)
let fragment = assertion_method.id().fragment()
    .ok_or_else(|| anyhow::anyhow!("验证方法ID不包含fragment"))?;

关键注意事项

  • 确保你选中的验证方法对应的密钥已经存在于Stronghold和issuer_storage中,否则调用create_credential_jwt时会报错密钥未找到。
  • 如果DID文档中有多个AssertionMethod,可以根据密钥ID或类型(如Ed25519VerificationKey2020)筛选你需要的那一个。

内容的提问来源于stack exchange,提问作者GeneralBohne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 12:50:58