From d91462773ad00f8627c9191b08ef8dcecc9323eb Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 16 Aug 2024 21:34:25 +0530 Subject: [PATCH] Use same nomenclature as the architecture document --- desktop/src/main/ipc.ts | 10 +++++----- desktop/src/main/services/store.ts | 6 +++--- desktop/src/preload.ts | 10 +++++----- web/apps/photos/src/pages/index.tsx | 4 ++-- web/packages/accounts/pages/credentials.tsx | 7 +++++-- web/packages/base/types/ipc.ts | 16 ++++++++++------ web/packages/shared/crypto/helpers.ts | 2 +- 7 files changed, 31 insertions(+), 24 deletions(-) diff --git a/desktop/src/main/ipc.ts b/desktop/src/main/ipc.ts index 6c4020d6ee..cca4f0a0ff 100644 --- a/desktop/src/main/ipc.ts +++ b/desktop/src/main/ipc.ts @@ -45,9 +45,9 @@ import { convertToJPEG, generateImageThumbnail } from "./services/image"; import { logout } from "./services/logout"; import { createMLWorker } from "./services/ml"; import { - encryptionKey, lastShownChangelogVersion, - saveEncryptionKey, + masterKeyB64, + saveMasterKeyB64, setLastShownChangelogVersion, } from "./services/store"; import { @@ -103,10 +103,10 @@ export const attachIPCHandlers = () => { ipcMain.handle("selectDirectory", () => selectDirectory()); - ipcMain.handle("encryptionKey", () => encryptionKey()); + ipcMain.handle("masterKeyB64", () => masterKeyB64()); - ipcMain.handle("saveEncryptionKey", (_, encryptionKey: string) => - saveEncryptionKey(encryptionKey), + ipcMain.handle("saveMasterKeyB64", (_, masterKeyB64: string) => + saveMasterKeyB64(masterKeyB64), ); ipcMain.handle("lastShownChangelogVersion", () => diff --git a/desktop/src/main/services/store.ts b/desktop/src/main/services/store.ts index 4663c2525f..8ebac1a276 100644 --- a/desktop/src/main/services/store.ts +++ b/desktop/src/main/services/store.ts @@ -24,13 +24,13 @@ export const clearStores = () => { * On macOS, `safeStorage` stores our data under a Keychain entry named * " Safe Storage". In our case, "ente Safe Storage". */ -export const saveEncryptionKey = (encryptionKey: string) => { - const encryptedKey = safeStorage.encryptString(encryptionKey); +export const saveMasterKeyB64 = (masterKeyB64: string) => { + const encryptedKey = safeStorage.encryptString(masterKeyB64); const b64EncryptedKey = Buffer.from(encryptedKey).toString("base64"); safeStorageStore.set("encryptionKey", b64EncryptedKey); }; -export const encryptionKey = (): string | undefined => { +export const masterKeyB64 = (): string | undefined => { const b64EncryptedKey = safeStorageStore.get("encryptionKey"); if (!b64EncryptedKey) return undefined; const keyBuffer = Buffer.from(b64EncryptedKey, "base64"); diff --git a/desktop/src/preload.ts b/desktop/src/preload.ts index 8472e91ff0..0af7682eae 100644 --- a/desktop/src/preload.ts +++ b/desktop/src/preload.ts @@ -103,10 +103,10 @@ const logout = () => { return ipcRenderer.invoke("logout"); }; -const encryptionKey = () => ipcRenderer.invoke("encryptionKey"); +const masterKeyB64 = () => ipcRenderer.invoke("masterKeyB64"); -const saveEncryptionKey = (encryptionKey: string) => - ipcRenderer.invoke("saveEncryptionKey", encryptionKey); +const saveMasterKeyB64 = (masterKeyB64: string) => + ipcRenderer.invoke("saveMasterKeyB64", masterKeyB64); const lastShownChangelogVersion = () => ipcRenderer.invoke("lastShownChangelogVersion"); @@ -342,8 +342,8 @@ contextBridge.exposeInMainWorld("electron", { openLogDirectory, selectDirectory, logout, - encryptionKey, - saveEncryptionKey, + masterKeyB64, + saveMasterKeyB64, lastShownChangelogVersion, setLastShownChangelogVersion, onMainWindowFocus, diff --git a/web/apps/photos/src/pages/index.tsx b/web/apps/photos/src/pages/index.tsx index 1708b1c137..d2a3827efd 100644 --- a/web/apps/photos/src/pages/index.tsx +++ b/web/apps/photos/src/pages/index.tsx @@ -73,9 +73,9 @@ export default function LandingPage() { const electron = globalThis.electron; if (!key && electron) { try { - key = await electron.encryptionKey(); + key = await electron.masterKeyB64(); } catch (e) { - log.error("Failed to get encryption key from electron", e); + log.error("Failed to read master key from secure storage", e); } if (key) { await saveKeyInSessionStore( diff --git a/web/packages/accounts/pages/credentials.tsx b/web/packages/accounts/pages/credentials.tsx index 53ebb07590..769914b74e 100644 --- a/web/packages/accounts/pages/credentials.tsx +++ b/web/packages/accounts/pages/credentials.tsx @@ -125,9 +125,12 @@ const Page: React.FC = ({ appContext }) => { const electron = globalThis.electron; if (!key && electron) { try { - key = await electron.encryptionKey(); + key = await electron.masterKeyB64(); } catch (e) { - log.error("Failed to get encryption key from electron", e); + log.error( + "Failed to read master key from secure storage", + e, + ); } if (key) { await saveKeyInSessionStore( diff --git a/web/packages/base/types/ipc.ts b/web/packages/base/types/ipc.ts index c0644760c0..dd670e21ba 100644 --- a/web/packages/base/types/ipc.ts +++ b/web/packages/base/types/ipc.ts @@ -69,18 +69,22 @@ export interface Electron { logout: () => Promise; /** - * Return the previously saved encryption key from persistent safe storage. + * Return the previously saved user's master key from the persistent safe + * storage accessible to the desktop app. * - * If no such key is found, return `undefined`. + * The key is returned as a base64 encoded string. * - * See also: {@link saveEncryptionKey}. + * If the key is not found, return `undefined`. + * + * See also: {@link saveMasterKeyB64}. */ - encryptionKey: () => Promise; + masterKeyB64: () => Promise; /** - * Save the given {@link encryptionKey} into persistent safe storage. + * Save the given {@link masterKeyB64} (encoded as a base64 string) to the + * persistent safe storage accessible to the desktop app. */ - saveEncryptionKey: (encryptionKey: string) => Promise; + saveMasterKeyB64: (masterKeyB64: string) => Promise; /** * Set or clear the callback {@link cb} to invoke whenever the app comes diff --git a/web/packages/shared/crypto/helpers.ts b/web/packages/shared/crypto/helpers.ts index c7165713ff..d042a11a1c 100644 --- a/web/packages/shared/crypto/helpers.ts +++ b/web/packages/shared/crypto/helpers.ts @@ -108,7 +108,7 @@ export const saveKeyInSessionStore = async ( setKey(keyType, sessionKeyAttributes); const electron = globalThis.electron; if (electron && !fromDesktop && keyType === SESSION_KEYS.ENCRYPTION_KEY) { - electron.saveEncryptionKey(key); + electron.saveMasterKeyB64(key); } };