UNPKG

crypto-conditions

Version:

Implementation of crypto-conditions in JavaScript

58 lines (45 loc) 1.72 kB
"use strict"; var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property"); var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault"); _Object$defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/createClass")); var _crypto = require("crypto"); var Mgf1 = /*#__PURE__*/function () { function Mgf1(opts) { (0, _classCallCheck2.default)(this, Mgf1); opts = opts || {}; this.hashAlgorithm = opts.hashAlgorithm || 'sha256'; this.hashLength = (0, _crypto.createHash)(this.hashAlgorithm).digest().length; this.saltLength = this.hashLength; } /** * Generate MGF1 full domain hash. * * Implementation of RFC 3447, section B.2.1. * * @param {Buffer} seed Seed from which mask is generated. * @param {Number} maskLength Intended length of the mask in bytes. * @return {Buffer} Mask */ (0, _createClass2.default)(Mgf1, [{ key: "generate", value: function generate(seed, maskLength) { var result = Buffer.alloc(maskLength); var len = Math.ceil(maskLength / this.hashLength); for (var i = 0; i < len; i++) { var counter = Buffer.alloc(4); counter.writeInt32BE(i, 0); var hash = (0, _crypto.createHash)(this.hashAlgorithm).update(seed).update(counter).digest(); hash.copy(result, i * this.hashLength); } return result; } }]); return Mgf1; }(); var _default = Mgf1; exports.default = _default;