chainscript
Version:
Client for chainscript.io
54 lines (36 loc) • 1.3 kB
JavaScript
;
exports.__esModule = true;
exports['default'] = hashFile;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _crypto = require('crypto');
var _crypto2 = _interopRequireDefault(_crypto);
var _multihashes = require('multihashes');
var _multihashes2 = _interopRequireDefault(_multihashes);
var _bs58 = require('bs58');
var _bs582 = _interopRequireDefault(_bs58);
var HASH_MAP = {
sha1: 'sha1',
sha256: 'sha2-256',
sha512: 'sha2-512'
};
exports.HASH_MAP = HASH_MAP;
function hashFile(input, algorithm) {
return new Promise(function (resolve, reject) {
var algorithmName = HASH_MAP[algorithm];
if (typeof algorithmName === 'undefined') {
throw new Error('Unsupported algorithm: ' + algorithm);
}
var hash = _crypto2['default'].createHash(algorithm);
var reader = typeof input === 'string' ? _fs2['default'].createReadStream(input) : input;
reader.on('error', reject);
reader.on('data', function (data) {
return hash.update(data);
});
reader.on('end', function () {
var res = _bs582['default'].encode(_multihashes2['default'].encode(hash.digest(), algorithmName));
resolve(res);
});
});
}