Sha256: c59811f63a0b44be2c2dc190ed8bb799647e056d3a94c2ce3f4cb3abf6d74368

Contents?: true

Size: 1.38 KB

Versions: 101

Compression:

Stored size: 1.38 KB

Contents

// Copyright 2011 Joyent, Inc.  All rights reserved.

var assert = require('assert-plus');
var crypto = require('crypto');



///--- Exported API

module.exports = {

  /**
   * Simply wraps up the node crypto operations for you, and returns
   * true or false.  You are expected to pass in an object that was
   * returned from `parse()`.
   *
   * @param {Object} parsedSignature the object you got from `parse`.
   * @param {String} key either an RSA private key PEM or HMAC secret.
   * @return {Boolean} true if valid, false otherwise.
   * @throws {TypeError} if you pass in bad arguments.
   */
  verifySignature: function verifySignature(parsedSignature, key) {
    assert.object(parsedSignature, 'parsedSignature');
    assert.string(key, 'key');

    var alg = parsedSignature.algorithm.match(/(HMAC|RSA|DSA)-(\w+)/);
    if (!alg || alg.length !== 3)
      throw new TypeError('parsedSignature: unsupported algorithm ' +
                          parsedSignature.algorithm);

    if (alg[1] === 'HMAC') {
      var hmac = crypto.createHmac(alg[2].toUpperCase(), key);
      hmac.update(parsedSignature.signingString);
      return (hmac.digest('base64') === parsedSignature.params.signature);
    } else {
      var verify = crypto.createVerify(alg[0]);
      verify.update(parsedSignature.signingString);
      return verify.verify(key, parsedSignature.params.signature, 'base64');
    }
  }

};

Version data entries

101 entries across 87 versions & 6 rubygems

Version Path
trusty-festivity-extension-2.6.3 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.6.2 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.6.1 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.6 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.19 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.18 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.17 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.16 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.15 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.14 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.13 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.12 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.11 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.10 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.9 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.8 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.7 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.6 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.5 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js
trusty-festivity-extension-2.5.4 node_modules/bower/node_modules/request/node_modules/http-signature/lib/verify.js