W3C Web Cryptography API (@trust/webcrypto)

W3C Web Cryptography API for Node.js

W3C's Web Cryptography API defines a standard interface for performing cryptographic operations in JavaScript, such as key generation, hashing, signing, and encryption. This package implements the API for Node.js, in order to support universal crypto-dependent code required by protocols such as JOSE and OpenID Connect.

Table of Contents

Security

TBD

Background

The purpose of this package is to enable development of universal JavaScript libraries that depend on the availability of cryptographic primitives in order to implement cryptographic protocols. The long term goal of the project is to encourage or provide a native, if not core Web Cryptography module.

Install

@trust/webcrypto requires recent versions of node and npm to run. For key generation operations, it also requires OpenSSL to be installed on the system.

$ npm install @trust/webcrypto --save

Usage

const crypto = require('@trust/webcrypto')

Develop

Install

$ git clone git@github.com:anvilresearch/webcrypto.git
$ cd webcrypto
$ npm install

Test

$ npm test

Supported Algorithms

Algorithm name encrypt decrypt sign verify digest generateKey deriveKey deriveBits importKey exportKey wrapKey unwrapKey
RSASSA-PKCS1-v1_5
RSA-PSS
RSA-OAEP
ECDSA
EDDSA
ECDH _ _ _ _ _
AES-CTR
AES-CBC
AES-GCM
AES-KW
HMAC
SHA-1
SHA-256
SHA-384
SHA-512
HKDF _ _ _
PBKDF2 _ _ _

Key:

Implemented _ Currently not implemented Partially implemented, only certain paramaters supported.

Partial Support

Only the following paramaters are supported for the corresponding algorithm.

Algorithm name Supported paramater
ECDSA K-256 (secp256k1), P-256, P-384, P-512
EDDSA ed25519
AES-CTR sha-1

API

See W3C Web Cryptography API specification and diafygi's webcrypto-examples.

Contribute

Issues

Pull requests

Policy

Style guide

Code reviews

Collaborating

Weekly project meeting

Pair programming

Code of conduct

Contributors

MIT License

Copyright (c) 2016 Anvil Research, Inc.