包详细信息

@digitalbazaar/x25519-key-agreement-key-2019

digitalbazaar30.8kBSD-3-Clause6.0.0

An X25519 (Curve25519) DH key implementation to work with the crypto-ld LDKeyPair API

Linked Data, JSON-LD, digital signatures, jsonld-signatures

自述文件

X25519KeyAgreementKey2019 (@digitalbazaar/x25519-key-agreement-key-2019)

An X25519 (Curve25519) DH (Diffie-Hellman) key implementation to work with the crypto-ld LDKeyPair API.

Table of Contents

Security

TBD

Background

For use with crypto-ld >= 5.0.

To actually perform encryption with those keys, we recommend you use the minimal-cipher library.

This is a low-level level library to generate and serialize X25519 (Curve25519) key pairs (uses nacl.box under the hood).

See also (related specs):

Install

Requires Node.js 12+

To install locally (for development):

git clone https://github.com/digitalbazaar/x25519-key-agreement-key-2019.git
cd x25519-key-agreement-key-2019
npm install

Usage

Importing:

const {X25519KeyAgreementKey2019} = require('@digitalbazaar/x25519-key-agreement-key-2019');

// Or, if you're testing code in the interactive Node CLI, right in this repo:
const {X25519KeyAgreementKey2019} = require('./');

Generating:

const keyPair = await X25519KeyAgreementKey2019.generate({
  controller: 'did:example:1234'
});

Serializing just the public key:

keyPair.export({publicKey: true});
// ->
{
  id: 'did:example:1234#z6LSbh9HiAU2zzBdFMdKZGHfg1UjvAYF8C8kYnkfGKuCxYEB',
  type: 'X25519KeyAgreementKey2019',
  controller: 'did:example:1234',
  publicKeyBase58: '1y8BrfAuXTt9yFZ2cmiMRGG5218Raxbfp2ymsFgFATR'
}

Serializing both the private and public key:

// a different key pair than the previous example
await keyPair.export({publicKey: true, privateKey: true})
// ->
 {
  id: 'did:example:1234#z6LSjeJZaUHMvEKW7tEJXV4PrSm61NzxxHhDXF6zHnVtDu9g',
  type: 'X25519KeyAgreementKey2019',
  controller: 'did:example:1234',
  publicKeyBase58: '8y8Q4AUVpmbm2VrXzqYSXrYcAETrFgX4eGPJoKrMWXNv',
  privateKeyBase58: '95tmYuhqSuJqY77FEg78Zy3LFQ1cENxGv2wMvayk7Lqf'
}

Deserializing:

// Loading public key only
const keyPair = await X25519KeyAgreementKey2019.from({
  id: 'did:example:1234#z6LSjeJZaUHMvEKW7tEJXV4PrSm61NzxxHhDXF6zHnVtDu9g',
  type: 'X25519KeyAgreementKey2019',
  controller: 'did:example:1234',
  publicKeyBase58: '8y8Q4AUVpmbm2VrXzqYSXrYcAETrFgX4eGPJoKrMWXNv'
});

Contribute

See the contribute file!

PRs accepted.

If editing the Readme, please conform to the standard-readme specification.

Commercial Support

Commercial support for this library is available upon request from Digital Bazaar: support@digitalbazaar.com

License

New BSD License (3-clause) © Digital Bazaar

更新日志

@digitalbazaar/x25519-key-agreement-key-2019 ChangeLog

6.0.0 - 2022-06-02

Changed

  • BREAKING: Convert to module (ESM).
  • BREAKING: Require Node.js >=14.
  • Update dependencies.
  • Lint module.

5.2.0 - 2022-05-06

Changed

  • Use @noble/ed25519 to convert public ed25519 keys to x25519.

Fixed

  • Fix broken ed25519 2020 conversion code.

5.1.1 - 2021-05-25

Changed

  • BREAKING: Point suite context to its own standalone url (not security/v2).

5.1.0 - 2021-04-02

Added

  • Add revoked export tests. (To support CryptoLD's new fromKeyId() method.) Also add includeContext flag to export().

5.0.1 - 2021-03-25

Changed

  • Remove env.js, switch to our usual node/browser setup. Should fix webpack problems downstream.

5.0.0 - 2021-03-17

Changed

  • Update to use crypto-ld v5.0.
  • BREAKING: Removed helper methods addPublicKey and addPrivateKey.

4.1.0 - 2021-03-14

Added

  • fromEdKeyPair() is now an alias for fromEd25519VerificationKey2018() to maintain backwards compatibility. New code should use fromEd25519VerificationKey2020() (or whatever the latest Ed25519 suite is).

4.0.0 - 2021-03-11

Changed

  • BREAKING: Rename repo and NPM package name to @digitalbazaar/x25519-key-agreement-key-2019.
  • BREAKING: Rename addEncodedPublicKey() to addPublicKey().
  • BREAKING: Rename addEncryptedPrivateKey() to addPrivateKey().
  • BREAKING: Changed verifyFingerprint() param signature to use named params.
  • BREAKING: Changed fromEdKeyPair() param signature to use named params.
  • BREAKING: Changed convertFromEdPublicKey() param signature to use named params.
  • BREAKING: Changed convertFromEdPrivateKey() param signature to use named params.
  • See also crypto-ld v4.0 Changelog

Purpose and Upgrade Instructions

See crypto-ld v4.0 Purpose and crypto-ld Upgrade from v3.7 notes

3.1.0 - 2020-10-08

Changes

  • Use node-forge@0.10.0.
  • Update dev dependencies.

3.0.0 - 2020-08-01

Added

  • Auto-initialize key.id based on controller (if it's present).

Changed

  • BREAKING: Explicitly make publicBase58 property required for Ed25519 type keys (throw error if missing).

2.0.0 - 2020-03-09

Changed

  • BREAKING: Changed the key fingerprint prefix to the recently registered multicodec value of 0xec.

1.0.0 - 2020-02-25

  • See git history for changes.