diff --git a/frontend/src/fileReceiver.js b/frontend/src/fileReceiver.js index 0404bda8..3a4931da 100644 --- a/frontend/src/fileReceiver.js +++ b/frontend/src/fileReceiver.js @@ -91,20 +91,21 @@ class FileReceiver extends EventEmitter { this.emit('hashing', false); const integrity = new Uint8Array(calculatedHash).toString() === proposedHash.toString(); if (!integrity) { + this.emit('unsafe', true) return new Promise((resolve, reject) => { - console.log('This file has been tampered with.') reject(); }) + } else { + this.emit('safe', true); + return Promise.all([ + new Promise((resolve, reject) => { + resolve(decrypted); + }), + new Promise((resolve, reject) => { + resolve(fname); + }) + ]); } - - return Promise.all([ - new Promise((resolve, reject) => { - resolve(decrypted); - }), - new Promise((resolve, reject) => { - resolve(fname); - }) - ]); }) }) } diff --git a/test/frontend/frontend.test.js b/test/frontend/frontend.test.js index ff7441d6..2ec69bf3 100644 --- a/test/frontend/frontend.test.js +++ b/test/frontend/frontend.test.js @@ -235,6 +235,10 @@ describe('File Receiver', function() { testDecrypting = isStillDecrypting; }); + fr.on('safe', isSafe => { + assert(isSafe); + }) + return fr.download().then(([decrypted, name]) => { assert(decrypted); assert(name); @@ -256,6 +260,10 @@ describe('File Receiver', function() { testHashing = isStillHashing; }); + fr.on('safe', isSafe => { + assert(isSafe); + }) + return fr.download().then(([decrypted, name]) => { assert(decrypted); assert(name); @@ -305,6 +313,10 @@ describe('File Receiver', function() { const fr = new FileReceiver(); location.hash = secretKey; + fr.on('unsafe', isUnsafe => { + assert(isUnsafe) + }) + fr.download().then(() => { assert.fail(); done();