From ca8628880bf674fc24a6263c7f557cfceb1a7e2b Mon Sep 17 00:00:00 2001 From: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com> Date: Fri, 15 Mar 2024 17:05:23 -0400 Subject: [PATCH] PM-5263 - TokenService needs to actually use secure storage (#8356) --- apps/desktop/src/main.ts | 6 +++- .../illegal-secure-storage-service.ts | 28 +++++++++++++++++++ .../src/services/jslib-services.module.ts | 7 +---- 3 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 apps/desktop/src/platform/services/illegal-secure-storage-service.ts diff --git a/apps/desktop/src/main.ts b/apps/desktop/src/main.ts index 0b92fab894e..c9af632126f 100644 --- a/apps/desktop/src/main.ts +++ b/apps/desktop/src/main.ts @@ -42,6 +42,7 @@ import { ELECTRON_SUPPORTS_SECURE_STORAGE } from "./platform/services/electron-p import { ElectronStateService } from "./platform/services/electron-state.service"; import { ElectronStorageService } from "./platform/services/electron-storage.service"; import { I18nMainService } from "./platform/services/i18n.main.service"; +import { IllegalSecureStorageService } from "./platform/services/illegal-secure-storage-service"; import { ElectronMainMessagingService } from "./services/electron-main-messaging.service"; export class Main { @@ -147,11 +148,14 @@ export class Main { this.environmentService = new EnvironmentService(stateProvider, accountService); + // Note: secure storage service is not available and should not be called in the main background process. + const illegalSecureStorageService = new IllegalSecureStorageService(); + this.tokenService = new TokenService( singleUserStateProvider, globalStateProvider, ELECTRON_SUPPORTS_SECURE_STORAGE, - this.storageService, + illegalSecureStorageService, ); this.migrationRunner = new MigrationRunner( diff --git a/apps/desktop/src/platform/services/illegal-secure-storage-service.ts b/apps/desktop/src/platform/services/illegal-secure-storage-service.ts new file mode 100644 index 00000000000..12f86226bef --- /dev/null +++ b/apps/desktop/src/platform/services/illegal-secure-storage-service.ts @@ -0,0 +1,28 @@ +import { AbstractStorageService } from "@bitwarden/common/platform/abstractions/storage.service"; +import { StorageOptions } from "@bitwarden/common/platform/models/domain/storage-options"; + +export class IllegalSecureStorageService implements AbstractStorageService { + constructor() {} + + get valuesRequireDeserialization(): boolean { + throw new Error("Method not implemented."); + } + has(key: string, options?: StorageOptions): Promise { + throw new Error("Method not implemented."); + } + save(key: string, obj: T, options?: StorageOptions): Promise { + throw new Error("Method not implemented."); + } + async get(key: string): Promise { + throw new Error("Method not implemented."); + } + async set(key: string, obj: T): Promise { + throw new Error("Method not implemented."); + } + async remove(key: string): Promise { + throw new Error("Method not implemented."); + } + async clear(): Promise { + throw new Error("Method not implemented."); + } +} diff --git a/libs/angular/src/services/jslib-services.module.ts b/libs/angular/src/services/jslib-services.module.ts index b153c8219b3..2ff90b79a45 100644 --- a/libs/angular/src/services/jslib-services.module.ts +++ b/libs/angular/src/services/jslib-services.module.ts @@ -485,12 +485,7 @@ const typesafeProviders: Array = [ safeProvider({ provide: TokenServiceAbstraction, useClass: TokenService, - deps: [ - SingleUserStateProvider, - GlobalStateProvider, - SUPPORTS_SECURE_STORAGE, - AbstractStorageService, - ], + deps: [SingleUserStateProvider, GlobalStateProvider, SUPPORTS_SECURE_STORAGE, SECURE_STORAGE], }), safeProvider({ provide: KeyGenerationServiceAbstraction,