UNPKG

chainscript

Version:
93 lines (63 loc) 2.24 kB
'use strict'; exports.__esModule = true; exports['default'] = verifyPDF; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _stream = require('stream'); var _multihashes = require('multihashes'); var _multihashes2 = _interopRequireDefault(_multihashes); var _bs58 = require('bs58'); var _bs582 = _interopRequireDefault(_bs58); var _invertHash = require('invert-hash'); var _invertHash2 = _interopRequireDefault(_invertHash); var _objectPath = require('object-path'); var _objectPath2 = _interopRequireDefault(_objectPath); var _readFromPDF = require('./readFromPDF'); var _readFromPDF2 = _interopRequireDefault(_readFromPDF); var _hashPDF = require('./hashPDF'); var _hashPDF2 = _interopRequireDefault(_hashPDF); var _hashFile = require('./hashFile'); var INVERTED_HASH_MAP = _invertHash2['default'](_hashFile.HASH_MAP); function verifyPDF(input, root, toJson) { if (root === undefined) root = 'body.content.hash'; var hash = undefined; var algorithm = undefined; var input1 = undefined; var input2 = undefined; if (typeof input === 'string') { input1 = input; input2 = input; } else { input1 = new _stream.PassThrough(); input2 = new _stream.PassThrough(); input.pipe(input1); input.pipe(input2); } return _readFromPDF2['default'](input1).then(function (json) { if (!json) { if (toJson) { return { verified: false, wants: null, has: null }; } throw new Error('Failed'); } hash = _objectPath2['default'].get(json, root); var buf = new Buffer(_bs582['default'].decode(hash)); var algorithmName = _multihashes2['default'].decode(buf).name; algorithm = INVERTED_HASH_MAP[algorithmName]; if (typeof algorithm === 'undefined') { throw new Error('Unsupported algorithm: ' + algorithmName); } return _hashPDF2['default'](input2, algorithm, null); }).then(function (h) { if (hash === h) { if (toJson) { return { verified: true, wants: hash, has: h }; } return true; } if (toJson) { return { verified: false, wants: hash, has: h }; } throw new Error('Failed'); }); } module.exports = exports['default'];