1 | ;
|
2 |
|
3 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
4 |
|
5 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
6 |
|
7 | var crypto = require("crypto");
|
8 |
|
9 | var HashGenerator = function () {
|
10 | function HashGenerator() {
|
11 | _classCallCheck(this, HashGenerator);
|
12 | }
|
13 |
|
14 | _createClass(HashGenerator, [{
|
15 | key: "generate",
|
16 |
|
17 | /**
|
18 | * Generate a Signature Hash.
|
19 | *
|
20 | * @param {String} method - the method to be used when creating the hash
|
21 | * @param {String} secret - the secret to be used when creating the hash
|
22 | * @param {Object} params - params to generate hash from
|
23 | *
|
24 | * @returns {String} the generated token
|
25 | */
|
26 | value: function generate(method, secret, params) {
|
27 | params = params || {};
|
28 | var signedQuery = "";
|
29 |
|
30 | params = JSON.parse(JSON.stringify(params));
|
31 |
|
32 | if (params.sig) {
|
33 | delete params.sig;
|
34 | }
|
35 |
|
36 | Object.keys(params).sort().forEach(function (key) {
|
37 | // replace & and = with _
|
38 | signedQuery += "&" + key + "=" + params[key].replace(/\&|\=/g, "_");
|
39 | });
|
40 |
|
41 | var hash = "";
|
42 |
|
43 | switch (method) {
|
44 | case "md5hash":
|
45 | signedQuery += secret;
|
46 | hash = crypto.createHash("md5").update(signedQuery).digest("hex");
|
47 | break;
|
48 | case "md5":
|
49 | case "sha1":
|
50 | case "sha256":
|
51 | case "sha512":
|
52 | hash = crypto.createHmac(method, secret).update(signedQuery).digest("hex");
|
53 | break;
|
54 |
|
55 | default:
|
56 | throw "Unknown signature algorithm: " + method + ". Expected: md5hash, md5, sha1, sha256, or sha512";
|
57 | }
|
58 |
|
59 | return hash;
|
60 | }
|
61 | }]);
|
62 |
|
63 | return HashGenerator;
|
64 | }();
|
65 |
|
66 | module.exports = HashGenerator;
|
67 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9IYXNoR2VuZXJhdG9yLmpzIl0sIm5hbWVzIjpbImNyeXB0byIsInJlcXVpcmUiLCJIYXNoR2VuZXJhdG9yIiwibWV0aG9kIiwic2VjcmV0IiwicGFyYW1zIiwic2lnbmVkUXVlcnkiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJzaWciLCJPYmplY3QiLCJrZXlzIiwic29ydCIsImZvckVhY2giLCJrZXkiLCJyZXBsYWNlIiwiaGFzaCIsImNyZWF0ZUhhc2giLCJ1cGRhdGUiLCJkaWdlc3QiLCJjcmVhdGVIbWFjIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBTUEsU0FBU0MsUUFBUSxRQUFSLENBQWY7O0lBRU1DLGE7Ozs7Ozs7O0FBQ0o7Ozs7Ozs7Ozs2QkFTU0MsTSxFQUFRQyxNLEVBQVFDLE0sRUFBUTtBQUMvQkEsZUFBU0EsVUFBVSxFQUFuQjtBQUNBLFVBQUlDLGNBQWMsRUFBbEI7O0FBRUFELGVBQVNFLEtBQUtDLEtBQUwsQ0FBV0QsS0FBS0UsU0FBTCxDQUFlSixNQUFmLENBQVgsQ0FBVDs7QUFFQSxVQUFJQSxPQUFPSyxHQUFYLEVBQWdCO0FBQ2QsZUFBT0wsT0FBT0ssR0FBZDtBQUNEOztBQUVEQyxhQUFPQyxJQUFQLENBQVlQLE1BQVosRUFDR1EsSUFESCxHQUVHQyxPQUZILENBRVcsZUFBTztBQUNkO0FBQ0FSLHVCQUFlLE1BQU1TLEdBQU4sR0FBWSxHQUFaLEdBQWtCVixPQUFPVSxHQUFQLEVBQVlDLE9BQVosQ0FBb0IsUUFBcEIsRUFBOEIsR0FBOUIsQ0FBakM7QUFDRCxPQUxIOztBQU9BLFVBQUlDLE9BQU8sRUFBWDs7QUFFQSxjQUFRZCxNQUFSO0FBQ0UsYUFBSyxTQUFMO0FBQ0VHLHlCQUFlRixNQUFmO0FBQ0FhLGlCQUFPakIsT0FDSmtCLFVBREksQ0FDTyxLQURQLEVBRUpDLE1BRkksQ0FFR2IsV0FGSCxFQUdKYyxNQUhJLENBR0csS0FISCxDQUFQO0FBSUE7QUFDRixhQUFLLEtBQUw7QUFDQSxhQUFLLE1BQUw7QUFDQSxhQUFLLFFBQUw7QUFDQSxhQUFLLFFBQUw7QUFDRUgsaUJBQU9qQixPQUNKcUIsVUFESSxDQUNPbEIsTUFEUCxFQUNlQyxNQURmLEVBRUplLE1BRkksQ0FFR2IsV0FGSCxFQUdKYyxNQUhJLENBR0csS0FISCxDQUFQO0FBSUE7O0FBRUY7QUFDRSxrREFBc0NqQixNQUF0QztBQW5CSjs7QUFzQkEsYUFBT2MsSUFBUDtBQUNEOzs7Ozs7QUFHSEssT0FBT0MsT0FBUCxHQUFpQnJCLGFBQWpCIiwiZmlsZSI6Ikhhc2hHZW5lcmF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjcnlwdG8gPSByZXF1aXJlKFwiY3J5cHRvXCIpO1xuXG5jbGFzcyBIYXNoR2VuZXJhdG9yIHtcbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEgU2lnbmF0dXJlIEhhc2guXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXRob2QgLSB0aGUgbWV0aG9kIHRvIGJlIHVzZWQgd2hlbiBjcmVhdGluZyB0aGUgaGFzaFxuICAgKiBAcGFyYW0ge1N0cmluZ30gc2VjcmV0IC0gdGhlIHNlY3JldCB0byBiZSB1c2VkIHdoZW4gY3JlYXRpbmcgdGhlIGhhc2hcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIHBhcmFtcyB0byBnZW5lcmF0ZSBoYXNoIGZyb21cbiAgICpcbiAgICogQHJldHVybnMge1N0cmluZ30gdGhlIGdlbmVyYXRlZCB0b2tlblxuICAgKi9cbiAgZ2VuZXJhdGUobWV0aG9kLCBzZWNyZXQsIHBhcmFtcykge1xuICAgIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgICB2YXIgc2lnbmVkUXVlcnkgPSBcIlwiO1xuXG4gICAgcGFyYW1zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwYXJhbXMpKTtcblxuICAgIGlmIChwYXJhbXMuc2lnKSB7XG4gICAgICBkZWxldGUgcGFyYW1zLnNpZztcbiAgICB9XG5cbiAgICBPYmplY3Qua2V5cyhwYXJhbXMpXG4gICAgICAuc29ydCgpXG4gICAgICAuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAvLyByZXBsYWNlICYgYW5kID0gd2l0aCBfXG4gICAgICAgIHNpZ25lZFF1ZXJ5ICs9IFwiJlwiICsga2V5ICsgXCI9XCIgKyBwYXJhbXNba2V5XS5yZXBsYWNlKC9cXCZ8XFw9L2csIFwiX1wiKTtcbiAgICAgIH0pO1xuXG4gICAgdmFyIGhhc2ggPSBcIlwiO1xuXG4gICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgIGNhc2UgXCJtZDVoYXNoXCI6XG4gICAgICAgIHNpZ25lZFF1ZXJ5ICs9IHNlY3JldDtcbiAgICAgICAgaGFzaCA9IGNyeXB0b1xuICAgICAgICAgIC5jcmVhdGVIYXNoKFwibWQ1XCIpXG4gICAgICAgICAgLnVwZGF0ZShzaWduZWRRdWVyeSlcbiAgICAgICAgICAuZGlnZXN0KFwiaGV4XCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJtZDVcIjpcbiAgICAgIGNhc2UgXCJzaGExXCI6XG4gICAgICBjYXNlIFwic2hhMjU2XCI6XG4gICAgICBjYXNlIFwic2hhNTEyXCI6XG4gICAgICAgIGhhc2ggPSBjcnlwdG9cbiAgICAgICAgICAuY3JlYXRlSG1hYyhtZXRob2QsIHNlY3JldClcbiAgICAgICAgICAudXBkYXRlKHNpZ25lZFF1ZXJ5KVxuICAgICAgICAgIC5kaWdlc3QoXCJoZXhcIik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBgVW5rbm93biBzaWduYXR1cmUgYWxnb3JpdGhtOiAke21ldGhvZH0uIEV4cGVjdGVkOiBtZDVoYXNoLCBtZDUsIHNoYTEsIHNoYTI1Niwgb3Igc2hhNTEyYDtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzaDtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2hHZW5lcmF0b3I7XG4iXX0= |
\ | No newline at end of file |