1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-16 00:03:56 +00:00

[PM-21378] Switch encrypt service to use SDK functions (#14538)

* Add new encrypt service functions

* Undo changes

* Cleanup

* Fix build

* Fix comments

* Switch encrypt service to use SDK functions

* Move remaining functions to PureCrypto

* Tests

* Increase test coverage

* Enforce sdk.ready and drop unused codepaths

* Delete unused code

* Add forgotten sdk init logic

* Fix build error

* Fix browser extension failing to unlock after process reload due to outdated usage of decryptString

* Fix send encryption

* Fix client key half decryption being stuck

* Attempt to fix sharereplay

* Fix build

* Fix type / add filter / add distinctuntilchange

* Fix capitalization
This commit is contained in:
Bernd Schoolmann
2025-07-21 15:52:38 +02:00
committed by GitHub
parent 8dc97ca1a7
commit 8b5e6adc37
18 changed files with 306 additions and 1628 deletions

View File

@@ -3,10 +3,13 @@ import {
NEVER,
Observable,
combineLatest,
distinctUntilChanged,
filter,
firstValueFrom,
forkJoin,
map,
of,
shareReplay,
switchMap,
} from "rxjs";
@@ -83,6 +86,9 @@ export class DefaultKeyService implements KeyServiceAbstraction {
) {
this.activeUserOrgKeys$ = this.stateProvider.activeUserId$.pipe(
switchMap((userId) => (userId != null ? this.orgKeys$(userId) : NEVER)),
filter((orgKeys) => orgKeys != null),
distinctUntilChanged(),
shareReplay({ bufferSize: 1, refCount: false }),
) as Observable<Record<OrganizationId, OrgKey>>;
}
@@ -402,12 +408,9 @@ export class DefaultKeyService implements KeyServiceAbstraction {
}
async getOrgKey(orgId: OrganizationId): Promise<OrgKey | null> {
const activeUserId = await firstValueFrom(this.stateProvider.activeUserId$);
if (activeUserId == null) {
throw new Error("A user must be active to retrieve an org key");
}
const orgKeys = await firstValueFrom(this.orgKeys$(activeUserId));
return orgKeys?.[orgId] ?? null;
return await firstValueFrom(
this.activeUserOrgKeys$.pipe(map((orgKeys) => orgKeys[orgId] ?? null)),
);
}
async makeDataEncKey<T extends OrgKey | UserKey>(