format
This commit is contained in:
parent
05fe534e14
commit
67f586b65c
6 changed files with 40 additions and 32 deletions
|
@ -1,8 +1,6 @@
|
|||
const EventEmitter = require('events');
|
||||
const { hexToArray } = require('./utils');
|
||||
|
||||
const Raven = window.Raven;
|
||||
|
||||
class FileReceiver extends EventEmitter {
|
||||
constructor() {
|
||||
super();
|
||||
|
@ -34,7 +32,7 @@ class FileReceiver extends EventEmitter {
|
|||
const blob = new Blob([this.response]);
|
||||
const fileReader = new FileReader();
|
||||
fileReader.onload = function() {
|
||||
const meta = JSON.parse(xhr.getResponseHeader('X-File-Metadata'))
|
||||
const meta = JSON.parse(xhr.getResponseHeader('X-File-Metadata'));
|
||||
resolve({
|
||||
data: this.result,
|
||||
aad: meta.aad,
|
||||
|
|
|
@ -38,14 +38,18 @@ class FileSender extends EventEmitter {
|
|||
|
||||
upload() {
|
||||
return Promise.all([
|
||||
window.crypto.subtle.generateKey(
|
||||
{
|
||||
name: 'AES-GCM',
|
||||
length: 128
|
||||
},
|
||||
true,
|
||||
['encrypt', 'decrypt']
|
||||
).catch(err => console.log('There was an error generating a crypto key')),
|
||||
window.crypto.subtle
|
||||
.generateKey(
|
||||
{
|
||||
name: 'AES-GCM',
|
||||
length: 128
|
||||
},
|
||||
true,
|
||||
['encrypt', 'decrypt']
|
||||
)
|
||||
.catch(err =>
|
||||
console.log('There was an error generating a crypto key')
|
||||
),
|
||||
new Promise((resolve, reject) => {
|
||||
const reader = new FileReader();
|
||||
reader.readAsArrayBuffer(this.file);
|
||||
|
@ -56,15 +60,17 @@ class FileSender extends EventEmitter {
|
|||
])
|
||||
.then(([secretKey, plaintext]) => {
|
||||
return Promise.all([
|
||||
window.crypto.subtle.encrypt(
|
||||
{
|
||||
name: 'AES-GCM',
|
||||
iv: this.iv,
|
||||
additionalData: this.aad
|
||||
},
|
||||
secretKey,
|
||||
plaintext
|
||||
).catch(err => console.log('Error with encrypting.')),
|
||||
window.crypto.subtle
|
||||
.encrypt(
|
||||
{
|
||||
name: 'AES-GCM',
|
||||
iv: this.iv,
|
||||
additionalData: this.aad
|
||||
},
|
||||
secretKey,
|
||||
plaintext
|
||||
)
|
||||
.catch(err => console.log('Error with encrypting.')),
|
||||
window.crypto.subtle.exportKey('jwk', secretKey)
|
||||
]);
|
||||
})
|
||||
|
@ -100,7 +106,14 @@ class FileSender extends EventEmitter {
|
|||
};
|
||||
|
||||
xhr.open('post', '/upload/' + fileId, true);
|
||||
xhr.setRequestHeader('X-File-Metadata', JSON.stringify({ aad: arrayToHex(this.aad), iv: fileId, filename: file.name }))
|
||||
xhr.setRequestHeader(
|
||||
'X-File-Metadata',
|
||||
JSON.stringify({
|
||||
aad: arrayToHex(this.aad),
|
||||
iv: fileId,
|
||||
filename: file.name
|
||||
})
|
||||
);
|
||||
xhr.send(fd);
|
||||
});
|
||||
})
|
||||
|
|
|
@ -20,7 +20,6 @@ function hexToArray(str) {
|
|||
return iv;
|
||||
}
|
||||
|
||||
|
||||
function notify(str) {
|
||||
if (!('Notification' in window)) {
|
||||
return;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue