This crate held the `xous_main` proc_macro that was previously used when
we were in `no_std` land. Since we now have a libstd, we can remove this
crate and improve build times while having a standard `main()` function.
Signed-off-by: Sean Cross <sean@xobs.io>
This macro will be removed, since it is no longer necessary. Remove this
macro across the project and replace it with a standard `main()`
function.
Signed-off-by: Sean Cross <sean@xobs.io>
This removes nearly all of the dependencies from `xous-rs`, making it
mostly self-contained.
There is one remaining dependency tree which is `xous-macros`. This is a
legacy feature from before a time we had main(). Attempts will be made
to remove it as well.
Signed-off-by: Sean Cross <sean@xobs.io>
The `xous-rs` library is used in many places, and should have as few
dependencies as possible. Remove these as dependencies.
Signed-off-by: Sean Cross <sean@xobs.io>
the implementation uses an explicitly expanded key schedule for
every AES key, with separate enc/dec keys. This does save setting
up the key scheduler every time, but, it also breaks a lot of API
assumptions. Since we have the performance to afford the key
setup/teardown for every call, this commit basically turns
the key refs into actual slices of the key itself. This creates
a weird bit of code where you have an enc key being equated to
a dec key directly; those lines are left in to make it a bit easier
to diff against the original source.
But the high bit is that the original implementation, by expanding
the key scheduler, had to have a different enc and dec key schedule
(even tho they come from the same key) but this compacted form
makes them identical.
This commit also starts working in at converting the PersistentStore
to use the PDDB.
I think I basically understand the scope of the problem, and it's
mostly just some grunt recoding of the PersistentStore calls
to refer to PDDB entries by k/v names. The main thing I've done
so far is to recode the macro that creates the partitions in
OpenSK to just create string names for every item that needs
to be stored. These string names will be used to index into a dictionary
that is dedicated to the FIDO2 function.
Woo? we have CBC encryption using Rust's most favored AES library
now.
I have a feeling I'm going to be re-doing all of this once they
decide to finally take GenericArray out back and shoot it....
Hosted mode spawns processes very differently, and this difference was
not reflected after changes were made to native mode.
Signed-off-by: Sean Cross <sean@xobs.io>
We're trying to bring the AES version up so we can do CBC
(required for FIDO2) but unfortunately the aes-gcm-siv crate
is locked to an outdated version of AES, and this is blocking
on a type that is missing in the `block-ciphers` crate.
For now, we're using a patched version of aes-gcm-siv from
rozbb's repo, which allows us to move forward, but this needs
to be reverted once a new version of the official crate is patched.
Also note here that we have:
- Run all the AES test vectors and confirmed the pass for both
hw and sw
- Updated the benchmark numbers for the new AES implementation
This is in a bid to gain CBC crate compatibility which requires
at least an AES 0.8 API level.
It breaks a lot of stuff, which is fixed in the next commit.