@digitalcredentials/did-method-key

中文文档
3.0.0发布于 2025/05/01BSD-3-ClauseES Module近 30 天下载 5520

A做:键法解析器.

中文使用文档
文档目录12 节
  1. 目录
  2. 背景情况
  3. 示例文档
  4. 警卫
  5. 安装
  6. 使用量
  7. generate()
  8. publicKeyToDidDoc()
  9. get()
  10. publicMethodFor()
  11. 贡献
  12. 许可证

已执行: key 方法驱动程序 (@ 数字证书/ did- method- key)

NPM Version

A 类 没有 (分散式标识符)方法驱动程序 did-io 用于独立使用

目录

背景情况

(从 digitalbazaar/did-method-key v1.0.0 (韩语) 以提供类型脚本兼容性。 )

另见(相关规格):

A 类 did:key 方法驱动程序 did-io 客户端库和供独立使用.

这个 did:key 用于表达公共密钥的方法不 要求拥有任何类型的已登记。 它的一般形式是:

did:key:<multibase encoded, multicodec identified, public key>

因此,举例来说,以下“DOD”将来源于一个已编码的基号-58 ed25519 公用钥匙 :

did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH

这符合以下文件:

示例文档

{
  "@context": [
    "https://www.w3.org/ns/did/v1",
    "https://w3id.org/security/suites/ed25519-2020/v1",
    "https://w3id.org/security/suites/x25519-2020/v1"
  ],
  "id": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
  "verificationMethod": [{
    "id": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
    "type": "Ed25519VerificationKey2020",
    "controller": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
    "publicKeyMultibase": "z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
  }],
  "authentication": [
    "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
  ],
  "assertionMethod": [
    "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
  ],
  "capabilityDelegation": [
    "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
  ],
  "capabilityInvocation": [
    "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
  ],
  "keyAgreement": [{
    "id": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6LSj72tK8brWgZja8NLRwPigth2T9QRiG1uH9oKZuKjdh9p",
    "type": "X25519KeyAgreementKey2020",
    "controller": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
    "publicKeyMultibase": "z6LSj72tK8brWgZja8NLRwPigth2T9QRiG1uH9oKZuKjdh9p"
  }]
}

警卫

这个 keyAgreement 键是 Curve25519 公钥(适合 Diffie-Hellman 密钥交换),具有决定性意义 来源 来源 Ed25519 键, 使用 ed2curve-js。 。 。 .

注意此衍生密钥是可选的 -- 目前有 无证据 这是安全的.

安装

需要节点.js 12+

要从 npm数字 :

npm install --save @digitalcredentials/did-method-key

在当地安装(用于开发):

git clone https://github.com/digitalcredentials/did-method-key-js.git
cd did-method-key-js
npm install

使用量

generate()

生成新密钥并获得相应的 did:key 方法 DID 文档 :

const didKeyDriver = require('@digitalcredentials/did-method-key').driver();

// generate did:key using Ed25519 key type by default
const {didDocument, keyPairs, methodFor} = await didKeyDriver.generate();

// print the DID Document above
console.log(JSON.stringify(didDocument, null, 2));

// keyPairs will be set like so ->
Map(2) {
  'did:key:z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv#z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv' => Ed25519VerificationKey2020 {
    id: 'did:key:z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv#z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv',
    controller: 'did:key:z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv',
    type: 'Ed25519VerificationKey2020',
    publicKeyMultibase: 'z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv',
    privateKeyMultibase: 'z3zDo1wXuXGcFkJa9SPE7VYpdutmHq8gJsvFRMKJckTWMykoHsAjWNbHXqzrZ8qa7aWdDTjmJNJ1amYEG2mCvZZeY'
  },
  'did:key:z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv#z6LSeRSE5Em5oJpwdk3NBaLVERBS332ULC7EQq5EtMsmXhsM' => X25519KeyAgreementKey2020 {
    id: 'did:key:z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv#z6LSeRSE5Em5oJpwdk3NBaLVERBS332ULC7EQq5EtMsmXhsM',
    controller: 'did:key:z6MkuBLrjSGt1PPADAvuv6rmvj4FfSAfffJotC6K8ZEorYmv',
    type: 'X25519KeyAgreementKey2020',
    publicKeyMultibase: 'z6LSeRSE5Em5oJpwdk3NBaLVERBS332ULC7EQq5EtMsmXhsM',
    privateKeyMultibase: 'z3weeMD56C1T347EmB6kYNS7trpQwjvtQCpCYRpqGz6mcemT'
  }
}

methodFor 是返回公/私密密钥对的便利函数 例如,为了某一特定目的。 例如,核查密钥(包含 signer() 财务报告和审定财务报表 verifier() 函数)经常用于 jsonld-signatures 或者说 vc-js 操作。 生成后 新的做: 键做,你可以做:

// For signing Verifiable Credentials
const assertionKeyPair = methodFor({purpose: 'assertionMethod'});
// For Authorization Capabilities (zCaps)
const invocationKeyPair = methodFor({purpose: 'capabilityInvocation'});
// For Encryption using `@digitalbazaar/minimal-cipher`
const keyAgreementPair = methodFor({purpose: 'keyAgreement'});

