Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add argon2 kdf fields #3210

Merged
merged 2 commits into from Feb 12, 2023
Merged

Conversation

tessus
Copy link
Contributor

@tessus tessus commented Feb 1, 2023

Changes:

  • added columns to db schema with DEFAULT NULL
  • added a pub enum UserKdfType
  • if UserKdfType is Argon2id, server responses will include 2 more KVPs for memory and parallelism

Test plan:

  • used quexten's webvault (which includes the UI changes for Argon2) to switch KDF to argon2 and back to pbkdf2
Previous text (for reference)

This is still a work in progess. The following items have to be clarified first:

  • default db values or NULL?
  • default iterations might have to be changed depending on the type (PBKDF2, ARGON2)
  • enum for kdf type?

During compilation I get an error:

error: recursion limit reached while expanding `__static_cond!`

consider increasing the recursion limit by adding a `#![recursion_limit = "194"]` attribute to your crate (`vaultwarden`)

However in the code it says:

// The recursion_limit is mainly triggered by the json!() macro.
// The more key/value pairs there are the more recursion occurs.
// We want to keep this as low as possible, but not higher then 128.
// If you go above 128 it will cause rust-analyzer to fail,

So, what now?

@quexten
Copy link
Contributor

quexten commented Feb 1, 2023

default db values or NULL?

In the official server, kdfmemory and kdfparallelism are null if pbkdf2 is selected, and not null when argon2 is selected. If they are null, the fields can (should) be omitted from the API responses.

default iterations might have to be changed depending on the type (PBKDF2, ARGON2)
Currently, PBKDF2 is default anyways for the clients. The only way they can get argon2 is to create an account, log in, and then change to argon2.

@tessus
Copy link
Contributor Author

tessus commented Feb 1, 2023

In the official server, kdfmemory and kdfparallelism are null if pbkdf2 is selected, and not null when argon2 is selected.

Yep, I saw the DEFAULT NULL in the database DDL. That doesn't mean we have to do the same in our database schema. Since I am new to rust and diesel, I have no idea how NULL values are handled. But it is certainly easy to change the DDL to use DEFAULT NULL.

If they are null, the fields can (should) be omitted from the API responses.

They will only be NULL in the db, if we use DEFAULT NULL and argon2 has never been set/used. Or do you just mean the variables themselves should be set to NULL and omitted from the API response.

Currently, PBKDF2 is default anyways for the clients. The only way they can get argon2 is to create an account, log in, and then change to argon2.

Right, but when someone switches to argon2, I rather not have 600,000 iterations... I haven't seen the UI yet, thus I don't know what the UI will do. e.g. will it automatically change the iterations to another value or will the user have to set the iterations manually?

Btw, I am heading to bed, so I won't respond in the next few hours.

@BlackDex
Copy link
Collaborator

BlackDex commented Feb 1, 2023

I'd rather not have any defaults set into the database. Also, as @quexten mentioned the NULL is probably better.
Regarding the recursions, just up it +1 at a time until that message disappears, Rust just mentions a number mostly twice as high.

@quexten
Copy link
Contributor

quexten commented Feb 1, 2023

Some checks such as :

vaultwarden/src/config.rs

Lines 676 to 679 in 9366e31

if cfg.password_iterations < 100_000 {
err!("PASSWORD_ITERATIONS should be at least 100000 or higher. The default is 600000!");
}

Need adjusting to distinguish between pbkdf2 and argon2.

Right, but when someone switches to argon2, I rather not have 600,000 iterations... I haven't seen the UI yet, thus I don't know what the UI will do. e.g. will it automatically change the iterations to another value or will the user have to set the iterations manually?

The iterations when switching to argon2 are set in the client, not on the server. I think they should only matter on the server in case the client omits the values:

