PM-5263 - TokenService needs to actually use secure storage (#8356)

This commit is contained in:
Jared Snider 2024-03-15 17:05:23 -04:00 committed by GitHub
parent 4fabc94c3c
commit ca8628880b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 34 additions and 7 deletions

View File

@ -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(

View File

@ -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<boolean> {
throw new Error("Method not implemented.");
}
save<T>(key: string, obj: T, options?: StorageOptions): Promise<void> {
throw new Error("Method not implemented.");
}
async get<T>(key: string): Promise<T> {
throw new Error("Method not implemented.");
}
async set<T>(key: string, obj: T): Promise<void> {
throw new Error("Method not implemented.");
}
async remove(key: string): Promise<void> {
throw new Error("Method not implemented.");
}
async clear(): Promise<void> {
throw new Error("Method not implemented.");
}
}

View File

@ -485,12 +485,7 @@ const typesafeProviders: Array<SafeProvider> = [
safeProvider({
provide: TokenServiceAbstraction,
useClass: TokenService,
deps: [
SingleUserStateProvider,
GlobalStateProvider,
SUPPORTS_SECURE_STORAGE,
AbstractStorageService,
],
deps: [SingleUserStateProvider, GlobalStateProvider, SUPPORTS_SECURE_STORAGE, SECURE_STORAGE],
}),
safeProvider({
provide: KeyGenerationServiceAbstraction,