* move pinKeyEncryptedUserKey
* move pinKeyEncryptedUserKeyEphemeral
* remove comments, move docs
* cleanup
* use UserKeyDefinition
* refactor methods
* add migration
* fix browser dependency
* add tests for migration
* rename to pinService
* move state to PinService
* add PinService dep to CryptoService
* move protectedPin to state provider
* update service deps
* renaming
* move decryptUserKeyWithPin to pinService
* update service injection
* move more methods our of crypto service
* remove CryptoService dep from PinService and update service injection
* remove cryptoService reference
* add method to FakeMasterPasswordService
* fix circular dependency
* fix desktop service injection
* update browser dependencies
* add protectedPin to migrations
* move storePinKey to pinService
* update and clarify documentation
* more jsdoc updates
* update import paths
* refactor isPinLockSet method
* update state definitions
* initialize service before injecting into other services
* initialize service before injecting into other services (bw.ts)
* update clearOn and do additional cleanup
* clarify docs and naming
* assign abstract & private methods, add clarity to decryptAndMigrateOldPinKeyEncryptedMasterKey() method
* derived state (attempt)
* fix typos
* use accountService to get active user email
* use constant userId
* add derived state
* add get and clear for oldPinKeyEncryptedMasterKey
* require userId
* move pinProtected
* add clear methods
* remove pinProtected from account.ts and replace methods
* add methods to create and store pinKeyEncryptedUserKey
* add pinProtected/oldPinKeyEncrypterMasterKey to migration
* update migration tests
* update migration rollback tests
* update to systemService and decryptAndMigrate... method
* remove old test
* increase length of state definition name to meet test requirements
* rename 'TRANSIENT' to 'EPHEMERAL' for consistency
* fix tests for login strategies, vault-export, and fake MP service
* more updates to login-strategy tests
* write new tests for core pinKeyEncrypterUserKey methods and isPinSet
* write new tests for pinProtected and oldPinKeyEncryptedMasterKey methods
* minor test reformatting
* update test for decryptUserKeyWithPin()
* fix bug with oldPinKeyEncryptedMasterKey
* fix tests for vault-timeout-settings.service
* fix bitwarden-password-protected-importer test
* fix login strategy tests and auth-request.service test
* update pinService tests
* fix crypto service tests
* add jsdoc
* fix test file import
* update jsdocs for decryptAndMigrateOldPinKeyEncryptedMasterKey()
* update error messages and jsdocs
* add null checks, move userId retrievals
* update migration tests
* update stateService calls to require userId
* update test for decryptUserKeyWithPin()
* update oldPinKeyEncryptedMasterKey migration tests
* more test updates
* fix factory import
* update tests for isPinSet() and createProtectedPin()
* add test for makePinKey()
* add test for createPinKeyEncryptedUserKey()
* add tests for getPinLockType()
* consolidate userId verification tests
* add tests for storePinKeyEncryptedUserKey()
* fix service dep
* get email based on userId
* use MasterPasswordService instead of internal
* rename protectedPin to userKeyEncryptedPin
* rename to pinKeyEncryptedUserKeyPersistent
* update method params
* fix CryptoService tests
* jsdoc update
* use EncString for userKeyEncryptedPin
* remove comment
* use cryptoFunctionService.compareFast()
* update tests
* cleanup, remove comments
* resolve merge conflict
* fix DI of MasterPasswordService
* more DI fixes
* Move about.component into tools ownership
* Split out account security settings
Move settings.component.ts to auth/popup/settings and rename to account-security.component.ts
Move controls from settings.component.html and create account-security.component.html
Move settings.component.html to tools/popup/settings.component.html
Create settings.component.ts under tools/popup/settings
Fixup module imports and routing
Add new strings to en/message.json
* Move vault-timeout-input.component to auth
* Move await-desktop-dialog.component to auth
* Add transition for account-security
* Create appearance settings component
* Add entry in settings to navigate to the appearance settings page
* Add transition animation for settings to appearance and back
* Remove settings from options that are now under appearance
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Move about.component into tools ownership
* Split out account security settings
Move settings.component.ts to auth/popup/settings and rename to account-security.component.ts
Move controls from settings.component.html and create account-security.component.html
Move settings.component.html to tools/popup/settings.component.html
Create settings.component.ts under tools/popup/settings
Fixup module imports and routing
Add new strings to en/message.json
* Move vault-timeout-input.component to auth
* Move await-desktop-dialog.component to auth
* Move folder.component to vault/popup/settings
* Move sync.component to vault/popup/settings
* Create vault settings component
Move controls from settings.component.html to vault-settings.component.html
Register VaultSettingsComponent within app.module
Register route for VaultSettingsComponent
Add new string in en/messages.json
* Fix routing for back navigation on child pages of vault settings
* Add transitions to vault-settings sub-pages
* Add transition for account-security
* Add an await to popping out the extension
* Use "Vault" instead of "Vault settings" as title
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Move about.component into tools ownership
* Split out account security settings
Move settings.component.ts to auth/popup/settings and rename to account-security.component.ts
Move controls from settings.component.html and create account-security.component.html
Move settings.component.html to tools/popup/settings.component.html
Create settings.component.ts under tools/popup/settings
Fixup module imports and routing
Add new strings to en/message.json
* Move vault-timeout-input.component to auth
* Move await-desktop-dialog.component to auth
* Add transition for account-security
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* [AC-2555] Fix missing feature flags in CollectionsComponent
* [AC-2555] Do not filter collections when opening the cipher collections dialog in the org vault
* suppress welcome window on install when extension is in dev mode
* use platformUtilsService.isDev instead of process.env.ENV
* use devFlags.skipWelcomeOnInstall instead of platformUtilsService.isDev
* update old dev_flags casing in base configs
* Ensure AuthStatus Changes Before Exiting
* Do Not Display Account Without Name Or Email
* Fix Environment Selectors
* Add AccountService.clean to Web
* [PM-7810] Handle Multithread Decryption through Offscreen API
* [PM-7810] Handle Multithread Decryption through Offscreen API
* Use a service to track when to open and close offscreen document
There some strangeness around maintaining the offscreen document for more callbacks, that need not have the same reasons and justifications as the original.
We'd need to test, but perhaps the intent is something closer to maintaining a work queue ourselves and creating the offscreen page for only a single reason as it comes in, then waiting for that page to close before opening another.
* [PM-7810] Handle Multithread Decryption through Offscreen API
* [PM-7810] Handle Multithread Decryption through Offscreen API
* [PM-7810] Handle Multithread Decryption through Offscreen API
* [PM-7810] Handle Multithread Decryption through Offscreen API
* [PM-7810] Implementing jest tests for OffscreenDocument and BrowserMultithreadEncryptServiceImplementation
* [PM-7810] Separating out the process by which we get decrypted items from the web worker to ensure we do not do duplicate effort
* [PM-7810] Separating out the process by which we get decrypted items from the web worker to ensure we do not do duplicate effort
* Prefer builtin promise flattening
* [PM-7810] Introducing a fallback to the MultithreadEncryptServiceImplementation to ensure we can fallback to single thread decryption if necessary
* [PM-7810] Updating documentation
* [PM-7810] Fixing implementation to leverage the new OffscreenDocumentService
---------
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* do no run fido2 content scripts on browser settings or extension background pages
* remove unneeded overlay visibility setting state guard
* only filter content script and page script and update test
* handle content script host permission errors
* add activeTab to mv3 permissions
* allow other browser inject errors to throw
* Remove usage of getBgService for CipherService
With CipherService using StateProviders: https://github.com/bitwarden/clients/pull/8314 - we should no longer need CipherService
* Remove usage of getBgService for CollectionService
With CollectionService using StateProviders: https://github.com/bitwarden/clients/pull/7732 - we should no longer need CollectionService
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Use a service to track when to open and close offscreen document
There some strangeness around maintaining the offscreen document for more callbacks, that need not have the same reasons and justifications as the original.
We'd need to test, but perhaps the intent is something closer to maintaining a work queue ourselves and creating the offscreen page for only a single reason as it comes in, then waiting for that page to close before opening another.
* Prefer builtin promise flattening
* Await anything and everything
---------
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>