@walletpack/core
Version:
> TODO: description
134 lines (109 loc) • 4.11 kB
JavaScript
;
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;