This refactors out a bunch of code to make better use of the
SYSINIT mechanism...
Completes the PKI side of things for doing mutual authentication...
Uses a python script to generate the USB descriptors, and basic
interface code for the STM USB HAL Layer.. This gets ride of a lot
of the glue code that was previously written, allowing the glue code
to be easily changed/update...
break out the memory debug function into it's own file...
Minor fixes to the rs485 framing code... Finally found the bug where
aborting a receive would corrupt the RX state for some reason...
Add back RNG seeding, and make it generic...
both take a shared key as an argument...
the respondent arg (-r) takes an argument specifying the function to
call w/ the messages... The form is: module_path[:name.of.func]. If
the name is not specified, func will be used.
This also adds a check to make sure that the allocated structure matches
the C code so that things won't break.
This breaks out the session state into it's own object... allowing a
common function to handle the state machine...
This also adds a new powerful testing tool. It's a Synchronization
primitive that will ensure blocks of code run in the expected order,
and only run when the previous block has fully run... This helps
ensure ordering between many tasks, to cause race conditions that
would otherwise be hard to cause..
Turns out there's a bit of code that isn't compatible w/ the Python version,
eliminate it... This was to support encoding lengths (via negative length
parameters)...
Also, the default C version (which we want to use) is Keccak(800) and not
Keccak(1600), switch Python to 800, as it'll be faster on the 32-bit uC, and
still has plenty of security margin...