Sha256: 5c771e93e171b8a1137238523a8ea3fe903560d3eed2db40b97ef8f98372ab00

Contents?: true

Size: 1.33 KB

Versions: 109

Compression:

Stored size: 1.33 KB

Contents

// Load modules

var Crypto = require('crypto');
var Boom = require('boom');


// Declare internals

var internals = {};


// Generate a cryptographically strong pseudo-random data

exports.randomString = function (size) {

    var buffer = exports.randomBits((size + 1) * 6);
    if (buffer instanceof Error) {
        return buffer;
    }

    var string = buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/\=/g, '');
    return string.slice(0, size);
};


exports.randomBits = function (bits) {

    if (!bits ||
        bits < 0) {

        return Boom.internal('Invalid random bits count');
    }

    var bytes = Math.ceil(bits / 8);
    try {
        return Crypto.randomBytes(bytes);
    }
    catch (err) {
        return Boom.internal('Failed generating random bits: ' + err.message);
    }
};


// Compare two strings using fixed time algorithm (to prevent time-based analysis of MAC digest match)

exports.fixedTimeComparison = function (a, b) {

    if (typeof a !== 'string' ||
        typeof b !== 'string') {

        return false;
    }

    var mismatch = (a.length === b.length ? 0 : 1);
    if (mismatch) {
        b = a;
    }

    for (var i = 0, il = a.length; i < il; ++i) {
        var ac = a.charCodeAt(i);
        var bc = b.charCodeAt(i);
        mismatch |= (ac ^ bc);
    }

    return (mismatch === 0);
};


Version data entries

109 entries across 101 versions & 13 rubygems

Version Path
tck-lambdas-0.2.0 lib/tck/lambdas/chistacojs/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js
tck-lambdas-0.2.0 lib/tck/lambdas/chistacojs/source/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js
tck-lambdas-0.1.6 lib/tck/lambdas/chistacojs/source/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js
tck-lambdas-0.1.6 lib/tck/lambdas/chistacojs/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js
trusty-festivity-extension-2.5.10 node_modules/bower/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js
trusty-festivity-extension-2.5.9 node_modules/bower/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js
trusty-festivity-extension-2.5.8 node_modules/bower/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js
trusty-festivity-extension-2.5.7 node_modules/bower/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js
brwy_rails-0.0.6 test/dummy/node_modules/fsevents/node_modules/cryptiles/lib/index.js
brwy_rails-0.0.5 test/dummy/node_modules/fsevents/node_modules/cryptiles/lib/index.js
trusty-festivity-extension-2.5.6 node_modules/bower/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js
trusty-festivity-extension-2.5.5 node_modules/bower/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js
blackboard-3.1.9 lib/site_template/node_modules/cryptiles/lib/index.js
trusty-festivity-extension-2.5.4 node_modules/bower/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js
brwy_rails-0.0.4 test/dummy/node_modules/fsevents/node_modules/cryptiles/lib/index.js
brwy_rails-0.0.3 test/dummy/node_modules/fsevents/node_modules/cryptiles/lib/index.js
brwy_rails-0.0.2 test/dummy/node_modules/fsevents/node_modules/cryptiles/lib/index.js
brwy_rails-0.0.1 test/dummy/node_modules/fsevents/node_modules/cryptiles/lib/index.js
trusty-festivity-extension-2.5.3 node_modules/bower/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js
trusty-festivity-extension-2.5.2 node_modules/bower/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js