From 7e7107f16500892b424e4ced178aaa0c8bd29f9a Mon Sep 17 00:00:00 2001 From: Bernd Schoolmann Date: Thu, 23 Oct 2025 11:38:10 +0200 Subject: [PATCH] [PM-27221] Update legacy kdf state on master password unlock sync (#16966) * Update legacy kdf state on master password unlock sync * Fix cli build * Fix * Fix build * Fix cli * Fix browser --- apps/browser/src/background/main.background.ts | 1 + apps/cli/src/service-container/service-container.ts | 1 + libs/angular/src/services/jslib-services.module.ts | 1 + libs/common/src/platform/sync/default-sync.service.spec.ts | 5 ++++- libs/common/src/platform/sync/default-sync.service.ts | 4 +++- 5 files changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts index 7a4ee64070f..8170c2a65a0 100644 --- a/apps/browser/src/background/main.background.ts +++ b/apps/browser/src/background/main.background.ts @@ -1050,6 +1050,7 @@ export default class MainBackground { this.authService, this.stateProvider, this.securityStateService, + this.kdfConfigService, ); this.syncServiceListener = new SyncServiceListener( diff --git a/apps/cli/src/service-container/service-container.ts b/apps/cli/src/service-container/service-container.ts index d10849bae0f..3c4ee55361f 100644 --- a/apps/cli/src/service-container/service-container.ts +++ b/apps/cli/src/service-container/service-container.ts @@ -846,6 +846,7 @@ export class ServiceContainer { this.authService, this.stateProvider, this.securityStateService, + this.kdfConfigService, ); this.totpService = new TotpService(this.sdkService); diff --git a/libs/angular/src/services/jslib-services.module.ts b/libs/angular/src/services/jslib-services.module.ts index 5d2a23444f0..47e9e7d23bd 100644 --- a/libs/angular/src/services/jslib-services.module.ts +++ b/libs/angular/src/services/jslib-services.module.ts @@ -847,6 +847,7 @@ const safeProviders: SafeProvider[] = [ AuthServiceAbstraction, StateProvider, SecurityStateService, + KdfConfigService, ], }), safeProvider({ diff --git a/libs/common/src/platform/sync/default-sync.service.spec.ts b/libs/common/src/platform/sync/default-sync.service.spec.ts index f60b42ce450..621033ced65 100644 --- a/libs/common/src/platform/sync/default-sync.service.spec.ts +++ b/libs/common/src/platform/sync/default-sync.service.spec.ts @@ -15,7 +15,7 @@ import { EncString } from "@bitwarden/common/key-management/crypto/models/enc-st import { SecurityStateService } from "@bitwarden/common/key-management/security-state/abstractions/security-state.service"; // This import has been flagged as unallowed for this class. It may be involved in a circular dependency loop. // eslint-disable-next-line no-restricted-imports -import { KeyService, PBKDF2KdfConfig } from "@bitwarden/key-management"; +import { KdfConfigService, KeyService, PBKDF2KdfConfig } from "@bitwarden/key-management"; import { Matrix } from "../../../spec/matrix"; import { ApiService } from "../../abstractions/api.service"; @@ -75,6 +75,7 @@ describe("DefaultSyncService", () => { let authService: MockProxy; let stateProvider: MockProxy; let securityStateService: MockProxy; + let kdfConfigService: MockProxy; let sut: DefaultSyncService; @@ -105,6 +106,7 @@ describe("DefaultSyncService", () => { authService = mock(); stateProvider = mock(); securityStateService = mock(); + kdfConfigService = mock(); sut = new DefaultSyncService( masterPasswordAbstraction, @@ -132,6 +134,7 @@ describe("DefaultSyncService", () => { authService, stateProvider, securityStateService, + kdfConfigService, ); }); diff --git a/libs/common/src/platform/sync/default-sync.service.ts b/libs/common/src/platform/sync/default-sync.service.ts index d5fa2d0ae68..e599fbc1c48 100644 --- a/libs/common/src/platform/sync/default-sync.service.ts +++ b/libs/common/src/platform/sync/default-sync.service.ts @@ -12,7 +12,7 @@ import { // This import has been flagged as unallowed for this class. It may be involved in a circular dependency loop. import { SecurityStateService } from "@bitwarden/common/key-management/security-state/abstractions/security-state.service"; // eslint-disable-next-line no-restricted-imports -import { KeyService } from "@bitwarden/key-management"; +import { KdfConfigService, KeyService } from "@bitwarden/key-management"; // FIXME: remove `src` and fix import // eslint-disable-next-line no-restricted-imports @@ -100,6 +100,7 @@ export class DefaultSyncService extends CoreSyncService { authService: AuthService, stateProvider: StateProvider, private securityStateService: SecurityStateService, + private kdfConfigService: KdfConfigService, ) { super( tokenService, @@ -434,6 +435,7 @@ export class DefaultSyncService extends CoreSyncService { masterPasswordUnlockData, userId, ); + await this.kdfConfigService.setKdfConfig(userId, masterPasswordUnlockData.kdf); } } }