let (kdf_type, kdf_iter) = match User::find_by_mail(&data.Email, &mut conn).await {
Some(user) => (user.client_kdf_type, user.client_kdf_iter),
None => (User::CLIENT_KDF_TYPE_DEFAULT, User::CLIENT_KDF_ITER_DEFAULT),
};
Json(json!({

@quexten
Copy link
Contributor

quexten commented Feb 1, 2023

By the way, the limits should be:
0 < iterations
14 < memory < 1025
0 < parallelism < 17

The defaults on the clients are:
iterations: 3
memory: 64 (mb)
parallelism: 4
(The server has other, lower defaults)

https://github.com/bitwarden/server/blob/cb1ba50ce26ce33b2a5acf30536a2075e4fadebd/src/Core/Utilities/KdfSettingsValidator.cs#L10-L36

Edit:
Ah I see you already have some of these implemented in the PR, very nice!

if data.KdfIterations < 100_000 {
err!("KDF iterations lower then 100000 are not allowed.")
}
if data.Kdf == 1 {
if data.KdfMemory < 15 || data.KdfMemory > 1024 {
err!("Argon2 memory must be between 15mb and 1024mb.")
}
if data.KdfParallelism < 1 || data.KdfParallelism > 16 {
err!("Argon2 parallelism must be between 1 and 16.")
}
}

Probably need to change the kdfIterations check though. So something like:

   if data.Kdf == 0 {
      if data.KdfIterations < 100_000 {
          err!("PBKDF2 iterations lower than 100000 are not allowed.")
      }
   } else if data.Kdf == 1 {
        if data.KdfIterations < 1 {
          err!("Argon2 iterations lower than 1 are not allowed.")
        }
        if data.KdfMemory < 15 || data.KdfMemory > 1024 {
            err!("Argon2 memory must be between 15mb and 1024mb.")
        }
        if data.KdfParallelism < 1 || data.KdfParallelism > 16 {
            err!("Argon2 parallelism must be between 1 and 16.")
        }
    }

@quexten
Copy link
Contributor

quexten commented Feb 1, 2023

Oh, one more note: The CSP needs to be changed for the webvault. Due to webassembly not supporting hashes for the CSP yet, it requires the "wasm-unsafe-eval" policy in the CSP.

bitwarden/server@522df6e

Since the current CSP does not seem to allow it:

vaultwarden/src/util.rs

Lines 56 to 82 in 9b7e86e

let csp = format!(
"default-src 'self'; \
base-uri 'self'; \
form-action 'self'; \
object-src 'self' blob:; \
script-src 'self'; \
style-src 'self' 'unsafe-inline'; \
child-src 'self' https://*.duosecurity.com https://*.duofederal.com; \
frame-src 'self' https://*.duosecurity.com https://*.duofederal.com; \
frame-ancestors 'self' \
chrome-extension://nngceckbapebfimnlniiiahkandclblb \
chrome-extension://jbkfoedolllekgbhcbcoahefnbanhhlh \
moz-extension://* \
{allowed_iframe_ancestors}; \
img-src 'self' data: \
https://haveibeenpwned.com \
https://www.gravatar.com \
{icon_service_csp}; \
connect-src 'self' \
https://api.pwnedpasswords.com \
https://api.2fa.directory \
https://app.simplelogin.io/api/ \
https://app.anonaddy.com/api/ \
https://api.fastmail.com/ \
;\
",
icon_service_csp = CONFIG._icon_service_csp(),

Hope my notes help!

@tessus
Copy link
Contributor Author

tessus commented Feb 1, 2023

@quexten sorry, I read your edits too late, since I read the email notifications instead.
I can change the err messages later.

I only add memory/parallelism when argon2 is used to the JSON in _password_login.

Let me know, if I should do the same for:

_refresh_login
_api_key_login
_prelogin
takeover_emergency_access

I can do the rest this evening.

@quexten
Copy link
Contributor

quexten commented Feb 1, 2023

@quexten sorry, I read your edits too late, since I read the email notifications instead. I can change the err messages later.

I only add memory/parallelism when argon2 is used to the JSON in _password_login.

Let me know, if I should do the same for:

_refresh_login
_api_key_login
_prelogin
takeover_emergency_access

I can do the rest this evening.

_refresh_login

Yep, everwhere where KdfType, KdfIterations are sent, KdfMemory and KdfParallelism should now be sent too.

@quexten
Copy link
Contributor

quexten commented Feb 1, 2023

By the way, feel free to ping me once you are done with the PR, I have the argon2 builds of the web and mobile clients anyways, so I'm happy to test.

@tessus
Copy link
Contributor Author

tessus commented Feb 1, 2023

@quexten

Yep, everwhere where KdfType, KdfIterations are sent, KdfMemory and KdfParallelism should now be sent too.

This is already happening. What I was asking was whether I should also exclude the argon2 values from the JSON response as you have stated here #3210 (comment) for the 4 functions I have listed.

I have already done this for one function: https://github.com/dani-garcia/vaultwarden/pull/3210/files#diff-1c5b0c87dec2154a167b89110c637a7a4bc04f59af0b83e8ddba39eb2134518cR254

I can look into this again in 5-6 hours.

@quexten
Copy link
Contributor

quexten commented Feb 1, 2023

Oh, sorry misunderstood. I don't think it would cause issues to respond values, since for the pbkdf2 case the wouldn't be used, but since the should be null in that case, it's better to just exclude them from the response (the same way as on the official server). For argon2 of course do send them.

@quexten
Copy link
Contributor

quexten commented Feb 1, 2023

I have already done this for one function: https://github.com/dani-garcia/vaultwarden/pull/3210/files#diff-1c5b0c87dec2154a167b89110c637a7a4bc04f59af0b83e8ddba39eb2134518cR254

I had a look, and this looks correct to me 👍

Copy link
Collaborator

@BlackDex BlackDex left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good for your (as far as i know) first shot at Rust :).
Some small items to address.

I haven't validated/run the code it self though.

src/api/core/accounts.rs Outdated Show resolved Hide resolved
@tessus
Copy link
Contributor Author

tessus commented Feb 2, 2023

I am sorry, I had to take care of somehing last evening. I'll try to finish it in the morning.

@tessus
Copy link
Contributor Author

tessus commented Feb 2, 2023

Unfortunately I have issues with enum. It is a pub, but it's not recognized in the other files, even though it seems to be imported with

use crate::{
    db::{models::*, DbConn},
}

Sorry, I just don't know Rust very well.

But other than that the code should be fine. Can someone please help me with this enum?

@BlackDex
Copy link
Collaborator

BlackDex commented Feb 2, 2023

Unfortunately I have issues with enum. It is a pub, but it's not recognized in the other files, even though it seems to be imported with

use crate::{
    db::{models::*, DbConn},
}

Sorry, I just don't know Rust very well.

But other than that the code should be fine. Can someone please help me with this enum?

I suggest to place that enum in the src/db/models/user.rs either before or after the enum UserStatus
You also need to update the src/db/models/mod.rs and add that enum to the list of the pub use self::user{...} list.

That should make it globally available when either db::{models::*, ..} is used or db::models::{UserKdfType, ...}

@tessus
Copy link
Contributor Author

tessus commented Feb 2, 2023

I suggest to place that enum in the src/db/models/user.rs either before or after the enum UserStatus

Yes, I have done that already in my last commit.

You also need to update the src/db/models/mod.rs and add that enum to the list of the pub use self::user{...} list.

This was the missing part. Thank you! I'll push another commit in a sec. At the end, after the review and when it is good to go, I'll squash my commits and force-push.

@tessus tessus changed the title WIP: add argon2 kdf fields add argon2 kdf fields Feb 2, 2023
@tessus
Copy link
Contributor Author

tessus commented Feb 2, 2023

@quexten I think it's ready for a test spin.

@tessus
Copy link
Contributor Author

tessus commented Feb 2, 2023

Seriously, the pipeline failed because of the list not in alphabetical order?
This is ridiculous.

-pub use self::user::{Invitation, User, UserStampException, KdfType};
+pub use self::user::{Invitation, KdfType, User, UserStampException};

Anyway, it would make sense to have the format check in the beginning and abend BEFORE building the code....

@quexten
Copy link
Contributor

quexten commented Feb 2, 2023

@quexten I think it's ready for a test spin.

Very nice. I'll test it in a few hours.

@tessus tessus requested a review from BlackDex February 2, 2023 13:16
@quexten
Copy link
Contributor

quexten commented Feb 2, 2023

@quexten I think it's ready for a test spin.

Very nice. I'll test it in a few hours.

@tessus
Initial test works correctly. For pbkdf2 the fields are omitted. I can switch to argon2 and configure different fields, and the customized fields get sent correctly when logging in.

However, switching back to pbkdf2 does not work. I get "422 Unprocessable Entity"
screenshot

Did not tet database migrations (yet).

@quexten
Copy link
Contributor

quexten commented Feb 2, 2023

@quexten I think it's ready for a test spin.

Very nice. I'll test it in a few hours.

@tessus Initial test works correctly. For pbkdf2 the fields are omitted. I can switch to argon2 and configure different fields, and the customized fields get sent correctly when logging in.

However, switching back to pbkdf2 does not work. I get "422 Unprocessable Entity" screenshot

Did not tet database migrations (yet).

From the log:

[2023-02-02 14:34:31.440][_][WARN] Data guard JsonUpcase < ChangeKdfData >failed: Parse("{\"kdf\":0,\"kdfIterations\":600000,\"masterPasswordHash\":\"CrB8NCVWzgH3A9rXcV0Ks4e1g9wuu7n/aLGImbPJOkM=\",\"newMasterPasswordHash\":\"W6YUqnaEd2ns3TR42KPCrKVZ3CIVvevrTBjXUcV+wKI=\",\"key\":\"2.bK/vVVrmGEQ3UCa78xymkg==|5eZFTrmR2J8A+FoRckzr8d8JlMAB0SSve5ENGSbIJdLkAXi6692MC22fobnJmDpkwYpNaG8YgOeRaaXc0ALuRTtJ4rY/CDY2eKzUVVz8Omw=|TpAPAbtZIC078vr6rsengMlenrqiXTcKB/H19q6CRIg=\"}", Error("missing fieldKdfMemory", line: 1, column: 360)).

@tessus
Copy link
Contributor Author

tessus commented Feb 2, 2023

Hmm, not sure why it needs a KdfMemory field when switching back to pbkdf2. The field is in the database, but it won't be in a response when the type is not argon2.

Any chance you can send me the web-vault? http://g0to.ca/drop should do it.

@quexten
Copy link
Contributor

quexten commented Feb 2, 2023

Hmm, not sure why it needs a KdfMemory field when switching back to pbkdf2. The field is in the database, but it won't be in a response when the type is not argon2.

Any chance you can send me the web-vault? http://g0to.ca/drop should do it.

I think some structure or function in the server code might be expecting the field when parsing the json request. Since it is not sent when using pbkdf2, the server throws an error.
I have uploaded the web vault to the site you linked.

@tessus
Copy link
Contributor Author

tessus commented Feb 2, 2023

Thanks a bunch for the zip. I will look at this error this evening (hopefully). I think I might know what the problem could be (from thinking about the code I changed - I don't have it in front of me right now). But maybe BlackDex will find the issue during the review, who knows. ;-)

@BlackDex
Copy link
Collaborator

BlackDex commented Feb 2, 2023

Thanks a bunch for the zip. I will look at this error this evening (hopefully). I think I might know what the problem could be (from thinking about the code I changed - I don't have it in front of me right now). But maybe BlackDex will find the issue during the review, who knows. ;-)

Yea, that was very easy :).
https://github.com/dani-garcia/vaultwarden/pull/3210/files#diff-e6ed38cdf0d7a02240d1d2a5d7ad72682905ea9bfb7e4cc2f0edef05f9de2d88R350-R351

Those probably need to be converted to an Option<>.

@tessus
Copy link
Contributor Author

tessus commented Feb 2, 2023

Nice, I thought along the same lines. I have a few minutes. I'll fix it now.

@quexten
Copy link
Contributor

quexten commented Feb 2, 2023

Nice, I thought along the same lines. I have a few minutes. I'll fix it now.

Switching back to Pbkdf2 works now.

@tessus
Copy link
Contributor Author

tessus commented Feb 3, 2023

Thanks for the reply.

enums can support more then just a specific type. Setting a type on an enum is possible for exporting as a c-repr for example.

Yep, I know, but in this case the compiler sees that only integers were used for the 2 values in the enum.

The compiler doesn't know what you want to do exactly

I also understand this, but that's why I mentioned that the compiler could use a default, if nothing is explicitly specified. We have to enclose the integer values in Some to do the comparison tests. IMO this should not be necessary.

src/db/models/user.rs Outdated Show resolved Hide resolved
src/db/models/user.rs Outdated Show resolved Hide resolved
src/db/models/user.rs Outdated Show resolved Hide resolved
src/db/schemas/mysql/schema.rs Outdated Show resolved Hide resolved
src/api/core/accounts.rs Outdated Show resolved Hide resolved
src/api/core/accounts.rs Outdated Show resolved Hide resolved
@tessus tessus changed the title add argon2 kdf fields WIP: add argon2 kdf fields Feb 7, 2023
@tessus
Copy link
Contributor Author

tessus commented Feb 7, 2023

Back to WIP. No idea how to fix those compile errors yet. Will have to do some research, but any hint might help.

P.S.: Hmm, so I think I have to check whether the value is not None, and if so, unwrap. But I am not sure if this is the Rust way, or if there are other patterns to use.

src/api/core/accounts.rs Outdated Show resolved Hide resolved
@tessus tessus changed the title WIP: add argon2 kdf fields add argon2 kdf fields Feb 7, 2023
@tessus
Copy link
Contributor Author

tessus commented Feb 7, 2023

Sqashed and force-pushed again. I dislike a messy git history, although it probably wouldn't matter, since merge commits are done when PRs are merged to master.

@tessus tessus requested review from jjlin and BlackDex and removed request for BlackDex and jjlin February 7, 2023 03:49
@tessus
Copy link
Contributor Author

tessus commented Feb 7, 2023

Sorry, it seems that I can't re-request a review from more than one person.

@tessus tessus force-pushed the feature/kdf-options branch 2 times, most recently from b660efe to 08916aa Compare February 7, 2023 06:16
@tessus
Copy link
Contributor Author

tessus commented Feb 8, 2023

Is there still something missing for this change?

@BlackDex
Copy link
Collaborator

BlackDex commented Feb 8, 2023

Is there still something missing for this change?

In the sense of an approval?
I did not had time yet to check it. Also a web-vault needs to be released with supports for this of course. It could be that Bitwarden will make some changes to this part while not yet released by them of course, wouldn't be the first time.

@tessus
Copy link
Contributor Author

tessus commented Feb 8, 2023

In the sense of an approval?

No, I know that reviewing a PR can take time. But rather whether I have addressed all the issues that came up in previous conversations. I think I addressed everything, but I could have missed something. But the people who have left comments would most likely know right away and can say "hold on, dude, what about xyz? you missed that one."

Also a web-vault needs to be released with supports for this of course.

Well, this change does not require a new web-vault. It's the other way around. The new clients that have the argon2 code will require this code change.
I am not saying it must be merged now, I am just saying that merging this PR will not mess up the current or older clients.

Copy link
Owner

@dani-garcia dani-garcia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested with the main branch of the web vault, works correctly for me

@dani-garcia dani-garcia merged commit 3b0f643 into dani-garcia:main Feb 12, 2023
@pjs128
Copy link

pjs128 commented Mar 24, 2023

In what version should we start seeing Argon2id in the Security>Keys>KDF_algorithm dropdown?

@BlackDex
Copy link
Collaborator

Either currently in testing, or wait until next release.

RickCoxDev pushed a commit to RickCoxDev/home-cluster that referenced this pull request May 25, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [vaultwarden/server](https://togithub.com/dani-garcia/vaultwarden) |
minor | `1.27.0` -> `1.28.1` |

---

### Release Notes

<details>
<summary>dani-garcia/vaultwarden</summary>

###
[`v1.28.1`](https://togithub.com/dani-garcia/vaultwarden/releases/tag/1.28.1)

[Compare
Source](https://togithub.com/dani-garcia/vaultwarden/compare/1.28.0...1.28.1)

#### What's Changed

- Decode knowndevice `X-Request-Email` as base64url with no padding by
[@&#8203;jjlin](https://togithub.com/jjlin) in
[dani-garcia/vaultwarden#3376
- Fix abort on password reset mail error by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3390
- support `/users/<uuid>/invite/resend` admin api by
[@&#8203;nikolaevn](https://togithub.com/nikolaevn) in
[dani-garcia/vaultwarden#3397
- always return KdfMemory and KdfParallelism by
[@&#8203;stefan0xC](https://togithub.com/stefan0xC) in
[dani-garcia/vaultwarden#3398
- Fix sending out multiple websocket notifications by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3405
- Revert setcap, update rust and crates by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3403

#### New Contributors

- [@&#8203;nikolaevn](https://togithub.com/nikolaevn) made their first
contribution in
[dani-garcia/vaultwarden#3397

**Full Changelog**:
dani-garcia/vaultwarden@1.28.0...1.28.1

###
[`v1.28.0`](https://togithub.com/dani-garcia/vaultwarden/releases/tag/1.28.0)

[Compare
Source](https://togithub.com/dani-garcia/vaultwarden/compare/1.27.0...1.28.0)

#### Major changes

- The project has changed license to the
[**AGPLv3**](https://togithub.com/dani-garcia/vaultwarden/blob/main/LICENSE.txt).
If you're hosting a Vaultwarden instance, you now have a requirement to
distribute the Vaultwarden source code to your users if they request it.
The source code, and any changes you have made, need to be under the
same AGPLv3 license. If you simply use our code without modifications,
just pointing them to this repository is enough.
- Added support for **Argon2** key derivation on the clients. To enable
it for your account, make sure all your clients are using version
v2023.2.0 or greater, then go to account settings > security > keys, and
change the algorithm from PBKDF2 to Argon2id.
- Added support for **Argon2** key derivation for the admin page token.
To update your admin token to use it, [check the
wiki](https://togithub.com/dani-garcia/vaultwarden/wiki/Enabling-admin-page#secure-the-admin_token)
- New **alternative registries** for the docker images are available (In
**BETA** for now):
- **Github Container Registry**: https://ghcr.io/dani-garcia/vaultwarden
    -   **Quay**: https://quay.io/vaultwarden/server

#### What's Changed

- Remove patched multer-rs by
[@&#8203;manofthepeace](https://togithub.com/manofthepeace) in
[dani-garcia/vaultwarden#2968
- Removed unsafe-inline JS from CSP and other fixes by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3058
- Validate YUBICO_SERVER string
([#&#8203;3003](https://togithub.com/dani-garcia/vaultwarden/issues/3003))
by [@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3059
- Log message to stderr if LOG_FILE is not writable by
[@&#8203;pjsier](https://togithub.com/pjsier) in
[dani-garcia/vaultwarden#3061
- Update WebSocket Notifications by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3076
- Optimize config loading messages by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3092
- Percent-encode org_name in links by
[@&#8203;am97](https://togithub.com/am97) in
[dani-garcia/vaultwarden#3093
- Fix failing large note imports by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3087
- Change `text/plain` API responses to `application/json` by
[@&#8203;jjlin](https://togithub.com/jjlin) in
[dani-garcia/vaultwarden#3124
- Remove `shrink-to-fit=no` from viewport-meta-tag by
[@&#8203;redwerkz](https://togithub.com/redwerkz) in
[dani-garcia/vaultwarden#3126
- Update dependencies and MSRV by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3128
- Resolve uninlined_format_args clippy warnings by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3065
- Update Rust to v1.66.1 to patch CVE by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3136
- Fix remaining inline format by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3130
- Use more modern meta tag for charset encoding by
[@&#8203;redwerkz](https://togithub.com/redwerkz) in
[dani-garcia/vaultwarden#3131
- fix (2fa.directory): Allow api.2fa.directory, and remove 2fa.directory
by [@&#8203;GeekCornerGH](https://togithub.com/GeekCornerGH) in
[dani-garcia/vaultwarden#3132
- Optimize CipherSyncData for very large vaults by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3133
- Add avatar color support by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3134
- Add MFA icon to org member overview by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3135
- Minor refactoring concering user.setpassword by
[@&#8203;sirux88](https://togithub.com/sirux88) in
[dani-garcia/vaultwarden#3139
- Validate note sizes on key-rotation. by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3157
- Update KDF Configuration and processing by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3163
- Remove `arm32v6`-specific tag by
[@&#8203;jjlin](https://togithub.com/jjlin) in
[dani-garcia/vaultwarden#3164
- Re-License Vaultwarden to AGPLv3 by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#2561
- Admin password reset by
[@&#8203;sirux88](https://togithub.com/sirux88) in
[dani-garcia/vaultwarden#3116
- "Spell-Jacking" mitigation ~ prevent sensitive data leak … by
[@&#8203;dlehammer](https://togithub.com/dlehammer) in
[dani-garcia/vaultwarden#3145
- Allow listening on privileged ports (below 1024) as non-root by
[@&#8203;jjlin](https://togithub.com/jjlin) in
[dani-garcia/vaultwarden#3170
- don't nullify key when editing emergency access by
[@&#8203;stefan0xC](https://togithub.com/stefan0xC) in
[dani-garcia/vaultwarden#3215
- Fix trailing slash not getting removed from domain by
[@&#8203;BlockListed](https://togithub.com/BlockListed) in
[dani-garcia/vaultwarden#3228
- Generate distinct log messages for regex vs. IP blacklisting. by
[@&#8203;kpfleming](https://togithub.com/kpfleming) in
[dani-garcia/vaultwarden#3231
- allow editing/unhiding by group by
[@&#8203;farodin91](https://togithub.com/farodin91) in
[dani-garcia/vaultwarden#3108
- Fix Javascript issue on non sqlite databases by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3167
- add argon2 kdf fields by [@&#8203;tessus](https://togithub.com/tessus)
in
[dani-garcia/vaultwarden#3210
- add support for system mta though sendmail by
[@&#8203;soruh](https://togithub.com/soruh) in
[dani-garcia/vaultwarden#3147
- Updated Rust and crates by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3234
- docs: add build status badge in readme by
[@&#8203;R3DRUN3](https://togithub.com/R3DRUN3) in
[dani-garcia/vaultwarden#3245
- Validate all needed fields for client API login by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3251
- Fix Organization delete when groups are configured by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3252
- Fix Collection Read Only access for groups by
[@&#8203;Misterbabou](https://togithub.com/Misterbabou) in
[dani-garcia/vaultwarden#3254
- Make the admin session lifetime adjustable by
[@&#8203;mittler-works](https://togithub.com/mittler-works) in
[dani-garcia/vaultwarden#3262
- Add function to fetch user by email address by
[@&#8203;mittler-works](https://togithub.com/mittler-works) in
[dani-garcia/vaultwarden#3263
- Fix vault item display in org vault view by
[@&#8203;jjlin](https://togithub.com/jjlin) in
[dani-garcia/vaultwarden#3277
- Add confirmation for removing 2FA and deauthing sessions in admin
panel by [@&#8203;JCBird1012](https://togithub.com/JCBird1012) in
[dani-garcia/vaultwarden#3282
- Some Admin Interface updates by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3288
- Fix the web-vault v2023.2.0 API calls by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3281
- Fix confirmation for removing 2FA and deauthing sessions in admin
panel by [@&#8203;dpinse](https://togithub.com/dpinse) in
[dani-garcia/vaultwarden#3290
- Admin token Argon2 hashing support by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3289
- Add HEAD routes to avoid spurious error messages by
[@&#8203;jjlin](https://togithub.com/jjlin) in
[dani-garcia/vaultwarden#3307
- Fix web-vault Member UI show/edit/save by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3315
- Upd Crates, Rust, MSRV, GHA and remove Backtrace by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3310
- Add support for `/api/devices/knowndevice` with HTTP header params by
[@&#8203;jjlin](https://togithub.com/jjlin) in
[dani-garcia/vaultwarden#3329
- Update Rust, MSRV and Crates by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3348
- Merge ClientIp with Headers. by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3332
- add endpoints to bulk delete collections/groups by
[@&#8203;stefan0xC](https://togithub.com/stefan0xC) in
[dani-garcia/vaultwarden#3354
- Add support for Quay.io and GHCR.io as registries by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3363
- Some small fixes and updates by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[dani-garcia/vaultwarden#3366
- Update web vault to v2023.3.0 by
[@&#8203;dani-garcia](https://togithub.com/dani-garcia)

#### New Contributors

- [@&#8203;manofthepeace](https://togithub.com/manofthepeace) made their
first contribution in
[dani-garcia/vaultwarden#2968
- [@&#8203;pjsier](https://togithub.com/pjsier) made their first
contribution in
[dani-garcia/vaultwarden#3061
- [@&#8203;am97](https://togithub.com/am97) made their first
contribution in
[dani-garcia/vaultwarden#3093
- [@&#8203;redwerkz](https://togithub.com/redwerkz) made their first
contribution in
[dani-garcia/vaultwarden#3126
- [@&#8203;sirux88](https://togithub.com/sirux88) made their first
contribution in
[dani-garcia/vaultwarden#3139
- [@&#8203;dlehammer](https://togithub.com/dlehammer) made their first
contribution in
[dani-garcia/vaultwarden#3145
- [@&#8203;BlockListed](https://togithub.com/BlockListed) made their
first contribution in
[dani-garcia/vaultwarden#3228
- [@&#8203;kpfleming](https://togithub.com/kpfleming) made their first
contribution in
[dani-garcia/vaultwarden#3231
- [@&#8203;farodin91](https://togithub.com/farodin91) made their first
contribution in
[dani-garcia/vaultwarden#3108
- [@&#8203;soruh](https://togithub.com/soruh) made their first
contribution in
[dani-garcia/vaultwarden#3147
- [@&#8203;R3DRUN3](https://togithub.com/R3DRUN3) made their first
contribution in
[dani-garcia/vaultwarden#3245
- [@&#8203;Misterbabou](https://togithub.com/Misterbabou) made their
first contribution in
[dani-garcia/vaultwarden#3254
- [@&#8203;mittler-works](https://togithub.com/mittler-works) made their
first contribution in
[dani-garcia/vaultwarden#3262
- [@&#8203;JCBird1012](https://togithub.com/JCBird1012) made their first
contribution in
[dani-garcia/vaultwarden#3282
- [@&#8203;dpinse](https://togithub.com/dpinse) made their first
contribution in
[dani-garcia/vaultwarden#3290

**Full Changelog**:
dani-garcia/vaultwarden@1.27.0...1.28.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on saturday" (UTC), Automerge - At
any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://app.renovatebot.com/dashboard#github/RickCoxDev/home-cluster).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS43OS4xIiwidXBkYXRlZEluVmVyIjoiMzUuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@tessus tessus deleted the feature/kdf-options branch June 4, 2023 22:35
@tessus tessus restored the feature/kdf-options branch June 4, 2023 22:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants