Skip to content
This repository has been archived by the owner on Feb 25, 2019. It is now read-only.
/ keychain Public archive

KeyChain for use with Web Cryptography API in Node.js

License

Notifications You must be signed in to change notification settings

anvilresearch/keychain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NOTICE

We’re archiving Anvil Connect and all related packages. This code is entirely MIT Licensed. You’re free to do with it what you want. That said, we are recommending against using it, due to the potential for security issues arising from unmaintained software. For more information, see the announcement at anvil.io.

KeyChain for use with Web Cryptography API in Node.js

Usage

Install the package

$ npm install https://github.com/anvilresearch/keychain.git

Load the module

const KeyChain = require('keychain')

Create a new instance by passing a descriptive object to the KeyChain constructor. This object can have any naming or nesting scheme, as long as the last nested object contains parameters describing key generation. At a bare minimum, this must include an alg property with a JWA algorithm name as its value. Currently, RS256, RS384, and RS512 are supported.

let keys = new KeyChain({
  a: { b: { alg: 'RS256' } },
  c: { d: { alg: 'RS256' } },
  e: { f: { alg: 'RS256', modulusLength: 2048 } // default is 4096
}) 

This initialized a KeyChain instance but didn't generate keys. To generate keys according to the object passed to the keychain, call rotate(). The rotate() method returns a promise for the keychain.

keys.rotate()

Once keys have been generated, they can be accessed as CryptoKey or JWK objects, according to the object structure defined by the caller.

Access CryptoKey objects for Web Crypto API operations:

keys.a.b.privateKey
keys.a.b.publicKey

Access JWK objects:

keys.a.b.privateJwk
keys.a.b.publicJwk

Key rotation also generates a JWK Set in object and JSON form:

keys.jwks     // JWK Set object
keys.jwkSet   // JWK Set JSON string

Running tests

Nodejs

$ npm test

MIT License

Copyright (c) 2016 Anvil Research, Inc.

About

KeyChain for use with Web Cryptography API in Node.js

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •