added unsafe and safe events instead of console logging when a checksum is tampered with

This commit is contained in:
Abhinav Adduri 2017-07-13 09:53:59 -07:00
parent 5dd5743871
commit 89bc51c821
2 changed files with 23 additions and 10 deletions

View File

@ -91,20 +91,21 @@ class FileReceiver extends EventEmitter {
this.emit('hashing', false); this.emit('hashing', false);
const integrity = new Uint8Array(calculatedHash).toString() === proposedHash.toString(); const integrity = new Uint8Array(calculatedHash).toString() === proposedHash.toString();
if (!integrity) { if (!integrity) {
this.emit('unsafe', true)
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
console.log('This file has been tampered with.')
reject(); 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);
})
]);
}) })
}) })
} }

View File

@ -235,6 +235,10 @@ describe('File Receiver', function() {
testDecrypting = isStillDecrypting; testDecrypting = isStillDecrypting;
}); });
fr.on('safe', isSafe => {
assert(isSafe);
})
return fr.download().then(([decrypted, name]) => { return fr.download().then(([decrypted, name]) => {
assert(decrypted); assert(decrypted);
assert(name); assert(name);
@ -256,6 +260,10 @@ describe('File Receiver', function() {
testHashing = isStillHashing; testHashing = isStillHashing;
}); });
fr.on('safe', isSafe => {
assert(isSafe);
})
return fr.download().then(([decrypted, name]) => { return fr.download().then(([decrypted, name]) => {
assert(decrypted); assert(decrypted);
assert(name); assert(name);
@ -305,6 +313,10 @@ describe('File Receiver', function() {
const fr = new FileReceiver(); const fr = new FileReceiver();
location.hash = secretKey; location.hash = secretKey;
fr.on('unsafe', isUnsafe => {
assert(isUnsafe)
})
fr.download().then(() => { fr.download().then(() => {
assert.fail(); assert.fail();
done(); done();