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

72 Commits

Author SHA1 Message Date
✨ Audrey ✨
3acdd9d8fd [PM-7290] replace legacy abstraction with generation algorithms (#9435)
* replace legacy abstraction with generation algorithms
* delete mv2-based generator services
2024-06-04 11:26:20 -04:00
Matt Gibson
3e93fc9461 Prefer UserKeyDefinitions for getUser state (#9487) 2024-06-04 11:13:04 -04:00
✨ Audrey ✨
90e7e16df6 move state provider extensions to tools folder (#9436) 2024-05-30 15:37:40 -04:00
✨ Audrey ✨
bb277565df fix lint failure (#9440) 2024-05-30 14:34:36 -04:00
✨ Audrey ✨
0ef5ab79c6 Revert "Revert "Change website default value to empty string. (#9127)" (#9437)" (#9438)
This reverts commit d0914ac81f.
2024-05-30 18:20:07 +00:00
✨ Audrey ✨
d0914ac81f Revert "Change website default value to empty string. (#9127)" (#9437)
This reverts commit c37006c564.
2024-05-30 20:16:32 +02:00
pixls
c37006c564 Change website default value to empty string. (#9127)
Fastmail API returns and error when passed a null value in forDomain.
Empty string is the preferred blank option.

Co-authored-by: yara <ybeadenkopf@fastmailteam.com>
2024-05-30 13:32:25 -04:00
✨ Audrey ✨
6ca836f31d fix clear when account unavailable error (#9299)
* fix clear when account unavailable error
* remove explicit password history clear on logout
2024-05-22 10:03:17 -04:00
✨ Audrey ✨
a16dc84a0a [PM-6819] Credential generator MV3 integration (#8998)
* replace `PasswordGeneratorService` with `legacyPasswordGenerationServiceFactory`
* replace `UsernameGeneratorService` with `legacyUsernameGenerationServiceFactory`
* migrate generator options and history
* apply policy immediately once available
* suppress duplicate policy emissions
* run password generation response code in `ngZone`
2024-05-20 18:08:49 +01:00
✨ Audrey ✨
4ae208fabc rotate sends from original key to rotated key (#9130) 2024-05-10 16:08:05 -04:00
Matt Gibson
c70a5aa024 [PM-6688] Use AccountService as account source (#8893)
* Use account service to track accounts and active account

* Remove state service active account Observables.

* Add email verified to account service

* Do not store account info on logged out accounts

* Add account activity tracking to account service

* Use last account activity from account service

* migrate or replicate account service data

* Add `AccountActivityService` that handles storing account last active data

* Move active and next active user to account service

* Remove authenticated accounts from state object

* Fold account activity into account service

* Fix builds

* Fix desktop app switch

* Fix logging out non active user

* Expand helper to handle new authenticated accounts location

* Prefer view observable to tons of async pipes

* Fix `npm run test:types`

* Correct user activity sorting test

* Be more precise about log out messaging

* Fix dev compare errors

All stored values are serializable, the next step wasn't necessary and was erroring on some types that lack `toString`.

* If the account in unlocked on load of lock component, navigate away from lock screen

* Handle no users case for auth service statuses

* Specify account to switch to

* Filter active account out of inactive accounts

* Prefer constructor init

* Improve comparator

* Use helper methods internally

* Fixup component tests

* Clarify name

* Ensure accounts object has only valid userIds

* Capitalize const values

* Prefer descriptive, single-responsibility guards

* Update libs/common/src/state-migrations/migrate.ts

Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>

* Fix merge

* Add user Id validation

activity for undefined was being set, which was resulting in requests for the auth status of `"undefined"` (string) userId, due to key enumeration. These changes stop that at both locations, as well as account add for good measure.

---------

Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
2024-04-30 09:13:02 -04:00
Ike
1e4158fd87 [PM-5735] Create kdf Service (#8715)
* key connector migration initial

* migrator complete

* fix dependencies

* finalized tests

* fix deps and sync main

* clean up definition file

* fixing tests

* fixed tests

* fixing CLI, Browser, Desktop builds

* fixed factory options

* reverting exports

* implemented UserKeyDefinition clearOn

* Initial Kdf Service Changes

* rename and account setting kdfconfig

* fixing tests and renaming migration

* fixed DI ordering for browser

* rename and fix DI

* Clean up Migrations

* fixing migrations

* begin data structure changes for kdf config

* Make KDF more type safe; co-author: jlf0dev

* fixing tests

* Fixed CLI login and comments

* set now accepts userId and test updates

---------

Co-authored-by: Jake Fink <jfink@bitwarden.com>
2024-04-25 11:26:01 -07:00
✨ Audrey ✨
1e67014158 fix update loop when overwriting state from buffer (#8834) 2024-04-19 13:12:17 -04:00
✨ Audrey ✨
44d59f0d8c [PM-7419] add buffered state (#8706)
Introduces a state manager that buffers data until an observed dependency signals it should 
overwrite another state manager with the buffered data. It can be used to implement 
migrations of encrypted data, edit-apply loops (such as used for save operations), and to 
map between encryption keys/formats.
2024-04-12 13:31:58 -04:00
Matt Gibson
8d698d9d84 [PM-7169][PM-5267] Remove auth status from account info (#8539)
* remove active account unlocked from state service

* Remove status from account service `AccountInfo`

* Fixup lingering usages of status

Fixup missed factories

* Fixup account info usage

* fixup CLI build

* Fixup current account type

* Add helper for all auth statuses to auth service

* Fix tests

* Uncomment mistakenly commented code

* Rework logged out account exclusion tests

* Correct test description

* Avoid getters returning observables

* fixup type
2024-04-12 09:25:45 +02:00
Matt Gibson
1308b326fd Tools/specify-clearon-conditions (#8596)
* Specify user clear events for event upload

* Specify generator clear events

* Specify clear events for user send data

* Specify generic clear on logout for encrypted secret state

* Allow `clearOn`event to be passed into secret state

* Match current data persistence rules

* Clear ui memory on lock + logout
2024-04-08 12:26:22 +00:00
✨ Audrey ✨
edf35a9ad1 fix fencepost errors in padded data packer (#8631)
Unit tests trim vertical pipes when appear in the data packer's JSON data, but electron is not as forgiving. It throws errors in this situation. This fixes the error by trimming the pipes before b64 decoding the result.
2024-04-05 13:03:04 -04:00
✨ Audrey ✨
b579bc8f96 [PM-6818] legacy generator service adapter (#8582)
* introduce legacy generators
* introduce generator navigation service
* Introduce default options. These accept a userId so that they can be policy-defined
* replace `GeneratorOptions` with backwards compatible `GeneratorNavigation`
2024-04-03 13:48:33 -04:00
Tom
a6e178f1e6 [PM-5574] sends state provider (#8373)
* Adding the key definitions and tests and initial send state service

* Adding the abstraction and implementing

* Planning comments

* Everything but fixing the send tests

* Moving send tests over to the state provider

* jslib needed name refactor

* removing get/set encrypted sends from web vault state service

* browser send state service factory

* Fixing conflicts

* Removing send service from services module and fixing send service observable

* Commenting the migrator to be clear on why only encrypted

* No need for service factories in browser

* browser send service is no longer needed

* Key def test cases to use toStrictEqual

* Running prettier

* Creating send test data to avoid code duplication

* Adding state provider and account service to send in cli

* Fixing the send service test cases

* Fixing state definition keys

* Moving to observables and implementing encryption service

* Fixing key def tests

* The cli was using the deprecated get method

* The observables init doesn't need to happen in constructor

* Missed commented out code

* If enc key is null get user key

* Service factory fix
2024-04-02 12:39:06 -04:00
✨ Audrey ✨
df058ba399 [PM-6146] generator history (#8497)
* introduce `GeneratorHistoryService` abstraction
* implement generator history service with `LocalGeneratorHistoryService` 
* cache decrypted data using `ReplaySubject` instead of `DerivedState`
* move Jsonification from `DataPacker` to `SecretClassifier` because the classifier 
  is the only component that has full type information. The data packer still handles 
  stringification.
2024-03-28 12:19:12 -04:00
✨ Audrey ✨
d000f081da [PM-6556] reintroduce policy reduction for multi-org accounts (#8409) 2024-03-26 07:59:45 -04:00
✨ Audrey ✨
05609a814c [PM-6847] SecretState array and record support (#8378) 2024-03-21 17:44:42 +01:00
Daniel James Smith
ea0035f658 [PM-6755] Fix password generation defaults on CLI (#8308)
* Fix minSpecial for pwd generation being set to 1 instead of zero

* Use less magic numbers

---------

Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
2024-03-19 16:20:57 +00:00
✨ Audrey ✨
c7318311af [PM-5974] introduce ForwarderGeneratorStrategy (#8207)
* update defaults to include `website` parameter
* update utilities tests to include `website` parameter
2024-03-07 12:45:56 -05:00
✨ Audrey ✨
d87a8f9271 [PM-6523] generator service tuning (#8155)
* rename policy$ to evaluator$
* replace `ActiveUserState` with `SingleUserState`
* implement `SingleUserState<T>` on `SecretState`
2024-03-04 13:43:38 -05:00
✨ Audrey ✨
36116bddda [PM-5614] introduce SecretState wrapper (#7823)
Matt provided a ton of help on getting the state interactions right. Both he 
and Justin collaborated with me to write the core of of the secret classifier.

Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
2024-02-27 11:40:32 -05:00
Jake Fink
19a373d87e [PM-6211] Create key generation service (#7939)
* create key generation service

* replace old key generation service and add references

* use key generation service in key connector service

* use key generation service in send service

* user key generation service in access service

* use key generation service in device trust service

* fix tests

* fix browser

* add createKeyFromMaterial and tests

* create ephemeral key

* fix tests

* rename method and add returns docs

* ignore material in destructure

* modify test

* specify material as key material

* pull out magic strings to properties

* make salt optional and generate if not provided

* fix test

* fix parameters

* update docs to include link to HKDF rfc
2024-02-23 08:48:15 -05:00
✨ Audrey ✨
eafe3dec67 [PM-5973] add catchall generation strategy (#7898) 2024-02-12 10:27:47 -05:00
✨ Audrey ✨
c41dce8c63 [PM-5972] add subaddress generator strategy (#7897) 2024-02-12 09:20:55 -05:00
aj-rosado
7d47f1496c [PM-6072] Add get$ method on SendService (#7839)
* Added missing get$ method on SendService

* Added distinctUntilChanged to the get$ method and added more tests

* Added more validations and tests to get$

* Added some more test cases to get$

* Refactored test cases from get$
2024-02-09 18:27:50 +00:00
✨ Audrey ✨
64381cbae0 check credential type explicitly when loading evaluator (#7791) 2024-02-09 11:33:52 -05:00
Joseph Yu
bb031f6779 [PM-2311] Allow empty passphrase separator (#5473)
* Change passphrase generator's default wordSeparator to the empty string ''
* Create DefaultPassphraseGenerationOptions
* Use DefaultPassphraseGenerationOptions.wordSeparator in passphrase generation
* Add `empty` separator option to passphrase generator CLI and an example
* Change DefaultPassphraseGenerationOptions numWords to 3
* Use `DefaultPassphraseGenerationOptions.numWords` in CLI passphrase gen
2024-02-09 11:07:53 -05:00
✨ Audrey ✨
6d79231476 [PM-5610] add eff long word list generator (#7748) 2024-02-07 13:24:32 -05:00
Will Martin
cb8849c355 Add eslint rule no-floating-promises (#7789)
* add eslint rule no-floating-promises

* add eslint-disable comment to offending lines
2024-02-02 15:13:37 -05:00
✨ Audrey ✨
e8d0d56c5f [PM-5608] introduce passphrase generator strategy (#7690) 2024-02-02 10:49:38 -05:00
✨ Audrey ✨
6b97c0e716 [PM-5840] add duck duck go forwarder (#7674) 2024-01-25 10:24:22 -05:00
✨ Audrey ✨
af4cafa2b9 [PM-5841] add fastmail forwarder (#7676) 2024-01-25 10:23:56 -05:00
✨ Audrey ✨
67f1fc4f95 [PM-5842] add firefox relay forwarder (#7677) 2024-01-25 10:22:55 -05:00
✨ Audrey ✨
f6da6d637c [PM-5843] add forward email forwarder (#7678) 2024-01-25 10:22:26 -05:00
✨ Audrey ✨
2c69810460 [PM-5844] add simple login forwarder (#7679) 2024-01-25 10:21:51 -05:00
✨ Audrey ✨
df2329f059 [PM-5781] Anon addy forwarder (#7654) 2024-01-24 17:23:39 -05:00
✨ Audrey ✨
dbf836b573 [PM-5606] Add reactive generator service (#7446) 2024-01-23 14:22:52 -05:00
✨ Audrey ✨
d5738b7483 [PM-5780] New username generation settings types (#7613)
Split from  #6924
2024-01-23 09:52:20 -05:00
Matt Gibson
160a636fa0 Move key types to central location (#7531) 2024-01-17 07:27:44 -05:00
Oscar Hinton
93e9937e5c Add some test cases to the password strength service (#7483)
Co-authored-by: Daniel James Smith <2670567+djsmith85@users.noreply.github.com>
2024-01-12 07:25:33 +01:00
Jake Fink
a62f8cd652 [PM-3797] Client changes to use new key rotation process (#6881)
## Type of change

<!-- (mark with an `X`) -->

```
- [ ] Bug fix
- [ ] New feature development
- [x] Tech debt (refactoring, code cleanup, dependency upgrades, etc)
- [ ] Build/deploy pipeline (DevOps)
- [ ] Other
```

## Objective

<!--Describe what the purpose of this PR is. For example: what bug you're fixing or what new feature you're adding-->
Final Client changes for Key Rotation Improvements. 

- Introduces a new `KeyRotationService` that is responsible for owning rotation process.
- Moves `Send` re-encryption to the `SendService` (`KeyRotationService` shouldn't have knowledge about how domains are encrypted).
- Moves `EmergencyAccess` re-encryption to the `EmergencyAccessService`.
- Renames `AccountRecoveryService` to `OrganizationUserResetPasswordService` after feedback from Admin Console


## Code changes

<!--Explain the changes you've made to each file or major component. This should help the reviewer understand your changes-->
<!--Also refer to any related changes or PRs in other repositories-->

Auth
- **emergency-access-update.request.ts:** New request model for domain updates that includes Id
- **emergency-access.service.ts:** Moved `EmergencyAccess` re-encryption to the `EmergencyAccessService`. Add deprecated method for legacy key rotations if feature flag is off
- **key-rotation.service/api/spec/module:** New key rotation service for owning the rotation process. Added api service, module, and spec file.
- **update-key.request.ts:** Moved to Auth ownership. Also added new properties for including other domains.
- **migrate-legacy-encryption.component.ts:** Use new key rotation service instead of old component specific service. Delete old service.
- **change-password.component.ts:** Use new key rotation service.
- **settings.module.ts:** Import key rotation module.

Admin Console
- **organization-user-reset-password.service.ts/spec:** Responsible for re-encryption of reset password keys during key rotation. Added tests.
- **organization-user-reset-password-enrollment.request.ts:** New request model for key rotations
- **reset-password.component.ts:** Update `AccountRecoveryService` to `OrganizationUserResetPasswordService`
- **enroll-master-password-reset.component.ts:** Update `AccountRecoveryService` to `OrganizationUserResetPasswordService`

Tools
- **send.service/spec.ts:** Responsible only for re-encryption of sends during key rotation. Added tests.

Other
- **api.service.ts:** Move `postAccountKey` to `KeyRotationApiService`
- **feature-flag.enum.ts:** add new feature flag

## Screenshots

<!--Required for any UI changes. Delete if not applicable-->

## Before you submit

- Please add **unit tests** where it makes sense to do so (encouraged but not required)
- If this change requires a **documentation update** - notify the documentation team
- If this change has particular **deployment requirements** - notify the DevOps team
- Ensure that all UI additions follow [WCAG AA requirements](https://contributing.bitwarden.com/contributing/accessibility/)
2023-12-22 10:31:24 -05:00
✨ Audrey ✨
df406a9862 [PM-252] fix inconsistent generator configuration behavior (#6755)
* decompose password generator policy enforcement
* integrate new logic with UI
* improve UX of minimum password length
* improve password generator policy options documentation
* initialize min length to default minimum length boundary
* reset form value on input to prevent UI desync from model

---------

Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
2023-12-12 19:17:20 -05:00
renovate[bot]
28de9439be [deps] Autofill: Update prettier to v3 (#7014)
* [deps] Autofill: Update prettier to v3

* prettier formatting updates

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Prusik <jprusik@classynemesis.com>
2023-11-29 16:15:20 -05:00
Oscar Hinton
a5e3432f85 Assign ownership to many libs files (#6928)
Assign ownership to many of the remaining libs/common files.

Criteria for ownership:
* Files used by a single team, is now owned by that team.
* Files related to a domain owned by a team is now owned by that team.
* Where ownership is unclear the "lowest level" service takes ownership.
2023-11-27 20:59:44 +00:00
cubemike99
432b96925a Fix fastmail username forwarder by changing url: to forDomain: in the API request (#6827)
Url is incorrect and should not be used per the fastmail integration.

> If your product supports deep links, the url property should be a deep link to the 
> credential or other record related to this masked email address in your product. If 
> deep links are not supported, leave this null. Do not set this to the domain of the 
> site the user is using the masked email for, see above and use forDomain for this.

At present, the username generator stores the credential locally, so there's no way 
to deeplink to the credential reliably. We should look into supporting url if, in the 
future, we sync the key across clients.
2023-11-14 15:28:11 -05:00