Integrated Comlink.
This commit is contained in:
parent
ecf7bab5aa
commit
760a085dfd
7 changed files with 49 additions and 1772 deletions
|
@ -11,6 +11,7 @@
|
|||
"dependencies": {
|
||||
"axios": "^0.20.0",
|
||||
"bootstrap": "^4.5.2",
|
||||
"comlink": "^4.3.0",
|
||||
"formik": "^2.1.5",
|
||||
"http-proxy-middleware": "^1.0.5",
|
||||
"libsodium-wrappers": "^0.7.8",
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
import aescrypt from "utils/aescrypt";
|
||||
import { getEndpoint } from "utils/common/apiUtil";
|
||||
import { decrypt } from "utils/crypto/aes";
|
||||
import { strToUint8 } from "utils/crypto/common";
|
||||
import HTTPService from "./HTTPService";
|
||||
import * as Comlink from "comlink";
|
||||
|
||||
const decryptMetadata: any = typeof window !== 'undefined'
|
||||
&& Comlink.wrap(new Worker("worker/decryptMetadata.worker.js", { type: 'module' }));
|
||||
const decryptThumbnail: any = typeof window !== 'undefined'
|
||||
&& Comlink.wrap(new Worker("worker/decryptThumbnail.worker.js", { type: 'module' }));
|
||||
|
||||
const ENDPOINT = getEndpoint();
|
||||
|
||||
|
@ -12,7 +15,6 @@ export interface decryptionParams {
|
|||
header: string;
|
||||
nonce: string;
|
||||
};
|
||||
|
||||
export interface fileData {
|
||||
id: number;
|
||||
file: {
|
||||
|
@ -36,21 +38,11 @@ export interface fileData {
|
|||
};
|
||||
|
||||
const getFileMetaDataUsingWorker = (data: any, key: string) => {
|
||||
return new Promise((resolve) => {
|
||||
const worker = new Worker('worker/decryptMetadata.worker.js', { type: 'module' });
|
||||
const onWorkerMessage = (event) => resolve(event.data);
|
||||
worker.addEventListener('message', onWorkerMessage);
|
||||
worker.postMessage({ data, key });
|
||||
});
|
||||
return decryptMetadata({ data, key });
|
||||
}
|
||||
|
||||
const getFileUsingWorker = (data: any, key: string) => {
|
||||
return new Promise((resolve) => {
|
||||
const worker = new Worker('worker/decryptThumbnail.worker.js', { type: 'module' });
|
||||
const onWorkerMessage = (event) => resolve(event.data);
|
||||
worker.addEventListener('message', onWorkerMessage);
|
||||
worker.postMessage({ data, key });
|
||||
});
|
||||
return decryptThumbnail({ data, key });
|
||||
}
|
||||
|
||||
export const getFiles = async (sinceTime: string, token: string, limit: string, key: string) => {
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,21 +0,0 @@
|
|||
import { aescrypt } from './aescrypt';
|
||||
|
||||
const decrypt = (file: Uint8Array, password: String, binaryResponse: Boolean = false) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
aescrypt.decrypt(file, password, !binaryResponse, ({ data, error}) => {
|
||||
if (error) {
|
||||
console.log(error);
|
||||
reject(error);
|
||||
}
|
||||
resolve(data);
|
||||
});
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
export default {
|
||||
decrypt,
|
||||
}
|
|
@ -1,24 +1,23 @@
|
|||
import * as Comlink from 'comlink';
|
||||
import { base64ToUint8 } from "utils/crypto/common";
|
||||
import sodium from 'libsodium-wrappers';
|
||||
|
||||
function decryptMetadata(event) {
|
||||
const main = async () => {
|
||||
const data = event.data.data;
|
||||
await sodium.ready;
|
||||
const key = sodium.crypto_secretbox_open_easy(
|
||||
base64ToUint8(data.metadata.decryptionParams.encryptedKey),
|
||||
base64ToUint8(data.metadata.decryptionParams.keyDecryptionNonce),
|
||||
base64ToUint8(event.data.key));
|
||||
const metadata = sodium.crypto_secretbox_open_easy(
|
||||
base64ToUint8(data.metadata.encryptedData),
|
||||
base64ToUint8(data.metadata.decryptionParams.nonce),
|
||||
key);
|
||||
self.postMessage({
|
||||
...data,
|
||||
metadata: JSON.parse(new TextDecoder().decode(metadata))
|
||||
});
|
||||
}
|
||||
main();
|
||||
async function decryptMetadata(event) {
|
||||
console.log(event);
|
||||
const { data } = event;
|
||||
await sodium.ready;
|
||||
const key = sodium.crypto_secretbox_open_easy(
|
||||
base64ToUint8(data.metadata.decryptionParams.encryptedKey),
|
||||
base64ToUint8(data.metadata.decryptionParams.keyDecryptionNonce),
|
||||
base64ToUint8(event.key));
|
||||
const metadata = sodium.crypto_secretbox_open_easy(
|
||||
base64ToUint8(data.metadata.encryptedData),
|
||||
base64ToUint8(data.metadata.decryptionParams.nonce),
|
||||
key);
|
||||
return {
|
||||
...data,
|
||||
metadata: JSON.parse(new TextDecoder().decode(metadata))
|
||||
};
|
||||
}
|
||||
|
||||
self.addEventListener('message', decryptMetadata);
|
||||
Comlink.expose(decryptMetadata, self);
|
||||
|
|
|
@ -1,24 +1,22 @@
|
|||
import * as Comlink from 'comlink';
|
||||
import { base64ToUint8 } from "utils/crypto/common";
|
||||
import sodium from 'libsodium-wrappers';
|
||||
|
||||
function decryptThumbnail(event) {
|
||||
const main = async () => {
|
||||
const data = event.data.data;
|
||||
await sodium.ready;
|
||||
const key = sodium.crypto_secretbox_open_easy(
|
||||
base64ToUint8(data.thumbnail.decryptionParams.encryptedKey),
|
||||
base64ToUint8(data.thumbnail.decryptionParams.keyDecryptionNonce),
|
||||
base64ToUint8(event.data.key));
|
||||
const thumbnail = sodium.crypto_secretbox_open_easy(
|
||||
new Uint8Array(data.file),
|
||||
base64ToUint8(data.thumbnail.decryptionParams.nonce),
|
||||
key);
|
||||
self.postMessage({
|
||||
id: data.id,
|
||||
data: thumbnail,
|
||||
});
|
||||
}
|
||||
main();
|
||||
async function decryptThumbnail(event) {
|
||||
const { data } = event;
|
||||
await sodium.ready;
|
||||
const key = sodium.crypto_secretbox_open_easy(
|
||||
base64ToUint8(data.thumbnail.decryptionParams.encryptedKey),
|
||||
base64ToUint8(data.thumbnail.decryptionParams.keyDecryptionNonce),
|
||||
base64ToUint8(event.key));
|
||||
const thumbnail = sodium.crypto_secretbox_open_easy(
|
||||
new Uint8Array(data.file),
|
||||
base64ToUint8(data.thumbnail.decryptionParams.nonce),
|
||||
key);
|
||||
return {
|
||||
id: data.id,
|
||||
data: thumbnail,
|
||||
};
|
||||
}
|
||||
|
||||
self.addEventListener('message', decryptThumbnail);
|
||||
Comlink.expose(decryptThumbnail, self);
|
||||
|
|
|
@ -2076,6 +2076,11 @@ color-name@~1.1.4:
|
|||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
||||
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
||||
|
||||
comlink@^4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/comlink/-/comlink-4.3.0.tgz#80b3366baccd87897dab3638ebfcfae28b2f87c7"
|
||||
integrity sha512-mu4KKKNuW8TvkfpW/H88HBPeILubBS6T94BdD1VWBXNXfiyqVtwUCVNO1GeNOBTsIswzsMjWlycYr+77F5b84g==
|
||||
|
||||
commander@^2.20.0:
|
||||
version "2.20.3"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||
|
|
Loading…
Add table
Reference in a new issue