Add explicit handling for requests with an empty payload.
- For HMAC requests, construct a special input buffer to request an empty hash result.
- For plain cipher requests and requests that chain an AES cipher with an HMAC, fail with EINVAL if there is no cipher payload. If needed in the future, chained requests that only contain AAD could be serviced as HMAC-only requests.
- For GCM requests, the hardware does not support generating the tag for an AAD-only request. Instead, complete these requests synchronously in software on the assumption that such requests are rare.
Sponsored by: Chelsio Communications