UNPKG

@walletpack/core

Version:

> TODO: description

134 lines (109 loc) 4.11 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _Seeder = _interopRequireDefault(require("../services/secure/Seeder")); var ecc = require('eosjs-ecc'); var scrypt = require('scrypt-async'); var Hasher = /*#__PURE__*/ function () { function Hasher() { (0, _classCallCheck2["default"])(this, Hasher); } (0, _createClass2["default"])(Hasher, null, [{ key: "unsaltedQuickHash", /*** * Hashes a cleartext using the SHA-256 algorithm. * This is INSECURE and should only be used for fingerprinting. * @param cleartext */ value: function unsaltedQuickHash(cleartext) { return ecc.sha256(cleartext); } /*** * Hashes a cleartext using scrypt. * @param cleartext * @param salt */ }, { key: "secureHash", value: function () { var _secureHash = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee2(cleartext) { var salt, _args2 = arguments; return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: salt = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : null; return _context2.abrupt("return", new Promise( /*#__PURE__*/ function () { var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee(resolve) { return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (salt) { _context.next = 7; break; } _context.next = 3; return _Seeder["default"].getSalt(); case 3: _context.t0 = _context.sent; if (_context.t0) { _context.next = 6; break; } _context.t0 = 'SALT_ME'; case 6: salt = _context.t0; case 7: scrypt(cleartext, salt, { N: 16384, r: 8, p: 1, dkLen: 16, encoding: 'hex' }, function (derivedKey) { resolve(derivedKey); }); case 8: case "end": return _context.stop(); } } }, _callee); })); return function (_x2) { return _ref.apply(this, arguments); }; }())); case 2: case "end": return _context2.stop(); } } }, _callee2); })); function secureHash(_x) { return _secureHash.apply(this, arguments); } return secureHash; }() }]); return Hasher; }(); exports["default"] = Hasher;