Propagate
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import log from "@/base/log";
|
||||
import { apiURL } from "@/base/origins";
|
||||
import { ensureString } from "@/utils/ensure";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import { ApiError, CustomError } from "@ente/shared/error";
|
||||
import HTTPService from "@ente/shared/network/HTTPService";
|
||||
import { getToken } from "@ente/shared/storage/localStorage/helpers";
|
||||
@@ -13,7 +13,7 @@ export const getAuthCodes = async (): Promise<Code[]> => {
|
||||
const masterKey = await getActualKey();
|
||||
try {
|
||||
const authKeyData = await getAuthKey();
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const authenticatorKey = await cryptoWorker.decryptB64(
|
||||
authKeyData.encryptedKey,
|
||||
authKeyData.header,
|
||||
@@ -30,11 +30,11 @@ export const getAuthCodes = async (): Promise<Code[]> => {
|
||||
if (!entity.header) return undefined;
|
||||
try {
|
||||
const decryptedCode =
|
||||
await cryptoWorker.decryptMetadata(
|
||||
entity.encryptedData,
|
||||
entity.header,
|
||||
authenticatorKey,
|
||||
);
|
||||
await cryptoWorker.decryptMetadataJSON({
|
||||
encryptedDataB64: entity.encryptedData,
|
||||
decryptionHeaderB64: entity.header,
|
||||
keyB64: authenticatorKey,
|
||||
});
|
||||
return codeFromURIString(
|
||||
entity.id,
|
||||
ensureString(decryptedCode),
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
||||
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import { nameAndExtension } from "@/base/file";
|
||||
import log from "@/base/log";
|
||||
import { apiURL, customAPIOrigin } from "@/base/origins";
|
||||
@@ -21,7 +22,6 @@ import type {
|
||||
import { shuffled } from "@/utils/array";
|
||||
import { ensure } from "@/utils/ensure";
|
||||
import { wait } from "@/utils/promise";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import { ApiError } from "@ente/shared/error";
|
||||
import HTTPService from "@ente/shared/network/HTTPService";
|
||||
import type { AxiosResponse } from "axios";
|
||||
@@ -188,7 +188,7 @@ const decryptEnteFile = async (
|
||||
encryptedFile: EncryptedEnteFile,
|
||||
collectionKey: string,
|
||||
): Promise<EnteFile> => {
|
||||
const worker = await ComlinkCryptoWorker.getInstance();
|
||||
const worker = await sharedCryptoWorker();
|
||||
const {
|
||||
encryptedKey,
|
||||
keyDecryptionNonce,
|
||||
@@ -202,11 +202,11 @@ const decryptEnteFile = async (
|
||||
keyDecryptionNonce,
|
||||
collectionKey,
|
||||
);
|
||||
const fileMetadata = await worker.decryptMetadata(
|
||||
metadata.encryptedData,
|
||||
metadata.decryptionHeader,
|
||||
fileKey,
|
||||
);
|
||||
const fileMetadata = await worker.decryptMetadataJSON({
|
||||
encryptedDataB64: metadata.encryptedData,
|
||||
decryptionHeaderB64: metadata.decryptionHeader,
|
||||
keyB64: fileKey,
|
||||
});
|
||||
let fileMagicMetadata: FileMagicMetadata | undefined;
|
||||
let filePubMagicMetadata: FilePublicMagicMetadata | undefined;
|
||||
if (magicMetadata?.data) {
|
||||
@@ -351,7 +351,7 @@ const downloadFile = async (
|
||||
`Failed to fetch file with ID ${file.id}: HTTP ${res.status}`,
|
||||
);
|
||||
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const decrypted = await cryptoWorker.decryptFile(
|
||||
new Uint8Array(await res.arrayBuffer()),
|
||||
await cryptoWorker.fromB64(
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import SingleInputForm, {
|
||||
type SingleInputFormProps,
|
||||
} from "@ente/shared/components/SingleInputForm";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import { Dialog, Stack, Typography } from "@mui/material";
|
||||
import { t } from "i18next";
|
||||
|
||||
@@ -27,7 +27,7 @@ export function PublicLinkSetPassword({
|
||||
};
|
||||
|
||||
const enablePublicUrlPassword = async (password: string) => {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const kekSalt = await cryptoWorker.generateSaltToDeriveKey();
|
||||
const kek = await cryptoWorker.deriveInteractiveKey(password, kekSalt);
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import log from "@/base/log";
|
||||
import {
|
||||
decryptPublicMagicMetadata,
|
||||
@@ -13,7 +14,6 @@ import { EnteFile } from "@/new/photos/types/file";
|
||||
import { fileLogID } from "@/new/photos/utils/file";
|
||||
import { ensure } from "@/utils/ensure";
|
||||
import DialogBox from "@ente/shared/components/DialogBox/";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import {
|
||||
Button,
|
||||
FormControl,
|
||||
@@ -353,7 +353,7 @@ const updateEnteFileDate = async (
|
||||
|
||||
if (!newDate) return;
|
||||
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
|
||||
const existingUIDate = getUICreationDate(
|
||||
enteFile,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { EnteDrawer } from "@/base/components/EnteDrawer";
|
||||
import { Titlebar } from "@/base/components/Titlebar";
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import { nameAndExtension } from "@/base/file";
|
||||
import log from "@/base/log";
|
||||
import type { ParsedMetadata } from "@/media/file-metadata";
|
||||
@@ -19,7 +20,6 @@ import { formattedByteSize } from "@/new/photos/utils/units";
|
||||
import CopyButton from "@ente/shared/components/CodeBlock/CopyButton";
|
||||
import { FlexWrapper } from "@ente/shared/components/Container";
|
||||
import EnteSpinner from "@ente/shared/components/EnteSpinner";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import { getPublicMagicMetadataMTSync } from "@ente/shared/file-metadata";
|
||||
import { formatDate, formatTime } from "@ente/shared/time/format";
|
||||
import BackupOutlined from "@mui/icons-material/BackupOutlined";
|
||||
@@ -399,7 +399,7 @@ export const CreationTime: React.FC<CreationTimeProps> = ({
|
||||
return;
|
||||
}
|
||||
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
await updateRemotePublicMagicMetadata(
|
||||
enteFile,
|
||||
{ dateTime, editedTime: timestamp },
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import log from "@/base/log";
|
||||
import downloadManager from "@/new/photos/services/download";
|
||||
import { EnteFile } from "@/new/photos/types/file";
|
||||
@@ -16,7 +17,6 @@ import SingleInputForm, {
|
||||
type SingleInputFormProps,
|
||||
} from "@ente/shared/components/SingleInputForm";
|
||||
import { PHOTOS_PAGES as PAGES } from "@ente/shared/constants/pages";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import { CustomError, parseSharingErrorCodes } from "@ente/shared/error";
|
||||
import { useFileInput } from "@ente/shared/hooks/useFileInput";
|
||||
import AddPhotoAlternateOutlined from "@mui/icons-material/AddPhotoAlternateOutlined";
|
||||
@@ -204,7 +204,7 @@ export default function PublicCollectionGallery() {
|
||||
const main = async () => {
|
||||
let redirectingToWebsite = false;
|
||||
try {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
await downloadManager.init();
|
||||
|
||||
url.current = window.location.href;
|
||||
@@ -421,7 +421,7 @@ export default function PublicCollectionGallery() {
|
||||
setFieldError,
|
||||
) => {
|
||||
try {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
let hashedPassword: string = null;
|
||||
try {
|
||||
const publicUrl = publicCollection.publicURLs[0];
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import log from "@/base/log";
|
||||
import { apiURL } from "@/base/origins";
|
||||
import { ItemVisibility } from "@/media/file-metadata";
|
||||
@@ -9,7 +10,6 @@ import {
|
||||
UpdateMagicMetadataRequest,
|
||||
} from "@/new/photos/types/magicMetadata";
|
||||
import { batch } from "@/utils/array";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import { CustomError } from "@ente/shared/error";
|
||||
import HTTPService from "@ente/shared/network/HTTPService";
|
||||
import localForage from "@ente/shared/storage/localForage";
|
||||
@@ -99,7 +99,7 @@ const getCollectionWithSecrets = async (
|
||||
collection: EncryptedCollection,
|
||||
masterKey: string,
|
||||
): Promise<Collection> => {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const userID = getData(LS_KEYS.USER).id;
|
||||
let collectionKey: string;
|
||||
if (collection.owner.id === userID) {
|
||||
@@ -133,22 +133,22 @@ const getCollectionWithSecrets = async (
|
||||
if (collection.magicMetadata?.data) {
|
||||
collectionMagicMetadata = {
|
||||
...collection.magicMetadata,
|
||||
data: await cryptoWorker.decryptMetadata(
|
||||
collection.magicMetadata.data,
|
||||
collection.magicMetadata.header,
|
||||
collectionKey,
|
||||
),
|
||||
data: await cryptoWorker.decryptMetadataJSON({
|
||||
encryptedDataB64: collection.magicMetadata.data,
|
||||
decryptionHeaderB64: collection.magicMetadata.header,
|
||||
keyB64: collectionKey,
|
||||
}),
|
||||
};
|
||||
}
|
||||
let collectionPublicMagicMetadata: CollectionPublicMagicMetadata;
|
||||
if (collection.pubMagicMetadata?.data) {
|
||||
collectionPublicMagicMetadata = {
|
||||
...collection.pubMagicMetadata,
|
||||
data: await cryptoWorker.decryptMetadata(
|
||||
collection.pubMagicMetadata.data,
|
||||
collection.pubMagicMetadata.header,
|
||||
collectionKey,
|
||||
),
|
||||
data: await cryptoWorker.decryptMetadataJSON({
|
||||
encryptedDataB64: collection.pubMagicMetadata.data,
|
||||
decryptionHeaderB64: collection.pubMagicMetadata.header,
|
||||
keyB64: collectionKey,
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -156,11 +156,11 @@ const getCollectionWithSecrets = async (
|
||||
if (collection.sharedMagicMetadata?.data) {
|
||||
collectionShareeMagicMetadata = {
|
||||
...collection.sharedMagicMetadata,
|
||||
data: await cryptoWorker.decryptMetadata(
|
||||
collection.sharedMagicMetadata.data,
|
||||
collection.sharedMagicMetadata.header,
|
||||
collectionKey,
|
||||
),
|
||||
data: await cryptoWorker.decryptMetadataJSON({
|
||||
encryptedDataB64: collection.sharedMagicMetadata.data,
|
||||
decryptionHeaderB64: collection.sharedMagicMetadata.header,
|
||||
keyB64: collectionKey,
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -415,7 +415,7 @@ const createCollection = async (
|
||||
magicMetadataProps?: CollectionMagicMetadataProps,
|
||||
): Promise<Collection> => {
|
||||
try {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const encryptionKey = await getActualKey();
|
||||
const token = getToken();
|
||||
const collectionKey = await cryptoWorker.generateEncryptionKey();
|
||||
@@ -427,10 +427,10 @@ const createCollection = async (
|
||||
if (magicMetadataProps) {
|
||||
const magicMetadata = await updateMagicMetadata(magicMetadataProps);
|
||||
const encryptedMagicMetadataProps =
|
||||
await cryptoWorker.encryptMetadata(
|
||||
magicMetadataProps,
|
||||
collectionKey,
|
||||
);
|
||||
await cryptoWorker.encryptMetadataJSON({
|
||||
jsonValue: magicMetadataProps,
|
||||
keyB64: collectionKey,
|
||||
});
|
||||
|
||||
encryptedMagicMetadata = {
|
||||
...magicMetadata,
|
||||
@@ -607,7 +607,7 @@ const encryptWithNewCollectionKey = async (
|
||||
files: EnteFile[],
|
||||
): Promise<EncryptedFileKey[]> => {
|
||||
const fileKeysEncryptedWithNewCollection: EncryptedFileKey[] = [];
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
for (const file of files) {
|
||||
const newEncryptedKey = await cryptoWorker.encryptToB64(
|
||||
file.key,
|
||||
@@ -797,13 +797,13 @@ export const updateCollectionMagicMetadata = async (
|
||||
return;
|
||||
}
|
||||
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
|
||||
const { encryptedDataB64, decryptionHeaderB64 } =
|
||||
await cryptoWorker.encryptMetadata(
|
||||
updatedMagicMetadata.data,
|
||||
collection.key,
|
||||
);
|
||||
await cryptoWorker.encryptMetadataJSON({
|
||||
jsonValue: updatedMagicMetadata.data,
|
||||
keyB64: collection.key,
|
||||
});
|
||||
|
||||
const reqBody: UpdateMagicMetadataRequest = {
|
||||
id: collection.id,
|
||||
@@ -842,13 +842,13 @@ export const updateSharedCollectionMagicMetadata = async (
|
||||
return;
|
||||
}
|
||||
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
|
||||
const { encryptedDataB64, decryptionHeaderB64 } =
|
||||
await cryptoWorker.encryptMetadata(
|
||||
updatedMagicMetadata.data,
|
||||
collection.key,
|
||||
);
|
||||
await cryptoWorker.encryptMetadataJSON({
|
||||
jsonValue: updatedMagicMetadata.data,
|
||||
keyB64: collection.key,
|
||||
});
|
||||
|
||||
const reqBody: UpdateMagicMetadataRequest = {
|
||||
id: collection.id,
|
||||
@@ -887,13 +887,13 @@ export const updatePublicCollectionMagicMetadata = async (
|
||||
return;
|
||||
}
|
||||
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
|
||||
const { encryptedDataB64, decryptionHeaderB64 } =
|
||||
await cryptoWorker.encryptMetadata(
|
||||
updatedPublicMagicMetadata.data,
|
||||
collection.key,
|
||||
);
|
||||
await cryptoWorker.encryptMetadataJSON({
|
||||
jsonValue: updatedPublicMagicMetadata.data,
|
||||
keyB64: collection.key,
|
||||
});
|
||||
|
||||
const reqBody: UpdateMagicMetadataRequest = {
|
||||
id: collection.id,
|
||||
@@ -932,7 +932,7 @@ export const renameCollection = async (
|
||||
await changeCollectionSubType(collection, SUB_TYPE.DEFAULT);
|
||||
}
|
||||
const token = getToken();
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const { encryptedData: encryptedName, nonce: nameDecryptionNonce } =
|
||||
await cryptoWorker.encryptUTF8(newCollectionName, collection.key);
|
||||
const collectionRenameRequest = {
|
||||
@@ -956,7 +956,7 @@ export const shareCollection = async (
|
||||
role: string,
|
||||
) => {
|
||||
try {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const token = getToken();
|
||||
const publicKey: string = await getPublicKey(withUserEmail);
|
||||
const encryptedKey = await cryptoWorker.boxSeal(
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import log from "@/base/log";
|
||||
import { apiURL } from "@/base/origins";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import HTTPService from "@ente/shared/network/HTTPService";
|
||||
import localForage from "@ente/shared/storage/localForage";
|
||||
import { getToken } from "@ente/shared/storage/localStorage/helpers";
|
||||
@@ -68,7 +68,7 @@ export const getEntityKey = async (type: EntityType) => {
|
||||
},
|
||||
);
|
||||
const encryptedEntityKey: EncryptedEntityKey = resp.data;
|
||||
const worker = await ComlinkCryptoWorker.getInstance();
|
||||
const worker = await sharedCryptoWorker();
|
||||
const masterKey = await getActualKey();
|
||||
const { encryptedKey, header, ...rest } = encryptedEntityKey;
|
||||
const decryptedData = await worker.decryptB64(
|
||||
@@ -129,12 +129,12 @@ const syncEntity = async <T>(type: EntityType): Promise<Entity<T>> => {
|
||||
return entity as unknown as Entity<T>;
|
||||
}
|
||||
const { encryptedData, header, ...rest } = entity;
|
||||
const worker = await ComlinkCryptoWorker.getInstance();
|
||||
const decryptedData = await worker.decryptMetadata(
|
||||
encryptedData,
|
||||
header,
|
||||
entityKey.data,
|
||||
);
|
||||
const worker = await sharedCryptoWorker();
|
||||
const decryptedData = await worker.decryptMetadataJSON({
|
||||
encryptedDataB64: encryptedData,
|
||||
decryptionHeaderB64: header,
|
||||
keyB64: entityKey.data,
|
||||
});
|
||||
return {
|
||||
...rest,
|
||||
data: decryptedData,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import log from "@/base/log";
|
||||
import { apiURL } from "@/base/origins";
|
||||
import { getLocalFiles, setLocalFiles } from "@/new/photos/services/files";
|
||||
@@ -11,7 +12,6 @@ import {
|
||||
import { BulkUpdateMagicMetadataRequest } from "@/new/photos/types/magicMetadata";
|
||||
import { mergeMetadata } from "@/new/photos/utils/file";
|
||||
import { batch } from "@/utils/array";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import HTTPService from "@ente/shared/network/HTTPService";
|
||||
import { getToken } from "@ente/shared/storage/localStorage/helpers";
|
||||
import { REQUEST_BATCH_SIZE } from "constants/api";
|
||||
@@ -186,16 +186,16 @@ export const updateFileMagicMetadata = async (
|
||||
return;
|
||||
}
|
||||
const reqBody: BulkUpdateMagicMetadataRequest = { metadataList: [] };
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
for (const {
|
||||
file,
|
||||
updatedMagicMetadata,
|
||||
} of fileWithUpdatedMagicMetadataList) {
|
||||
const { encryptedDataB64, decryptionHeaderB64 } =
|
||||
await cryptoWorker.encryptMetadata(
|
||||
updatedMagicMetadata.data,
|
||||
file.key,
|
||||
);
|
||||
await cryptoWorker.encryptMetadataJSON({
|
||||
jsonValue: updatedMagicMetadata.data,
|
||||
keyB64: file.key,
|
||||
});
|
||||
reqBody.metadataList.push({
|
||||
id: file.id,
|
||||
magicMetadata: {
|
||||
@@ -233,16 +233,16 @@ export const updateFilePublicMagicMetadata = async (
|
||||
return;
|
||||
}
|
||||
const reqBody: BulkUpdateMagicMetadataRequest = { metadataList: [] };
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
for (const {
|
||||
file,
|
||||
updatedPublicMagicMetadata,
|
||||
} of fileWithUpdatedPublicMagicMetadataList) {
|
||||
const { encryptedDataB64, decryptionHeaderB64 } =
|
||||
await cryptoWorker.encryptMetadata(
|
||||
updatedPublicMagicMetadata.data,
|
||||
file.key,
|
||||
);
|
||||
await cryptoWorker.encryptMetadataJSON({
|
||||
jsonValue: updatedPublicMagicMetadata.data,
|
||||
keyB64: file.key,
|
||||
});
|
||||
reqBody.metadataList.push({
|
||||
id: file.id,
|
||||
magicMetadata: {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import log from "@/base/log";
|
||||
import { apiURL } from "@/base/origins";
|
||||
import { EncryptedEnteFile, EnteFile } from "@/new/photos/types/file";
|
||||
import { mergeMetadata } from "@/new/photos/utils/file";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import { CustomError, parseSharingErrorCodes } from "@ente/shared/error";
|
||||
import HTTPService from "@ente/shared/network/HTTPService";
|
||||
import localForage from "@ente/shared/storage/localForage";
|
||||
@@ -315,7 +315,7 @@ export const getPublicCollection = async (
|
||||
const fetchedCollection = resp.data.collection;
|
||||
const referralCode = resp.data.referralCode ?? "";
|
||||
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
|
||||
const collectionName = (fetchedCollection.name =
|
||||
fetchedCollection.name ||
|
||||
@@ -329,11 +329,12 @@ export const getPublicCollection = async (
|
||||
if (fetchedCollection.pubMagicMetadata?.data) {
|
||||
collectionPublicMagicMetadata = {
|
||||
...fetchedCollection.pubMagicMetadata,
|
||||
data: await cryptoWorker.decryptMetadata(
|
||||
fetchedCollection.pubMagicMetadata.data,
|
||||
fetchedCollection.pubMagicMetadata.header,
|
||||
collectionKey,
|
||||
),
|
||||
data: await cryptoWorker.decryptMetadataJSON({
|
||||
encryptedDataB64: fetchedCollection.pubMagicMetadata.data,
|
||||
decryptionHeaderB64:
|
||||
fetchedCollection.pubMagicMetadata.header,
|
||||
keyB64: collectionKey,
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import { getData, LS_KEYS } from "@ente/shared/storage/localStorage";
|
||||
import { getActualKey } from "@ente/shared/user";
|
||||
|
||||
export async function decryptDeleteAccountChallenge(
|
||||
encryptedChallenge: string,
|
||||
) {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const masterKey = await getActualKey();
|
||||
const keyAttributes = getData(LS_KEYS.KEY_ATTRIBUTES);
|
||||
const secretKey = await cryptoWorker.decryptB64(
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import log from "@/base/log";
|
||||
import { type Electron } from "@/base/types/ipc";
|
||||
import { ItemVisibility } from "@/media/file-metadata";
|
||||
@@ -19,7 +20,6 @@ import { mergeMetadata } from "@/new/photos/utils/file";
|
||||
import { safeFileName } from "@/new/photos/utils/native-fs";
|
||||
import { writeStream } from "@/new/photos/utils/native-stream";
|
||||
import { withTimeout } from "@/utils/promise";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import { LS_KEYS, getData } from "@ente/shared/storage/localStorage";
|
||||
import type { User } from "@ente/shared/user/types";
|
||||
import { downloadUsingAnchor } from "@ente/shared/utils";
|
||||
@@ -133,7 +133,7 @@ export async function decryptFile(
|
||||
collectionKey: string,
|
||||
): Promise<EnteFile> {
|
||||
try {
|
||||
const worker = await ComlinkCryptoWorker.getInstance();
|
||||
const worker = await sharedCryptoWorker();
|
||||
const {
|
||||
encryptedKey,
|
||||
keyDecryptionNonce,
|
||||
@@ -147,31 +147,31 @@ export async function decryptFile(
|
||||
keyDecryptionNonce,
|
||||
collectionKey,
|
||||
);
|
||||
const fileMetadata = await worker.decryptMetadata(
|
||||
metadata.encryptedData,
|
||||
metadata.decryptionHeader,
|
||||
fileKey,
|
||||
);
|
||||
const fileMetadata = await worker.decryptMetadataJSON({
|
||||
encryptedDataB64: metadata.encryptedData,
|
||||
decryptionHeaderB64: metadata.decryptionHeader,
|
||||
keyB64: fileKey,
|
||||
});
|
||||
let fileMagicMetadata: FileMagicMetadata;
|
||||
let filePubMagicMetadata: FilePublicMagicMetadata;
|
||||
if (magicMetadata?.data) {
|
||||
fileMagicMetadata = {
|
||||
...file.magicMetadata,
|
||||
data: await worker.decryptMetadata(
|
||||
magicMetadata.data,
|
||||
magicMetadata.header,
|
||||
fileKey,
|
||||
),
|
||||
data: await worker.decryptMetadataJSON({
|
||||
encryptedDataB64: magicMetadata.data,
|
||||
decryptionHeaderB64: magicMetadata.header,
|
||||
keyB64: fileKey,
|
||||
}),
|
||||
};
|
||||
}
|
||||
if (pubMagicMetadata?.data) {
|
||||
filePubMagicMetadata = {
|
||||
...pubMagicMetadata,
|
||||
data: await worker.decryptMetadata(
|
||||
pubMagicMetadata.data,
|
||||
pubMagicMetadata.header,
|
||||
fileKey,
|
||||
),
|
||||
data: await worker.decryptMetadataJSON({
|
||||
encryptedDataB64: pubMagicMetadata.data,
|
||||
decryptionHeaderB64: pubMagicMetadata.header,
|
||||
keyB64: fileKey,
|
||||
}),
|
||||
};
|
||||
}
|
||||
return {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import { ItemVisibility } from "@/media/file-metadata";
|
||||
import { EnteFile } from "@/new/photos/types/file";
|
||||
import { MagicMetadataCore } from "@/new/photos/types/magicMetadata";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import { Collection } from "types/collection";
|
||||
|
||||
export function isArchivedFile(item: EnteFile): boolean {
|
||||
@@ -46,7 +46,7 @@ export async function updateMagicMetadata<T>(
|
||||
originalMagicMetadata?: MagicMetadataCore<T>,
|
||||
decryptionKey?: string,
|
||||
): Promise<MagicMetadataCore<T>> {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
|
||||
if (!originalMagicMetadata) {
|
||||
originalMagicMetadata = getNewMagicMetadata<T>();
|
||||
|
||||
@@ -19,7 +19,6 @@ import FormPaper from "@ente/shared/components/Form/FormPaper";
|
||||
import FormPaperFooter from "@ente/shared/components/Form/FormPaper/Footer";
|
||||
import FormPaperTitle from "@ente/shared/components/Form/FormPaper/Title";
|
||||
import LinkButton from "@ente/shared/components/LinkButton";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import {
|
||||
generateAndSaveIntermediateKeyAttributes,
|
||||
generateLoginSubKey,
|
||||
@@ -35,6 +34,7 @@ import { useRouter } from "next/router";
|
||||
import { useEffect, useState } from "react";
|
||||
import { appHomeRoute } from "../services/redirect";
|
||||
import type { PageProps } from "../types/page";
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
|
||||
const Page: React.FC<PageProps> = () => {
|
||||
const [token, setToken] = useState<string>();
|
||||
@@ -57,7 +57,7 @@ const Page: React.FC<PageProps> = () => {
|
||||
passphrase,
|
||||
setFieldError,
|
||||
) => {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const key = await getActualKey();
|
||||
const keyAttributes: KeyAttributes = getData(LS_KEYS.KEY_ATTRIBUTES);
|
||||
const kekSalt = await cryptoWorker.generateSaltToDeriveKey();
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import type { B64EncryptionResult } from "@/base/crypto/libsodium";
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import log from "@/base/log";
|
||||
import { ensure } from "@/utils/ensure";
|
||||
import { VerticallyCentered } from "@ente/shared/components/Container";
|
||||
@@ -13,14 +15,12 @@ import {
|
||||
import VerifyMasterPasswordForm, {
|
||||
type VerifyMasterPasswordFormProps,
|
||||
} from "@ente/shared/components/VerifyMasterPasswordForm";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import {
|
||||
decryptAndStoreToken,
|
||||
generateAndSaveIntermediateKeyAttributes,
|
||||
generateLoginSubKey,
|
||||
saveKeyInSessionStore,
|
||||
} from "@ente/shared/crypto/helpers";
|
||||
import type { B64EncryptionResult } from "@ente/shared/crypto/internal/libsodium";
|
||||
import { CustomError } from "@ente/shared/error";
|
||||
import InMemoryStore, { MS_KEYS } from "@ente/shared/storage/InMemoryStore";
|
||||
import {
|
||||
@@ -158,7 +158,7 @@ const Page: React.FC<PageProps> = ({ appContext }) => {
|
||||
|
||||
if (kekEncryptedAttributes && keyAttributes) {
|
||||
removeKey(SESSION_KEYS.KEY_ENCRYPTION_KEY);
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const kek = await cryptoWorker.decryptB64(
|
||||
kekEncryptedAttributes.encryptedData,
|
||||
kekEncryptedAttributes.nonce,
|
||||
@@ -207,7 +207,7 @@ const Page: React.FC<PageProps> = ({ appContext }) => {
|
||||
// before we let the user in.
|
||||
if (sessionValidityCheck) await sessionValidityCheck;
|
||||
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const {
|
||||
keyAttributes,
|
||||
encryptedToken,
|
||||
|
||||
@@ -10,7 +10,6 @@ import LinkButton from "@ente/shared/components/LinkButton";
|
||||
import SingleInputForm, {
|
||||
type SingleInputFormProps,
|
||||
} from "@ente/shared/components/SingleInputForm";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import {
|
||||
decryptAndStoreToken,
|
||||
saveKeyInSessionStore,
|
||||
@@ -24,6 +23,7 @@ import { useRouter } from "next/router";
|
||||
import { useEffect, useState } from "react";
|
||||
import { appHomeRoute } from "../services/redirect";
|
||||
import type { PageProps } from "../types/page";
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
|
||||
const bip39 = require("bip39");
|
||||
// mobile client library only supports english.
|
||||
@@ -80,7 +80,7 @@ const Page: React.FC<PageProps> = ({ appContext }) => {
|
||||
}
|
||||
recoveryKey = bip39.mnemonicToEntropy(recoveryKey);
|
||||
}
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const keyAttr = ensure(keyAttributes);
|
||||
const masterKey = await cryptoWorker.decryptB64(
|
||||
keyAttr.masterKeyEncryptedWithRecoveryKey,
|
||||
|
||||
@@ -5,6 +5,8 @@ import {
|
||||
} from "@/accounts/api/user";
|
||||
import { PAGES } from "@/accounts/constants/pages";
|
||||
import type { AccountsContextT } from "@/accounts/types/context";
|
||||
import type { B64EncryptionResult } from "@/base/crypto/libsodium";
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import log from "@/base/log";
|
||||
import { ensure } from "@/utils/ensure";
|
||||
import { VerticallyCentered } from "@ente/shared/components/Container";
|
||||
@@ -16,8 +18,6 @@ import LinkButton from "@ente/shared/components/LinkButton";
|
||||
import SingleInputForm, {
|
||||
type SingleInputFormProps,
|
||||
} from "@ente/shared/components/SingleInputForm";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import type { B64EncryptionResult } from "@ente/shared/crypto/internal/libsodium";
|
||||
import { ApiError } from "@ente/shared/error";
|
||||
import {
|
||||
LS_KEYS,
|
||||
@@ -117,7 +117,7 @@ const Page: React.FC<RecoverPageProps> = ({ appContext, twoFactorType }) => {
|
||||
}
|
||||
recoveryKey = bip39.mnemonicToEntropy(recoveryKey);
|
||||
}
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const { encryptedData, nonce } = ensure(encryptedTwoFactorSecret);
|
||||
const twoFactorSecret = await cryptoWorker.decryptB64(
|
||||
encryptedData,
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
import { clientPackageName, isDesktop } from "@/base/app";
|
||||
import { encryptToB64, generateEncryptionKey } from "@/base/crypto/libsodium";
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import { clientPackageHeader, HTTPError } from "@/base/http";
|
||||
import log from "@/base/log";
|
||||
import { accountsAppOrigin, apiURL } from "@/base/origins";
|
||||
import { TwoFactorAuthorizationResponse } from "@/base/types/credentials";
|
||||
import { ensure } from "@/utils/ensure";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import { getRecoveryKey } from "@ente/shared/crypto/helpers";
|
||||
import {
|
||||
encryptToB64,
|
||||
generateEncryptionKey,
|
||||
} from "@ente/shared/crypto/internal/libsodium";
|
||||
import { CustomError } from "@ente/shared/error";
|
||||
import HTTPService from "@ente/shared/network/HTTPService";
|
||||
import InMemoryStore, { MS_KEYS } from "@ente/shared/storage/InMemoryStore";
|
||||
@@ -110,7 +107,7 @@ export const openAccountsManagePasskeysPage = async () => {
|
||||
|
||||
const resetSecret = await generateEncryptionKey();
|
||||
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const encryptionResult = await encryptToB64(
|
||||
resetSecret,
|
||||
await cryptoWorker.fromHex(recoveryKey),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { UserVerificationResponse } from "@/accounts/types/user";
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import log from "@/base/log";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import { generateLoginSubKey } from "@ente/shared/crypto/helpers";
|
||||
import InMemoryStore, { MS_KEYS } from "@ente/shared/storage/InMemoryStore";
|
||||
import { getToken } from "@ente/shared/storage/localStorage/helpers";
|
||||
@@ -69,7 +69,7 @@ export const configureSRP = async ({
|
||||
export const generateSRPSetupAttributes = async (
|
||||
loginSubKey: string,
|
||||
): Promise<SRPSetupAttributes> => {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
|
||||
const srpSalt = await cryptoWorker.generateSaltToDeriveKey();
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import { generateLoginSubKey } from "@ente/shared/crypto/helpers";
|
||||
import type { KeyAttributes } from "@ente/shared/user/types";
|
||||
import { generateSRPSetupAttributes } from "../services/srp";
|
||||
import type { SRPSetupAttributes } from "../types/srp";
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
|
||||
export async function generateKeyAndSRPAttributes(passphrase: string): Promise<{
|
||||
keyAttributes: KeyAttributes;
|
||||
masterKey: string;
|
||||
srpSetupAttributes: SRPSetupAttributes;
|
||||
}> {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const masterKey = await cryptoWorker.generateEncryptionKey();
|
||||
const recoveryKey = await cryptoWorker.generateEncryptionKey();
|
||||
const kekSalt = await cryptoWorker.generateSaltToDeriveKey();
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
import { isDesktop } from "@/base/app";
|
||||
import { blobCache, type BlobCache } from "@/base/blob-cache";
|
||||
import { type CryptoWorker, sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import log from "@/base/log";
|
||||
import { customAPIOrigin } from "@/base/origins";
|
||||
import { FileType } from "@/media/file-type";
|
||||
@@ -15,13 +16,10 @@ import type {
|
||||
} from "@/new/photos/types/file";
|
||||
import { renderableImageBlob } from "@/new/photos/utils/file";
|
||||
import { ensure } from "@/utils/ensure";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import { DedicatedCryptoWorker } from "@ente/shared/crypto/internal/crypto.worker";
|
||||
import { CustomError } from "@ente/shared/error";
|
||||
import { isPlaybackPossible } from "@ente/shared/media/video-playback";
|
||||
import HTTPService from "@ente/shared/network/HTTPService";
|
||||
import { retryAsyncFunction } from "@ente/shared/utils";
|
||||
import type { Remote } from "comlink";
|
||||
|
||||
export type OnDownloadProgress = (event: {
|
||||
loaded: number;
|
||||
@@ -52,7 +50,7 @@ class DownloadManagerImpl {
|
||||
* Only available when we're running in the desktop app.
|
||||
*/
|
||||
private fileCache?: BlobCache;
|
||||
private cryptoWorker: Remote<DedicatedCryptoWorker> | undefined;
|
||||
private cryptoWorker: CryptoWorker | undefined;
|
||||
|
||||
private fileObjectURLPromises = new Map<number, Promise<SourceURLs>>();
|
||||
private fileConversionPromises = new Map<number, Promise<SourceURLs>>();
|
||||
@@ -85,7 +83,7 @@ class DownloadManagerImpl {
|
||||
// } catch (e) {
|
||||
// log.error("Failed to open file cache, will continue without it", e);
|
||||
// }
|
||||
this.cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
this.cryptoWorker = await sharedCryptoWorker();
|
||||
this.ready = true;
|
||||
}
|
||||
|
||||
@@ -125,11 +123,11 @@ class DownloadManagerImpl {
|
||||
const { downloadClient, cryptoWorker } = this.ensureInitialized();
|
||||
|
||||
const encrypted = await downloadClient.downloadThumbnail(file);
|
||||
const decrypted = await cryptoWorker.decryptThumbnail(
|
||||
encrypted,
|
||||
file.thumbnail.decryptionHeader,
|
||||
file.key,
|
||||
);
|
||||
const decrypted = await cryptoWorker.decryptThumbnail({
|
||||
encryptedData: encrypted,
|
||||
decryptionHeaderB64: file.thumbnail.decryptionHeader,
|
||||
keyB64: file.key,
|
||||
});
|
||||
return decrypted;
|
||||
};
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import type { SRPAttributes } from "@/accounts/types/srp";
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import log from "@/base/log";
|
||||
import { Input, type ButtonProps } from "@mui/material";
|
||||
import { t } from "i18next";
|
||||
import SingleInputForm, {
|
||||
type SingleInputFormProps,
|
||||
} from "../components/SingleInputForm";
|
||||
import ComlinkCryptoWorker from "../crypto";
|
||||
import { CustomError } from "../error";
|
||||
import type { KeyAttributes, User } from "../user/types";
|
||||
|
||||
@@ -45,7 +45,7 @@ export default function VerifyMasterPasswordForm({
|
||||
setFieldError,
|
||||
) => {
|
||||
try {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
let kek: string;
|
||||
try {
|
||||
if (srpAttributes) {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { setRecoveryKey } from "@/accounts/api/user";
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import log from "@/base/log";
|
||||
import {
|
||||
LS_KEYS,
|
||||
@@ -10,7 +11,6 @@ import { getToken } from "@ente/shared/storage/localStorage/helpers";
|
||||
import { SESSION_KEYS, setKey } from "@ente/shared/storage/sessionStorage";
|
||||
import { getActualKey } from "@ente/shared/user";
|
||||
import type { KeyAttributes } from "@ente/shared/user/types";
|
||||
import ComlinkCryptoWorker from ".";
|
||||
|
||||
const LOGIN_SUB_KEY_LENGTH = 32;
|
||||
const LOGIN_SUB_KEY_ID = 1;
|
||||
@@ -21,7 +21,7 @@ export async function decryptAndStoreToken(
|
||||
keyAttributes: KeyAttributes,
|
||||
masterKey: string,
|
||||
) {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const user = getData(LS_KEYS.USER);
|
||||
let decryptedToken = null;
|
||||
const { encryptedToken } = user;
|
||||
@@ -57,7 +57,7 @@ export async function generateAndSaveIntermediateKeyAttributes(
|
||||
existingKeyAttributes: KeyAttributes,
|
||||
key: string,
|
||||
): Promise<KeyAttributes> {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const intermediateKekSalt = await cryptoWorker.generateSaltToDeriveKey();
|
||||
const intermediateKek = await cryptoWorker.deriveInteractiveKey(
|
||||
passphrase,
|
||||
@@ -80,7 +80,7 @@ export async function generateAndSaveIntermediateKeyAttributes(
|
||||
}
|
||||
|
||||
export const generateLoginSubKey = async (kek: string) => {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const kekSubKeyString = await cryptoWorker.generateSubKey(
|
||||
kek,
|
||||
LOGIN_SUB_KEY_LENGTH,
|
||||
@@ -102,7 +102,7 @@ export const saveKeyInSessionStore = async (
|
||||
key: string,
|
||||
fromDesktop?: boolean,
|
||||
) => {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const sessionKeyAttributes =
|
||||
await cryptoWorker.generateKeyAndEncryptToB64(key);
|
||||
setKey(keyType, sessionKeyAttributes);
|
||||
@@ -113,7 +113,7 @@ export const saveKeyInSessionStore = async (
|
||||
};
|
||||
|
||||
export async function encryptWithRecoveryKey(key: string) {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const hexRecoveryKey = await getRecoveryKey();
|
||||
const recoveryKey = await cryptoWorker.fromHex(hexRecoveryKey);
|
||||
const encryptedKey = await cryptoWorker.encryptToB64(key, recoveryKey);
|
||||
@@ -122,7 +122,7 @@ export async function encryptWithRecoveryKey(key: string) {
|
||||
|
||||
export const getRecoveryKey = async () => {
|
||||
try {
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
|
||||
const keyAttributes: KeyAttributes = getData(LS_KEYS.KEY_ATTRIBUTES);
|
||||
const {
|
||||
@@ -155,7 +155,7 @@ async function createNewRecoveryKey() {
|
||||
const masterKey = await getActualKey();
|
||||
const existingAttributes = getData(LS_KEYS.KEY_ATTRIBUTES);
|
||||
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
|
||||
const recoveryKey = await cryptoWorker.generateEncryptionKey();
|
||||
const encryptedMasterKey = await cryptoWorker.encryptToB64(
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { decryptMetadata } from "@/base/crypto/ente";
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import { isDevBuild } from "@/base/env";
|
||||
import {
|
||||
decryptPublicMagicMetadata,
|
||||
@@ -6,7 +7,6 @@ import {
|
||||
} from "@/media/file-metadata";
|
||||
import { EnteFile } from "@/new/photos/types/file";
|
||||
import { fileLogID } from "@/new/photos/utils/file";
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
|
||||
/**
|
||||
* On-demand decrypt the public magic metadata for an {@link EnteFile} for code
|
||||
@@ -18,7 +18,7 @@ import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
export const getPublicMagicMetadataMT = async (enteFile: EnteFile) =>
|
||||
decryptPublicMagicMetadata(
|
||||
enteFile,
|
||||
(await ComlinkCryptoWorker.getInstance()).decryptMetadata,
|
||||
(await sharedCryptoWorker()).decryptMetadata,
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import ComlinkCryptoWorker from "@ente/shared/crypto";
|
||||
import type { B64EncryptionResult } from "@ente/shared/crypto/internal/libsodium";
|
||||
import type { B64EncryptionResult } from "@/base/crypto/libsodium";
|
||||
import { sharedCryptoWorker } from "@/base/crypto/worker";
|
||||
import { CustomError } from "@ente/shared/error";
|
||||
import { getKey, SESSION_KEYS } from "@ente/shared/storage/sessionStorage";
|
||||
|
||||
@@ -9,7 +9,7 @@ export const getActualKey = async () => {
|
||||
SESSION_KEYS.ENCRYPTION_KEY,
|
||||
);
|
||||
|
||||
const cryptoWorker = await ComlinkCryptoWorker.getInstance();
|
||||
const cryptoWorker = await sharedCryptoWorker();
|
||||
const key = await cryptoWorker.decryptB64(
|
||||
encryptionKeyAttributes.encryptedData,
|
||||
encryptionKeyAttributes.nonce,
|
||||
|
||||
Reference in New Issue
Block a user