You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

passwordless

Package Overview
Dependencies
Maintainers
1
Versions
28
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

passwordless - npm Package Compare versions

Comparing version

to
1.0.5

11

CHANGELOG.md

@@ -0,1 +1,12 @@

# 1.0.5 (2014-11-07)
Bugfixes:
- N/A
Features:
- ADD addDelivery options.numberToken to generate number-based tokens
Documentation:
- Small update to include numberToken
# 1.0.4 (2014-10-29)

@@ -2,0 +13,0 @@

30

lib/passwordless/passwordless.js

@@ -435,3 +435,7 @@ 'use strict';

try {
token = (deliveryMethod.options.tokenAlgorithm || self._generateToken())();
if(deliveryMethod.options.numberToken && deliveryMethod.options.numberToken.max) {
token = self._generateNumberToken(deliveryMethod.options.numberToken.max);
} else {
token = (deliveryMethod.options.tokenAlgorithm || self._generateToken())();
}
} catch(err) {

@@ -505,3 +509,6 @@ next(new Error('Error while generating a token: ' + err));

* @param {function()} [options.tokenAlgorithm] - The algorithm used to generate a token.
* Should simply return the token in sync mode (default: UUID v4)
* Function shall return the token in sync mode (default: Base58 token)
* @param {Number} [options.numberToken.max] - Overwrites the default token generator
* by a random number generator which generates numbers between 0 and max. Cannot be used
* together with options.tokenAlgorithm
*/

@@ -523,4 +530,7 @@ Passwordless.prototype.addDelivery = function(name, sendToken, options) {

} else if((options.ttl && typeof options.ttl !== 'number') ||
(options.tokenAlgorithm && typeof options.tokenAlgorithm !== 'function')) {
(options.tokenAlgorithm && typeof options.tokenAlgorithm !== 'function') ||
(options.numberToken && (!options.numberToken.max || typeof options.numberToken.max !== 'number'))) {
throw new Error('One of the provided options is of the wrong format');
} else if(options.tokenAlgorithm && options.numberToken) {
throw new Error('options.tokenAlgorithm cannot be used together with options.numberToken');
} else if(this._defaultDelivery) {

@@ -599,2 +609,16 @@ throw new Error('Only one default delivery method shall be defined and not be mixed up with named methods. Use named delivery methods instead')

/**
* Generates a strong random number between 0 and a maximum value. The
* maximum value cannot exceed 2^32
* @param {Number} max - Maximum number to be generated
* @return {Number} Random number between 0 and max
* @throws {Error} Will throw an error if there is no sufficient
* entropy accumulated
* @private
*/
Passwordless.prototype._generateNumberToken = function(max) {
var buf = crypto.randomBytes(4);
return Math.floor(buf.readUInt32BE(0)%max);
};
module.exports = Passwordless;

2

package.json
{
"name": "passwordless",
"version": "1.0.4",
"version": "1.0.5",
"description": "A node.js/express module for passwordless authentication",

@@ -5,0 +5,0 @@ "main": "index.js",