Cryptographic Key Pair (@digitalcredentials/keypair)
Cryptographic key pair data model in Javascript/Typescript, for Node.js, browsers, and React Native. Useful for Verifiable Credentials, DIDs (Decentralized Identifiers), and other uses of Data Integrity.
Table of Contents
Background
Extracted from Digital Bazaar's crypto-ld
library, and converted to Typescript.
This is an abstract key pair data model, meant to be used in individual subclass key pair implementations, such as:
Choosing a Key Type
For digital signatures using the
linked-data-integrity
library,
signing of Verifiable Credentials using vc
library,
authorization capabilities, and DIDAuth operations:
- Prefer Ed25519VerificationKey2020 type keys, by default.
- Use EcdsaSepc256k1 keys if your use case requires it (for example, if you're developing for a Bitcoin-based or Ethereum-based ledger), or if you require Hierarchical Deterministic (HD) wallet functionality.
For key agreement protocols for encryption operations:
- Use Curve25519 with the
minimal-cipher
library.
Security
As with most security- and cryptography-related tools, the overall security of your system will largely depend on your design decisions.
Install
- Node.js 16+ is recommended.
NPM
To install via NPM:
npm install @digitalcredentials/keypair
Development
To install locally (for development):
git clone https://github.com/digitalcredentials/keypair.git
cd keypair
npm install
Usage
This library is meant to be used only by implementers of new cryptographic key suite libraries.
When adding support for a new suite type subclass of keypair
, developers
should do the following:
- Create their own npm package / github repo, such as
example-key-pair
. - Subclass KeyPair.
- Override relevant methods (such as
export()
andfingerprint()
). - Add to the key type table in the
crypto-suite-manager
README.md.
Contribute
PRs accepted.
If editing the Readme, please conform to the standard-readme specification.
License
MIT License © 2022 Digital Credentials Consortium.