added loading, hashing, and encrypting events for uploader; decrypting and hashing events for the downloader

This commit is contained in:
Abhinav Adduri 2017-07-11 13:30:25 -07:00
parent 57c7c475fc
commit bfdab156e6
4 changed files with 69 additions and 3 deletions

View file

@ -62,6 +62,7 @@ class FileReceiver extends EventEmitter {
['encrypt', 'decrypt']
)
]).then(([fdata, key]) => {
this.emit('decrypting', true);
return Promise.all([
window.crypto.subtle.decrypt(
{
@ -71,7 +72,12 @@ class FileReceiver extends EventEmitter {
},
key,
fdata.data
),
).then(decrypted => {
this.emit('decrypting', false);
return new Promise((resolve, reject) => {
resolve(decrypted);
})
}),
new Promise((resolve, reject) => {
resolve(fdata.filename);
}),
@ -80,7 +86,9 @@ class FileReceiver extends EventEmitter {
})
]);
}).then(([decrypted, fname, proposedHash]) => {
this.emit('hashing', true);
return window.crypto.subtle.digest('SHA-256', decrypted).then(calculatedHash => {
this.emit('hashing', false);
const integrity = new Uint8Array(calculatedHash).toString() === proposedHash.toString();
if (!integrity) {
return new Promise((resolve, reject) => {