1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-11-15 10:35:20 +01:00

Make secure storage support sync

This commit is contained in:
Matt Gibson 2024-04-16 16:01:00 -04:00 committed by Matt Gibson
parent e09c528da9
commit 6e7fbc4e10
No known key found for this signature in database
GPG Key ID: 963EE038B0581878
5 changed files with 9 additions and 4 deletions

View File

@ -12,7 +12,7 @@ export namespace passwords {
export function setPassword(service: string, account: string, password: string): Promise<void>
/** Delete the stored password from the keychain. */
export function deletePassword(service: string, account: string): Promise<void>
export function hasPasswordManagement(): boolean
export function osSupportsSecuredStorage(): boolean
}
export namespace biometrics {
export function prompt(hwnd: Buffer, message: string): Promise<boolean>

View File

@ -42,7 +42,7 @@ pub mod passwords {
}
#[napi]
pub fn has_password_management() -> bool {
pub fn os_supports_secured_storage() -> bool {
super::password::has_password_management()
}
}

View File

@ -31,6 +31,7 @@ import { DefaultStateProvider } from "@bitwarden/common/platform/state/implement
import { StateEventRegistrarService } from "@bitwarden/common/platform/state/state-event-registrar.service";
import { MemoryStorageService as MemoryStorageServiceForStateProviders } from "@bitwarden/common/platform/state/storage/memory-storage.service";
/* eslint-enable import/no-restricted-paths */
import { passwords } from "@bitwarden/desktop-native";
import { DesktopAutofillSettingsService } from "./autofill/services/desktop-autofill-settings.service";
import { MenuMain } from "./main/menu/menu.main";
@ -47,7 +48,6 @@ import { DesktopCredentialStorageListener } from "./platform/main/desktop-creden
import { MainCryptoFunctionService } from "./platform/main/main-crypto-function.service";
import { DesktopSettingsService } from "./platform/services/desktop-settings.service";
import { ElectronLogMainService } from "./platform/services/electron-log.main.service";
import { ELECTRON_SUPPORTS_SECURE_STORAGE } from "./platform/services/electron-platform-utils.service";
import { ElectronStateService } from "./platform/services/electron-state.service";
import { ElectronStorageService } from "./platform/services/electron-storage.service";
import { I18nMainService } from "./platform/services/i18n.main.service";
@ -179,7 +179,7 @@ export class Main {
this.tokenService = new TokenService(
singleUserStateProvider,
globalStateProvider,
ELECTRON_SUPPORTS_SECURE_STORAGE,
passwords.osSupportsSecuredStorage(),
illegalSecureStorageService,
this.keyGenerationService,
this.encryptService,

View File

@ -18,6 +18,10 @@ export class DesktopCredentialStorageListener {
) {}
init() {
// Handle password management detection sync
ipcMain.on("osSupportsSecuredStorage", (event) => {
event.returnValue = passwords.osSupportsSecuredStorage();
});
ipcMain.handle("keytar", async (event: any, message: any) => {
try {
let serviceName = this.serviceName;

View File

@ -34,6 +34,7 @@ const passwords = {
ipcRenderer.invoke("keytar", { action: "setPassword", key, keySuffix, value }),
delete: (key: string, keySuffix: string): Promise<void> =>
ipcRenderer.invoke("keytar", { action: "deletePassword", key, keySuffix }),
osSupportsSecuredStorage: (): boolean => ipcRenderer.sendSync("osSupportsSecuredStorage"),
};
const biometric = {