请注意: methodFor 返回包含公用和私用的密钥对 键对(因为它可以进入 keyPairs 地图来自 generate()) (中文(简体) ). 这使得它有用 签名 财务报告和审定财务报表 加密 操作(不同于 publicMethodFor 这回由 get()页:1.

publicKeyToDidDoc()

如果你已经有一个 Ed25519VerificationKey2020 公钥对象(作为 LDKeyPair 实例,或纯密钥描述对象,您可以将其转换为 a 文件:

const {didDocument} = await didKeyDriver.publicKeyToDidDoc({publicKeyDescription});

get()

从 a 获取一个完整的文件 did:key 没有

获取已有的 DDE 文档 did:key 没有:

const did = 'did:key:z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T';
const didDocument = await didKeyDriver.get({did});

(成果在 实例 (见上文).

仅按密钥 ID 获取密钥对象

您也可以使用一个 .get() 以获取单个密钥, 如果你知道它是id 已经( 这对构建 documentLoaders 用于 JSON- LD 签名 libs,产生的键确实包括适当的 @context) (中文(简体) ).

const verificationKeyId = 'did:key:z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T#z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T';
await didKeyDriver.get({url: verificationKeyId});
// ->
{
  "@context": "https://w3id.org/security/suites/ed25519-2020/v1",
  "id": "did:key:z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T#z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T",
  "type": "Ed25519VerificationKey2020",
  "controller": "did:key:z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T",
  "publicKeyMultibase": "z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T"
}

const keyAgreementKeyId = 'did:key:z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T#z6LSotGbgPCJD2Y6TSvvgxERLTfVZxCh9KSrez3WNrNp7vKW';
await didKeyDriver.get({url: keyAgreementKeyId});
// ->
{
  "@context": "https://w3id.org/security/suites/x25519-2020/v1",
  "id": "did:key:z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T#z6LSotGbgPCJD2Y6TSvvgxERLTfVZxCh9KSrez3WNrNp7vKW",
  "type": "X25519KeyAgreementKey2020",
  "controller": "did:key:z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T",
  "publicKeyMultibase": "z6LSotGbgPCJD2Y6TSvvgxERLTfVZxCh9KSrez3WNrNp7vKW"
}

publicMethodFor()

通常,你有一个 did:key 做了,你需要得到一个钥匙 特别 目的 从它,例如 assertionMethod 用于验证的密钥 VC 签名,或 a keyAgreement 密钥以加密此选项的文档 控制器。 控制器.

为此,你可以使用组合 get() 财务报告和审定财务报表 publicMethodFor数字 :

// Start with the DID
const didDocument = await didKeyDriver.get({did});
// This lets you use `publicMethodFor()` to get a key for a specific purpose
const keyAgreementData = didKeyDriver.publicMethodFor({
  didDocument, purpose: 'keyAgreement'
});
const assertionMethodData = didKeyDriver.publicMethodFor({
  didDocument, purpose: 'assertionMethod'
});

// If you're using a `crypto-ld` driver harness, you can create key instances
// which allow you to get access to a `verify()` function.
const assertionMethodPublicKey = await cryptoLd.from(assertionMethodData);
const {verify} = assertionMethodPublicKey.verifier();

publicMethodFor 将返回 undefined 如果找不到给定的密钥 目标.

贡献

见 贡献文件来啊!

公关接受.

请遵照 标准读取 规格.

许可证

  • MIT许可证 - DCC - TypeScript兼容.
  • 新BSD许可证 (3-clause) 2020-2021 Digital Bazaar - 初始实施.

版本与发布记录

@digitalcredentials/did-method-key 共发布 7 个版本,首次发布于 2021/05/20;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.0.0latest2025/05/011.5 年前
3.0.0-beta.1beta2025/03/141.7 年前
2.0.32022/01/194 年前
2.0.22021/09/215 年前
2.0.12021/09/215 年前
1.0.12021/09/215 年前

关于 @digitalcredentials/did-method-key 的常见问题

@digitalcredentials/did-method-key 是什么?

A做:键法解析器.

如何安装 @digitalcredentials/did-method-key?

在项目目录运行 npm install @digitalcredentials/did-method-key,或使用 pnpm add / yarn add / bun add。

@digitalcredentials/did-method-key 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/digitalcredentials__did-method-key 是否存在。

@digitalcredentials/did-method-key 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@digitalcredentials/did-method-key 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=16。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@digitalcredentials/did-method-key 可以商用吗?

@digitalcredentials/did-method-key 使用 BSD-3-Clause 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。另外不得用原作者名义为衍生产品背书。以上为概括,不构成法律意见,请以许可原文为准。

@digitalcredentials/did-method-key 的下载量有多少?

根据 npm 官方下载统计,@digitalcredentials/did-method-key 在 2026/10/12 – 2026/11/10 这 30 天内被下载 5,520 次,日均约 184 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@digitalcredentials/did-method-key 还在维护吗?

最新版本 3.0.0 发布于 2025/05/01(1.5 年前);至今共发布 7 个版本,其中过去 12 个月发布了 0 个;首次发布于 2021/05/20。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。