This is a packet processing module found on the espressobin. This
commit adds an opencrypto driver for the crypto and hash engines in this
module; it can be programmed to do fairly arbitrary packet processing
and so the hardware interface is quite general compared to most other
opencrypto drivers that I've looked at.
This driver is still a WIP but is functional. It implements a number of
AES modes: CBC, CTR, and XTS, as well as AES-GCM and -CCM. The block
AES modes can be combined with HMAC, and the driver can be used to
compute plain SHA hashes as well. The EIP-197 is similar but not
supported at the moment for lack of hardware to test on. It implements
some other algorithms not supported here, particularly, chacha20 and
poly1305. The EIP-97 implements DES, 3DES and RC4 as well, but I didn't
really see a reason to include support for those.
There is still some more work to do on the driver, but all the
functionality I wanted is implemented. Much of the driver probably
can't be usefully reviewed, but I'd appreciate comments on the
opencrypto integration.