@digitalbazaar/x25519-key-agreement-key-2020
An X25519 (Curve25519) DH (Diffie-Hellman) key implementation to work with the X25519 2020 Crypto suite.
Last updated 3 months ago by msporny .
BSD-3-Clause · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @digitalbazaar/x25519-key-agreement-key-2020 
SYNC missed versions from official npm registry.

X25519KeyAgreementKey2020 (@digitalbazaar/x25519-key-agreement-key-2020)

Build status Coverage status NPM Version

An X25519 (Curve25519) DH (Diffie-Hellman) key implementation to work with the X25519 2020 Crypto suite.

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-2020.git
cd x25519-key-agreement-key-2020
npm install

Usage

Importing:

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

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

Generating:

const keyPair = await X25519KeyAgreementKey2020.generate({
  controller: 'did:example:1234'
});
// ->
{
  "id": "did:example:1234#z6LSeRSE5Em5oJpwdk3NBaLVERBS332ULC7EQq5EtMsmXhsM",
  "controller": "did:example:1234",
  "type": "X25519KeyAgreementKey2020",
  "publicKeyMultibase": "z6LSeRSE5Em5oJpwdk3NBaLVERBS332ULC7EQq5EtMsmXhsM",
  "privateKeyMultibase": "z3weeMD56C1T347EmB6kYNS7trpQwjvtQCpCYRpqGz6mcemT"
}

Serializing just the public key:

keyPair.export({publicKey: true});
// ->
{
  "id": "did:example:1234#z6LSeRSE5Em5oJpwdk3NBaLVERBS332ULC7EQq5EtMsmXhsM",
  "controller": "did:example:1234",
  "type": "X25519KeyAgreementKey2020",
  "publicKeyMultibase": "z6LSeRSE5Em5oJpwdk3NBaLVERBS332ULC7EQq5EtMsmXhsM"
}

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#z6LSeRSE5Em5oJpwdk3NBaLVERBS332ULC7EQq5EtMsmXhsM",
  "controller": "did:example:1234",
  "type": "X25519KeyAgreementKey2020",
  "publicKeyMultibase": "z6LSeRSE5Em5oJpwdk3NBaLVERBS332ULC7EQq5EtMsmXhsM",
  "privateKeyMultibase": "z3weeMD56C1T347EmB6kYNS7trpQwjvtQCpCYRpqGz6mcemT"
}

Deserializing:

// Loading public key only
const keyPair = await X25519KeyAgreementKey2020.from({
  "id": "did:example:1234#z6LSeRSE5Em5oJpwdk3NBaLVERBS332ULC7EQq5EtMsmXhsM",
  "controller": "did:example:1234",
  "type": "X25519KeyAgreementKey2020",
  "publicKeyMultibase": "z6LSeRSE5Em5oJpwdk3NBaLVERBS332ULC7EQq5EtMsmXhsM"
});

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

Current Tags

  • 2.0.0                                ...           latest (3 months ago)

5 Versions

  • 2.0.0                                ...           3 months ago
  • 1.2.1                                ...           5 months ago
  • 1.2.0                                ...           6 months ago
  • 1.1.0                                ...           6 months ago
  • 1.0.0                                ...           6 months ago

Copyright 2014 - 2021 © npmmirror.com |