1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-18 01:03:35 +00:00
Commit Graph

453 Commits

Author SHA1 Message Date
Andreas Coroiu
71d4f989b7 [PM-18042] Build request response structure (#15163)
* feat: add support for discover command

* feat: make client public to allow RPC

* feat: update SDK
2025-06-26 14:01:31 +02:00
Justin Baur
7d2b97b1df [PM-22573] Don't call server on existing subscription (#15154)
* Don't put subscription to our server when it's existing

* Only update server when subscription-user associations change

---------

Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
2025-06-25 21:42:06 -04:00
Addison Beck
95841eb078 refactor(storage-core): move storage files out of @bitwarden/common (#15076)
* refactor(platform): generate @bitwarden/storage-core boilerplate

* refactor(storage-core): move storage files out of @bitwarden/common

* chore(naming): rename AbstractStorageService to StorageService
2025-06-23 16:00:54 -04:00
Anders Åberg
2f47a90e79 Allow string 'true' instead of true (#14816) 2025-06-18 11:31:11 +02:00
Anders Åberg
b2b695a705 PM-21553: Added support for credential.toJSON() (#15028)
* Added support for credential.toJSON()

* Changed to import type
2025-06-18 11:31:00 +02:00
Bernd Schoolmann
1dd7eae466 Update sdk for breaking init change (#15212) 2025-06-17 12:59:35 +02:00
Anders Åberg
bef6182243 PM-22221: Fix a race condition with cipher creation (#15157)
* PM-22221: Fix a race condition with cipher creation

* Mocked ciphers$ in tests

* Neater tests

---------

Co-authored-by: Robyn MacCallum <robyntmaccallum@gmail.com>
2025-06-12 12:53:35 -04:00
Leslie Tilton
6a579ed99f [PM-15001] Replace throttle decorator (#15015)
* Add comments to AuditService Abstraction

* Replace throttle usage with rxjs mergeMap with concurrent limit

* Add test cases for audit service

* Remove throttle
2025-06-12 10:52:04 -05:00
Andreas Coroiu
0e608639cc [PM-20615] Only process incoming messages once (#14645)
* feat: start ipc client

* fix: payload serialization issues

* feat: filter incoming messages by destination

* fix: adapt to SDK renames

* feat: update sdk
2025-06-12 10:17:03 +02:00
Thomas Avery
c52e6a3f2c [PM-22408] Remove setMasterKeyEncryptedUserKey from KeyService (#15087)
* Swap consumers to masterPasswordService.setMasterKeyEncryptedUserKey

* Remove setMasterKeyEncryptedUserKey from keyService

* unit tests
2025-06-11 15:48:18 -05:00
Matt Bishop
703715aea5 [PM-4780] Relax UUID validation (#6792)
* Relax UUID validation

* Remove unneeded word boundaries

* Compress given the duplicated three parts

* Revert "Added separate function for GUID validation for passkeys (#6806)"
2025-06-06 10:57:57 -04:00
Justin Baur
8a29df64d9 [PM-20398] Add Notifications logging (#13640)
* Add Logging to know which notification transport is being used

* Remove debug log
2025-06-03 11:08:29 -04:00
Matt Gibson
9f9cb0d13d Add-userid-to-encryption-methods (#14844)
* Get userId from response if available

This is a small improvement for the Auth team which avoids inspection of the access token, sometimes.

* Initialize sdk clients with a userId

* return both Cipher and encryptedFor when encrypting a cipher

Update cipher api requests to include encryptedFor attribute

* Prefer named types with documentation

* Update sdk to latest

* Fixup types

* Fixup tests

* Revert getting userId from identity token response

---------

Co-authored-by: Shane <smelton@bitwarden.com>
2025-05-30 10:50:54 -07:00
Andreas Coroiu
d1fb37d696 [PM-17635] [PM-18601] Simplifying mocking and usage of the sdk (#14287)
* feat: add our own custom deep mocker

* feat: use new mock service in totp tests

* feat: implement userClient mocking

* chore: move mock files

* feat: replace existing manual sdkService mocking

* chore: rename to 'client'

* chore: improve docs

* feat: refactor sdkService to never return undefined BitwardenClient
2025-05-28 15:00:30 +02:00
Nick Krantz
888e2031a7 [PM-21090] Vault - Repeated Syncs (#14740)
* move `fullSync` contents to private methods in prep to storing the respective promise

* store in-flight sync so multiple calls to the sync service are avoided

* Revert "store in-flight sync so multiple calls to the sync service are avoided"

This reverts commit 233c8e9d4b.

* Revert "move `fullSync` contents to private methods in prep to storing the respective promise"

This reverts commit 3f686ac6a4.

* store inflight API calls for sync service

- This avoids duplicate network requests in a relatively short amount of time but still allows consumers to call `fullSync` if needed

* add debug log for duplicate sync
2025-05-27 08:24:53 -05:00
Andreas Coroiu
45f2104fd8 fix: broken SDK interface (#14959) 2025-05-27 14:31:27 +02:00
Oscar Hinton
beb00a206b Add UUID helpers to the SDK (#14939)
* Add UUID helpers to the SDK

* Address review feedback
2025-05-26 17:02:28 +02:00
Brandon Treston
207fd3af1d [PM-17148] Remove banner and state, migrate state (#14882)
* remove banner and state, migrate state

* add migration, bump version
2025-05-23 13:55:47 -04:00
Addison Beck
56a3b14583 Introduce eslint errors for risky/circular imports (#14804)
* first draft at an idea dependency graph

* ignore existing errors

* remove conflicting rule regarding internal platform logic in libs

* review: allow components to import from platform
2025-05-23 08:01:25 -04:00
Ike
ae35cb4e65 [PM-20540] Deep-link refactor to fix SSO deep links (#14587)
* PM-20540 - TwoFactorAuthComponent - Refactor determineDefaultSuccessRoute to rely on user's auth status as the loginStrategyService's state is cleared after successful AuthN

* PM-20540 - DeepLinkGuard - Refactor to exempt login-initiated so that TDE + unlock with MP + deep link works.

* doc: Add documentation and change folder structure.
* test: add test for new excluded route.

---------

Co-authored-by: Jared Snider <jsnider@bitwarden.com>
2025-05-21 08:24:17 -04:00
Bernd Schoolmann
d7c936e1ea [PM-17900] Add cose / xchacha20poly1305 migration on userkey rotation (#14539)
* Add new encrypt service functions

* Undo changes

* Cleanup

* Fix build

* Fix comments

* Switch encrypt service to use SDK functions

* Add cose migration on userkey rotation

* Update sdk

* Set featureflag to default disabled

* Add tests

* Update sdk to build 168

* Make changes according to feedback
2025-05-20 12:25:14 -07:00
Bernd Schoolmann
d93f547cfb [PM-21001] Move platform code to new encrypt service interface (#14544)
* Move platform code to new encrypt service interface

* Fix tests

* Fix tests

* Fix cli build
2025-05-20 19:45:40 +02:00
Maciej Zieniuk
e73f902aee [PM-18576] Fix missing user id on remove password (#13777)
* Passed in userId on RemovePasswordComponent.

* Added userId on other references to KeyConnectorService methods

* remove password component refactor, test coverage, enabled strict

* explicit user id provided to key connector service

* redirect to / instead when user not logged in or not managing organization

* key connector service explicit user id

* key connector service no longer requires account service

* key connector service missing null type

* cli convert to key connector unit tests

* remove unnecessary SyncService

* error toast not showing on ErrorResponse

* bad import due to merge conflict

* bad import due to merge conflict

* missing loading in remove password component for browser extension

* error handling in remove password component

* organization observable race condition in key-connector

* usesKeyConnector always returns boolean

* unit test coverage

* key connector reactive

* reactive key connector service

* introducing convertAccountRequired$

* cli build fix

* moving message sending side effect to sync

* key connector service unit tests

* fix unit tests

* unit tests in wrong place after KM code ownership move

* infinite page reload

* failing unit tests

* failing unit tests

---------

Co-authored-by: Todd Martin <tmartin@bitwarden.com>
2025-05-19 08:51:46 +02:00
Anders Åberg
d16a5cb73e Revert "PM-21553: Added support for credential.toJSON() (#14734)" (#14819)
This reverts commit df8d184889.
2025-05-16 13:30:47 -04:00
Anders Åberg
df8d184889 PM-21553: Added support for credential.toJSON() (#14734)
* Added support for credential.toJSON()

* Changed to import type
2025-05-16 11:02:12 +02:00
Jason Ng
ee4c3cfd94 [PM-21663] nudge service name refactor (#14789)
* update names of vault nudge service and their corresponding files, convert components using showNudge$ to instead target spotlight and badges directly with new observables. Core logic for dismiss remains the same
2025-05-15 15:10:38 -04:00
SmithThe4th
ad3121f535 [PM-12423] Migrate Cipher Decryption to Use SDK (#14206)
* Created mappings for client domain object to SDK

* Add abstract decrypt observable

* Added todo for future consideration

* Added implementation to cipher service

* Added adapter and unit tests

* Created cipher encryption abstraction and service

* Register cipher encryption service

* Added tests for the cipher encryption service

* changed signature

* Updated feature flag name

* added new function to be used for decrypting ciphers

* Added new encryptedKey field

* added new function to be used for decrypting ciphers

* Manually set fields

* Added encrypted key in attachment view

* Fixed test

* Updated references to use decrypt with feature flag

* Added dependency

* updated package.json

* lint fix

* fixed tests

* Fixed small mapping issues

* Fixed test

* Added function to decrypt fido2 key value

* Added function to decrypt fido2 key value and updated test

* updated to use sdk function without prociding the key

* updated localdata sdk type change

* decrypt attachment content using sdk

* Fixed dependency issues

* updated package.json

* Refactored service to handle getting decrypted buffer using the legacy and sdk implementations

* updated services and component to use refactored version

* Updated decryptCiphersWithSdk to use decryptManyLegacy for batch decryption, ensuring the SDK is only called once per batch

* Fixed merge conflicts

* Fixed merge conflicts

* Fixed merge conflicts

* Fixed lint issues

* Moved getDecryptedAttachmentBuffer to cipher service

* Moved getDecryptedAttachmentBuffer to cipher service

* ensure CipherView properties are null instead of undefined

* Fixed test

* ensure AttachmentView properties are null instead of undefined

* Linked ticket in comment

* removed unused orgKey
2025-05-14 07:30:01 -07:00
Patrick-Pimentel-Bitwarden
0b0397c3f0 fix(enums-eslint): Enum Rule for ESLint (#14650)
* fix(enums-eslint): Enum Rule for ESLint - Added enums in the warnings for eslint.

* fix(enums-eslint): Enum Rule for ESLint - Updated to error in both places for enums.

* fix(enums-eslint): Enum Rule for ESLint - Added new eslint plugin for warning on enums.

* fix(enums-eslint): Enum Rule for ESLint - Changed based on suggestion.

Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com>

* refactor(browser-platform-utils): Remove Deprecation and Fix Code - Changed usages of firefox to private and moved the usages to the preferred public method and removed the deprecations.

* fix(enums-eslint): Enum Rule for ESLint - Updated to error and added disable rules for all other places.

* fix(enums-eslint): Enum Rule for ESLint - Undid other changes by accident
2025-05-13 10:07:38 -04:00
Bernd Schoolmann
51e327e20b Clean up stretchKey (#14520) 2025-05-09 21:39:38 +02:00
Nick Krantz
46df5279a3 [PM-18485] Remove new device verification guard (#14417)
* remove NewDeviceVerificationGuard and all associated entities. New Device verification feature has rolled out in production, this guard is no longer needed.

* remove unused properties from the vault profile service
2025-05-06 13:08:30 -05:00
Matt Gibson
013a34e042 [PM-17440] Use SDK for decryption (#14277)
* Improve dev logging

* Define decrypt with sdk flag

* Use SDK's pure crypto functions for decryption

feature flagged by `use-sdk-for-decryption`

* Avoid pushing decryption requests to web workers for SDK

web workers are able to use the SDK, but they require the SDK module to be initialized. If this is eventually seen as desired, we'll need client-specific worker scripts.

* Apply suggestions from code review

Co-authored-by: Bernd Schoolmann <mail@quexten.com>

* fixup! Apply suggestions from code review

* fixup: Update feature flag state in config callbacks

* Apply suggestions from code review

Co-authored-by: Bernd Schoolmann <mail@quexten.com>

---------

Co-authored-by: Bernd Schoolmann <mail@quexten.com>
2025-05-05 12:19:52 -04:00
Andreas Coroiu
e0cabd1df0 [PM-18044] Ensure all calls to receive should get all messages broadcast (#13869)
* feat: make compatible with SDK changes

* feat: use subscription

* feat: update SDK

* fix: lint

* fix: ts strict issues
2025-05-05 12:19:41 -04:00
Jason Ng
a62d269a89 [PM-18803] nudges new items (#14523)
* Added new-items-nudge service and component to show spotlight for new item nudges
2025-05-01 12:43:55 -04:00
Justin Baur
1d00495078 [PM-20032] Give option to skip token refresh on fullSync (#14423)
* Give option to skip token refresh on fullSync

* Fix listener
2025-05-01 09:32:10 -04:00
Bernd Schoolmann
fd0db40f79 [PM-20492] Refactor symmetric keys - remove key buffer representation, migrate consumers to .toEncoded() (#14371)
* Refactor encrypt service to expose key wrapping

* Fix build

* Undo ts strict removal

* Fix wrong method being used to encrypt key material

* Rename parameters and remove todo

* Add summary to encrypt

* Update libs/common/src/key-management/crypto/services/encrypt.service.implementation.ts

Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>

* Update libs/common/src/key-management/crypto/services/encrypt.service.implementation.ts

Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>

* Update libs/common/src/key-management/crypto/services/encrypt.service.implementation.ts

Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>

* Update libs/common/src/key-management/crypto/services/encrypt.service.implementation.ts

Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>

* Update libs/common/src/key-management/crypto/abstractions/encrypt.service.ts

Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>

* Update libs/common/src/key-management/crypto/services/encrypt.service.implementation.ts

Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>

* Add tests for unhappy paths

* Add test coverage

* Add links

* Remove direct buffer access

* Fix build on cli

---------

Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>
2025-04-25 19:26:39 +02:00
Bernd Schoolmann
43b1f55360 [PM-18697] Remove old symmetric key representations in symmetriccryptokey (#13598)
* Remove AES128CBC-HMAC encryption

* Increase test coverage

* Refactor symmetric keys and increase test coverage

* Re-add type 0 encryption

* Fix ts strict warning

* Remove old symmetric key representations in symmetriccryptokey

* Fix desktop build

* Fix test

* Fix build

* Update libs/common/src/key-management/crypto/services/web-crypto-function.service.ts

Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>

* Update libs/node/src/services/node-crypto-function.service.ts

Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>

* Undo changes

* Remove cast

* Undo changes to tests

* Fix linting

* Undo removing new Uint8Array in aesDecryptFastParameters

* Fix merge conflicts

* Fix test

* Fix another test

* Fix test

---------

Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>
2025-04-21 14:57:26 +00:00
Chase Nelson
f86a5c2b6e [PM-19798] [PM-18807] Fix base64 encoding/decoding with special characters (#14089)
* Refactor base64 encoding/decoding to use BufferLib

* Add tests for base64 encoding and decoding functions

---------

Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
2025-04-18 14:55:23 -04:00
Justin Baur
5af12505f1 Switch userVisibleOnly to false (#14202) 2025-04-17 16:01:02 -04:00
Shane Melton
8258ea39b0 [PM-18903] Desktop sync issues (#13681)
* [PM-18707] Use different BroadcasterSubscriptionId in base view component to avoid collision with desktop view component

* [PM-18707] Use userId instead of payloadUserId for cipher notification syncs

* [PM-19032] Live Sync on Desktop (#13851)

* migrate the vault-items to an observables rather than async/promises

- this helps keep data in sync with the service state and avoids race conditions

* migrate the view component to an observables rather than async/promises

- this helps keep data in sync with the service state and avoids race conditions

* decrypt saved cipher from server

* bump timeout for upserting ciphers

* mark `go` as async in desktop vault

- previously it was a floating promise

* Revert "mark `go` as async in desktop vault"

This reverts commit fd28f40b18.

* Revert "bump timeout for upserting ciphers"

This reverts commit e963acc377.

* move vault utilities to `common` rather than `lib` to avoid circular dependencies

* use `perUserCache$` for `cipherViews$` to avoid new subscriptions from being created

* use userId from observable rather than locally set to be the most up to date

* [PM-18707] Add clearBuffer$ input to perUserCache$ helper so that  the internal share replay buffers can be cleared

* [PM-18707] Rework forceCipherViews$ to clearBuffer$ refactor

- Add dependency for cipherDecryptionKeys$ for the cipherViews so that decryption is never attempted without keys

* [PM-18707] Add overload to perUserCache to satisfy type checker

* [PM-18707] Fix overloads

* [PM-18707] Add check for empty failed to decrypt ciphers

* [PM-18707] Mark vault component for check after observable emits.

The cipherViews$ observable now persists between subscriptions, meaning that updates via the sync push notifications can occur outside the AngularZone causing delays in updating the view.

---------

Co-authored-by: Nick Krantz <125900171+nick-livefront@users.noreply.github.com>
Co-authored-by: Nick Krantz <nick@livefront.com>
2025-04-15 12:17:41 -07:00
Bernd Schoolmann
5a1b0744f0 [PM-17665] Move cryptofunction service to km (#13285)
* Move cryptofunction service to km

* Fix formatting

* Fix import

* Fix build on desktop

* Fix build on browser and tests
2025-04-10 11:09:35 +02:00
Andreas Coroiu
772b42f5b5 [PM-18039] Add initial verison of IpcServices to client (#13373)
* feat: add foreground ipc service

* refactor: create abstract ipc service in libs

* wip: remove IPC service complexity

The code was making some wrong assumptions about how IPC is going to work. I'm removing everything and starting the content-script instead

* feat: working message sending from page to background

* refactor: move into common

* feat: somewhat complete web <-> browser link

* wip: ping command from web

* fix: import path

* fix: wip urls

* wip: add console log

* feat: successfull message sending (not receiving)

* feat: implement IPC using new refactored framework

* wip: add some console logs

* wip: almost working ping/pong

* feat: working ping/pong

* chore: clean-up ping/pong and some console logs

* chore: remove unused file

* fix: override lint rule

* chore: remove unused ping message

* feat: add tests for message queue

* fix: adapt to name changes and modifications to SDK branch

* fix: missing import

* fix: remove content script from manifest

The feature is not ready for prodution code yet. We will add dynamic injection with feature-flag support in a follow-up PR

* fix: remove fileless lp

* fix: make same changes to manifest v2

* fix: initialization functions

Add missing error handling, wait for the SDK to load and properly depend on the log service

* feat: use named id field

* chore: update sdk version to include IPC changes

* fix: remove messages$ buffer

* fix: forgot to commit package-lock

* feat: add additional destination check

* feat: only import type in ipc-message

* fix: typing issues

* feat: check message origin
2025-04-08 15:06:39 +02:00
Bernd Schoolmann
cf0e693caa [PM-18697] Add new symmetric key runtime representation and move encrypt service to it (#13578)
* Remove AES128CBC-HMAC encryption

* Increase test coverage

* Refactor symmetric keys and increase test coverage

* Re-add type 0 encryption

* Fix ts strict warning

* Re-add support for encrypt hmac-less aes

* Add comment about inner()

* Update comment

* Deduplicate encryption type check

* Undo test changes

* Lift out encryption type check to before splitting by encryption type

* Change null to undefined

* Fix test
2025-04-08 12:42:42 +02:00
Shane Melton
a7fe4877d7 [PM-17563] Security task background synchronization (#14086)
* [PM-17563] Implement listenForTaskNotifications in default-task.service.ts

* [PM-17563] Update syncService to include userId in syncCompleted message payload

* [PM-17563] Update default-task.service to react to both pending task notifications and completed syncs

* [PM-17563] Add unit tests around task notification listening

* [PM-17563] Only check for at risk password tasks if tasks are enabled

* [PM-17563] Make userId required even if undefined

* [PM-17563] Use abstract TaskService instead of default implementation in MainBackground

* [PM-17563] Cleanup userId filtering
2025-04-04 13:42:44 -07:00
Jason Ng
263598d9e0 [PM-18790] browser intro carousel component (#14097)
* build intro carousel for browser to show for new installations
2025-04-04 10:52:18 -04:00
Justin Baur
e697f73fd5 [PM-19806] Add Special Foreground Notifications Service (#14094)
* Add Special Foreground Notifications Service

* Add link to method
2025-04-03 08:47:32 -04:00
Thomas Avery
17f661e3d1 [PM-19287] Feature flag for encrypt service (#13894)
* Extract getFeatureFlagValue to pure function

Co-authored-by: Matt Gibson <mgibson@bitwarden.com>

* Add broadcasting abstractions and OnServerConfigChange interface.

Co-authored-by: Matt Gibson <mgibson@bitwarden.com>

* Add implementation of onServerConfigChange on encrypt services

Co-authored-by: Matt Gibson <mgibson@bitwarden.com>

* Add onServerConfigChange implementation for encrypt worker

Co-authored-by: Matt Gibson <mgibson@bitwarden.com>

* Wire up broadcasting in dependency injection

Co-authored-by: Matt Gibson <mgibson@bitwarden.com>

* Add unit tests

* Handle subscribing for onServerConfigChange in init services

---------

Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
2025-04-01 14:14:00 -05:00
Jason Ng
3003d129c9 [PM-18984] Vault Nudges Service (#13970)
* build vault nudge service for upcoming onboarding nudges
2025-04-01 13:38:11 -04:00
Bernd Schoolmann
22039d038d [PM-3475] Remove deprecated keys (#13266)
* Remove deprecated keys

* Fix cli build

* Fix build
2025-03-31 16:58:02 +02:00
Addison Beck
f759e62aeb fix(browser): restore timer based background syncs (#14031)
* docs: fix a typo

* fix(browser): restore timer-based background syncs

The browser extension was not performing scheduled background syncs every 30 minutes as expected. This was due to missing task scheduling code that was accidentally removed during the web push implementation (PR #11346).

This commit:
- Creates a new BackgroundSyncService to manage sync scheduling
- Properly initializes the sync interval in main.background.ts
- Adds a test to ensure the sync initialization code isn't accidentally removed again
- Organizes platform module structure to support the new service

Fixes PM-19396

* review: remove unecassary await keyword
2025-03-28 14:17:18 -04:00
Jason Ng
a3e01ad672 [PM-10610] push notification to end user notification service (#13876)
* use NotificationsService.notifictions$ for tracking inside default end user notification
2025-03-26 13:16:40 -04:00