fix magicMetadata encryption and decryption

This commit is contained in:
abhinav-grd 2021-09-21 17:14:28 +05:30
parent 3cab5372e9
commit 973aedb7d3

View file

@ -135,24 +135,30 @@ export function sortFiles(files: File[]) {
}
export async function decryptFile(file: File, collection: Collection) {
const worker = await new CryptoWorker();
file.key = await worker.decryptB64(
file.encryptedKey,
file.keyDecryptionNonce,
collection.key
);
const encryptedMetadata = file.metadata as unknown as fileAttribute;
file.metadata = await worker.decryptMetadata(
encryptedMetadata.encryptedData,
encryptedMetadata.decryptionHeader,
file.key
);
file.magicMetadata.data = await worker.decryptMetadata(
file.magicMetadata.data,
file.magicMetadata.header,
file.key
);
return file;
try {
const worker = await new CryptoWorker();
file.key = await worker.decryptB64(
file.encryptedKey,
file.keyDecryptionNonce,
collection.key
);
const encryptedMetadata = file.metadata as unknown as fileAttribute;
file.metadata = await worker.decryptMetadata(
encryptedMetadata.encryptedData,
encryptedMetadata.decryptionHeader,
file.key
);
if (file.magicMetadata?.data) {
file.magicMetadata.data = await worker.decryptMetadata(
file.magicMetadata.data,
file.magicMetadata.header,
file.key
);
}
return file;
} catch (e) {
logError(e, 'file decryption failed');
}
}
export function removeUnnecessaryFileProps(files: File[]): File[] {
@ -238,7 +244,7 @@ export async function archiveFiles(files: File[], selected: SelectedState) {
visibility: VISIBILITY_STATE.ARCHIVED,
};
const encryptedMagicMetadata: EncryptionResult =
await worker.encryptMetadata(updatedMagicMetadataProps);
await worker.encryptMetadata(updatedMagicMetadataProps, file.key);
file.magicMetadata = {
version: file.magicMetadata.version + 1,
count: Object.keys(updatedMagicMetadataProps).length,