Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@sl-nx/couch-pwd

sl-nx875MIT2.0.0

CouchDB salt and password generation with PBKDF2

couch, couchdb, password, pwd, pbkdf2

readme

@sl-nx/couch-pwd

An up-to-date version of couch-pwd that is actually published.

Hash and compare passwords with the crypto's pbkdf2. Heavily inspired by node-pwd.

Uses the following values as defaults:

  • iterations = 10
  • keylen = 20
  • size = 16
  • encoding = 'hex'
  • digest = 'SHA1'

The resulting salt and password Strings are the same you'd get when you save a user to CouchDB and let CouchDB do all the hashing for you.

Module has two goals

  • verify user passwords without making requests to /_session API
  • use the same hashing algorithm for other databases

Installation

npm install couch-pwd

Example

On signup generate a salt / password hash, and save it somewhere:

var pwdModule = require('couch-pwd');
var pwd = new pwdModule();
pwd.hash('my password', function (err, salt, hash) {
  user.salt = salt;
  user.hash = hash;
});

To authenticate load and compare:

var pwdModule = require('couch-pwd');
var pwd = new pwdModule();
pwd.hash('submitted password', user.salt, function (err, hash) {
  if (user.hash == hash) {
    // yay
  }
});

License

MIT

changelog

CHANGELOG

v1.0.1 - 2017-09-19

  • Restore couchdb as required service for Travis CI (@bjornstar)
  • Point Travis CI badge to @sensu/couch-pwd (@bjornstar)
  • Add more info in README (@bjornstar)

v1.0.0 - 2017-09-19

  • Updated devDependencies (@bjornstar)
  • Updated tests to work with updated devDependencies (@bjornstar)
  • Update .gitignore to ignore log files (@bjornstar)
  • Update Travis CI config to run node 8 (@bjornstar)
  • Added ESLint (@bjornstar)
  • Updated Travis CI config to run lint before test (@bjornstar)
  • Updated style to match ESLint Standard + semicolons (@bjornstar)
  • Add explicit SHA1 digest in crypto.pbkdf2 calls (@EuAndreh)

0.0.1 - 2014-04-09

  • init (@zemirco)