const objectHash = require('object-hash'); const verifySignature = require('./verify-signature'); const { forum } = require('./db'); module.exports = async (req, res) => { const { hash } = req.params; console.log('read', hash); // Fetch content let data; try { data = await forum.get(req.params.hash); } catch (e) { console.log('read error:', e.message, hash); res.status(e.status).end(); return; } data.embeddedData = data.embeddedData || undefined; const { authors, content, signature, embeddedData, } = data; console.log({ content, embeddedData }); // Verify hash const derivedHash = objectHash({ authors, content, signature, embeddedData, }); if (derivedHash !== hash) { console.log('error: hash mismatch'); res.status(500).end(); return; } // Verify signature if (!verifySignature(data)) { console.log('error: signature verificaition failed'); res.status(500).end(); return; } // Return content res.json(data); };