Egor Duda
4e47968233
Separate options type for FileStorage, remove hardcoded constants
2022-06-05 22:40:59 +03:00
Egor Duda
c0299c3225
No need for specific feature, use std instead
2022-06-05 22:40:32 +03:00
Egor Duda
f2cb2f72e7
Use StorageError::CustomError for implementations-specific (I/O) errors
2022-06-05 22:39:13 +03:00
Egor Duda
1cf7373bfe
With new Storage API there's no need to double-buffer file data
...
read_slice(...) can return Cow::Owned buffer to the caller
2022-06-05 15:16:49 +03:00
Egor Duda
db26f6125b
Implement file-backed persistent storage
...
This allows running ctap2 authenticator application on non-embedded host OS
to implement virtual FIDO2 authenticator for QEMU
2022-06-05 15:08:52 +03:00
Julien Cretin
0f368f0b48
Add justification for Cow usage
2022-06-03 17:03:06 +02:00
Julien Cretin
f57126634b
Allow read_slice to return a Vec
2022-06-03 11:16:43 +02:00
Julien Cretin
dc00b94ee8
Remove steal_storage
2022-03-07 19:43:58 +01:00
Julien Cretin
8a2e99960f
Reduce maximum fuzz input size
...
The fuzzer timed out (60s) on a 17k input. On my machine it runs for 12s and 7s
after truncation to 10k.
2022-02-28 12:39:08 +01:00
Julien Cretin
d085d54878
Update test
2021-10-04 12:24:15 +02:00
Julien Cretin
af3bee64a5
Introduce window size to fix hidden entries
2021-10-04 12:24:15 +02:00
Julien Cretin
9dc5286633
Revert "Continue compacting until content fits window during compaction"
...
This reverts commit 67fa8bee0b .
2021-10-04 12:24:15 +02:00
Julien Cretin
daa16d948f
Add test
2021-10-04 12:24:15 +02:00
Julien Cretin
67fa8bee0b
Continue compacting until content fits window during compaction
...
Also increase the virtual window size.
2021-09-27 13:59:29 +02:00
Julien Cretin
a3965eac2d
Also debug the model besides the storage
2021-09-27 13:59:29 +02:00
Julien Cretin
fbca34b1d1
Add test
2021-09-27 13:59:29 +02:00
Julien Cretin
cbbb4b3e08
Reduce the store fuzzer input length
2021-08-30 11:41:14 +02:00
Julien Cretin
ed28941a6d
Decrease maximum input size for store fuzzing
...
We currently have around 12% inputs timing out (was around 27% before the 100k
limit).
2021-08-13 22:15:50 +02:00
Julien Cretin
3d4b652e12
Increase the max data len from 10k to 100k
2021-08-05 15:08:53 +02:00
Julien Cretin
445c1c6edd
Explicitly limit the fuzzer input length
...
This is to avoid timeouts in oss-fuzz.
2021-08-05 15:08:53 +02:00
Julien Cretin
b3b652aa53
Stop using try_trait
...
It is too much instable.
2021-06-09 13:51:04 +02:00
Julien Cretin
e32eb5358f
Merge branch 'develop' into usize_32_or_std
2021-04-26 13:12:55 +02:00
Julien Cretin
6cb6538db6
Fix typography
2021-03-15 12:10:13 +01:00
Julien Cretin
3c7c5a4810
Update the documentation to use linking by name
...
See https://doc.rust-lang.org/stable/rustdoc/linking-to-items-by-name.html
2021-03-13 13:16:57 +01:00
kaczmarczyck
18f391d48f
Merge branch 'develop' into large-blobs
2021-01-25 19:27:45 +01:00
Fabian Kaczmarczyck
4f3c773b15
formats code, clippy
2021-01-25 18:17:14 +01:00
Julien Cretin
ae0156d287
Factor test tools between store and fragment
...
Those need the driver to deal with the fact that the store is stateful. Those
tests can't be moved to the test suite because they use private functions.
2021-01-25 17:30:50 +01:00
Julien Cretin
41a3f512c8
Remove useless check
2021-01-25 11:31:42 +01:00
Julien Cretin
f0c51950cb
Add fragmentation support
2021-01-23 21:27:59 +01:00
Julien Cretin
8634e2ec24
Make StoreUpdate generic over the byte slice ownership
...
This permits to call it without having to create a Vec<u8> when possible.
2021-01-20 15:56:06 +01:00
Julien Cretin
a712d1476b
Return error instead of debug assert
...
With dirty storage we hit the assert. Returning an error permits to continue to
catch if the invariant is broken for normal operation while being able to
continue fuzzing with dirty storage.
2021-01-18 16:41:03 +01:00
Julien Cretin
55038cc084
Add bound-test in addition to equality-test
2021-01-18 16:13:01 +01:00
Julien Cretin
1d576fdd31
Add unit-test for Store::entries
2020-12-14 21:06:12 +01:00
Julien Cretin
edcc206e9d
Make store operations constant wrt flash operations
2020-12-10 18:41:32 +01:00
Julien Cretin
8800c3e906
Merge branch 'master' into no_ram_storage
2020-12-10 15:48:45 +01:00
Julien Cretin
19ebacec15
Do not use delay_map anymore
...
This permits to avoid copies. Before we used to do one copy per storage
operation. Now we do one copy per store operation.
2020-12-10 13:36:33 +01:00
Julien Cretin
4253854cf1
Remove ram_storage feature
...
We don't need to build a production key without persistent storage. Tests and
fuzzing continue to use the std feature to use the RAM implementation (that does
sanity checks).
2020-12-10 13:06:05 +01:00
Julien Cretin
a0e3048f82
Add debug helper for fuzzing
2020-11-30 11:30:49 +01:00
Julien Cretin
f548a35f01
Do not crash with dirty init
2020-11-30 10:29:18 +01:00
Julien Cretin
ed5a9e5b24
Apply review comments
2020-11-28 19:01:16 +01:00
Julien Cretin
9f04408433
Merge branch 'master' into v2_fuzz
2020-11-28 18:45:41 +01:00
Julien Cretin
29ee45de6c
Do not crash in the driver for store errors
...
We prefer to return those errors to the fuzzer which can then decide whether
they are expected or not (e.g. when starting from a dirty storage, the store is
expected to have errors).
2020-11-24 11:31:54 +01:00
Julien Cretin
d23acb4f64
Make sure production store only builds with usize=u32
2020-11-20 15:55:56 +01:00
Julien Cretin
e842da0de7
Add store fuzzing
2020-11-19 11:27:50 +01:00
Julien Cretin
bbb73c77a8
Use width_lim instead of bucket_lim
2020-11-17 10:16:39 +01:00
Julien Cretin
fcc9484510
Add stats for fuzzing
2020-11-16 22:44:10 +01:00
Julien Cretin
de77d4fc0c
Add histogram for fuzzing
2020-11-13 10:34:23 +01:00
Julien Cretin
1c2e450660
Improve documentation
2020-11-12 16:24:35 +01:00
Julien Cretin
db5b21a4ff
Add more documentation
2020-11-12 10:54:23 +01:00
Julien Cretin
c6f9270be1
Update documentation
2020-11-11 17:52:33 +01:00