1
0
Fork 1
Spiegel von https://github.com/dani-garcia/vaultwarden.git synchronisiert 2024-06-16 04:21:06 +02:00
vaultwarden/src
Samuel Tardieu d0baa23f9a Use constant size generic parameter for random bytes generation
All uses of `get_random()` were in the form of:

  `&get_random(vec![0u8; SIZE])`

with `SIZE` being a constant.

Building a `Vec` is unnecessary for two reasons. First, it uses a
very short-lived dynamic memory allocation. Second, a `Vec` is a
resizable object, which is useless in those context when random
data have a fixed size and will only be read.

`get_random_bytes()` takes a constant as a generic parameter and
returns an array with the requested number of random bytes.

Stack safety analysis: the random bytes will be allocated on the
caller stack for a very short time (until the encoding function has
been called on the data). In some cases, the random bytes take
less room than the `Vec` did (a `Vec` is 24 bytes on a 64 bit
computer). The maximum used size is 180 bytes, which makes it
for 0.008% of the default stack size for a Rust thread (2MiB),
so this is a non-issue.

Also, most of the uses of those random bytes are to encode them
using an `Encoding`. The function `crypto::encode_random_bytes()`
generates random bytes and encode them with the provided
`Encoding`, leading to code deduplication.

`generate_id()` has also been converted to use a constant generic
parameter as well since the length of the requested String is always
a constant.
2022-11-11 11:59:27 +01:00
..
api Use constant size generic parameter for random bytes generation 2022-11-11 11:59:27 +01:00
db Use constant size generic parameter for random bytes generation 2022-11-11 11:59:27 +01:00
static fix: removed a double space 2022-11-09 22:40:01 +01:00
auth.rs Update Rust version, deps and workflow 2022-11-09 22:40:00 +01:00
config.rs Update Rust version, deps and workflow 2022-11-09 22:40:00 +01:00
crypto.rs Use constant size generic parameter for random bytes generation 2022-11-11 11:59:27 +01:00
error.rs Update to diesel2 2022-10-23 00:49:23 +02:00
mail.rs use static_files() for email attachments 2022-10-19 20:39:13 +02:00
main.rs Update Rust version, deps and workflow 2022-11-09 22:40:00 +01:00
ratelimit.rs Basic ratelimit for user login (including 2FA) and admin login 2021-12-22 21:48:49 +01:00
util.rs Update Rust version, deps and workflow 2022-11-09 22:40:00 +01:00