Commit Graph

187 Commits

Author SHA1 Message Date
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
2cd760bad7 Merge branch 'develop' into v2_optim 2021-01-18 16:10:08 +01:00
Fabian Kaczmarczyck
2776bd9b8e new CoseKey data format 2021-01-12 15:11:20 +01:00
Fabian Kaczmarczyck
6f9f833c0b moves COSE related conversion from crypto to data_formats 2021-01-08 15:42:35 +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
Julien Cretin
163e92fa6b Create fuzzing and add entropy helpers 2020-11-11 12:30:24 +01:00
Julien Cretin
d5a43c346f Rename into_ into extract_ 2020-11-11 10:28:32 +01:00
Julien Cretin
0e4be8ca4a Update documentation 2020-11-10 19:44:28 +01:00
Julien Cretin
45332158df Add driver for new store 2020-11-03 21:27:32 +01:00
Julien Cretin
a024e642d3 Return zero instead of negative immediate capacity 2020-11-03 13:30:39 +01:00
Julien Cretin
410314b780 Move transaction validity check to Format 2020-11-03 12:54:30 +01:00
Julien Cretin
d734da3a0e Move transaction capacity formula to Format 2020-11-03 12:39:38 +01:00
Julien Cretin
b97758dd99 Do not use import ::* 2020-11-03 11:58:20 +01:00
Julien Cretin
233c15b20c Add new store (without tests yet) 2020-11-02 11:17:09 +01:00
Julien Cretin
9778ea7fd2 Introduce distinct integer types
This PR does the following things:
- Give incompatible representations for integers with different semantics:
  - `usize` is used for natural numbers for the public API.
  - `Nat` is used internally for natural numbers (essentially a stable `usize`).
  - `Word` is used for sequences of bits representing words in flash.
  - `Position` is used for word positions in the virtual storage.
- Only use fixed size integers to preserve overflow behavior between targets.
- Use little-endian representation instead of native representation for `Word`.

Alternatives:
- Run tests and fuzzing on 32-bits architecture (or some compatibility mode).
  This approach would have better readability than the current solution (less
  conversions at public API). However it would require additional setup and
  might not be viable long-term by restricting machines on which fuzzing is
  possible.
- Accept the behavior difference for tests and fuzzing. This approach would also
  have better readability. However checking for arithmetic overflow (and other
  `usize` related concerns like memory size) is more important.
2020-10-29 18:48:15 +01:00
Julien Cretin
5ce91947b6 Fix StoreRatio fields visibility and improve documentation 2020-10-29 12:23:34 +01:00
Julien Cretin
e7303ed7c6 Add model for new store 2020-10-27 14:23:39 +01:00
Julien Cretin
71815cad09 Update ERASED_WORD definition to use WORD 2020-10-27 13:45:18 +01:00
Julien Cretin
edd1bcf5d2 Do not inline constants in documentation 2020-10-27 11:25:08 +01:00
Julien Cretin
552bab6ba9 Remove public visibility for internal function 2020-10-26 17:51:40 +01:00
Julien Cretin
cb3369213f Fix merge missing conflict 2020-10-23 17:27:20 +02:00
Julien Cretin
3755be1625 Merge branch 'master' into v2_lib 2020-10-23 17:20:19 +02:00
Julien Cretin
99e2d07156 Fix documentation 2020-10-23 16:38:48 +02:00
Julien Cretin
f52ea953b8 Improve documentation 2020-10-23 15:38:21 +02:00
Julien Cretin
34ad35fdc1 Fix documentation 2020-10-23 11:52:21 +02:00
Julien Cretin
f5e6f8728f Do not use nightly features 2020-10-23 08:41:44 +02:00
Julien Cretin
d8f405baab Add missing alloc crate 2020-10-23 08:37:09 +02:00
Julien Cretin
10ac76e58a Add buffer storage for new store 2020-10-23 08:22:30 +02:00
Julien Cretin
f8fe1a9493 Add small proofs 2020-10-14 17:36:52 +02:00
Julien Cretin
c098f2695b Clarify current supported values 2020-10-14 12:20:48 +02:00
Julien Cretin
223908febd Remove confusing clarification 2020-10-14 11:41:46 +02:00
Julien Cretin
f512645837 Improve documentation 2020-10-13 12:46:25 +02:00