Investigate using the EVP interface for non-oneshot hash calls.

People have recently asked about VIA PadLock and cryptdev (#15503 (moved)/some random tor-relays@ post). Both of these things in theory can do SHA1/SHA256 in hardware (though in the case of cryptdev, performance is likely to be worse).

Since it can be a decent gain (at least PadLock will be), we should consider switching over the crypto_digest_t routines to use the EVP interface (People that try to use cryptdev for hashes and suffer a performance decrease did not read the documentation, and thus get what they deserve).

Minor (very low priority) because:

  • cryptdev's hash performance will probably suck.
  • OpenSSL does not support PadLock SHA acceleration.
  • The only hardware SHA implementation that's actually relevant to a significant sized userbase (ARMv8) is supported via the raw SHA* routines.

So this is mostly for future-proofing and code cleanup purposes.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information