Not all algorithms have a corresponding agile API. For instance, there is no
EverCrypt_ECDH.h yet. However, clients may still want to call, say
Curve25519 and enjoy the benefits of multiplexing.
To that end, EverCrypt features a variety of non-agile, multiplexing APIs.
Multiplexes between: portable C, AVX, AVX2
See AEAD: Chacha20-Poly1305 for the API documentation, which is identical.
Multiplexes between: portable C, ADX + BMI2
See ECDH: X25519 for the API documentation, which is identical.
Multiplexes between: portable C, AVX, AVX2, X64 assembly
void EverCrypt_Poly1305_poly1305(uint8_t *dst, uint8_t *src, uint32_t len, uint8_t *key);
dstmust be at least 16 bytes
len, the length of
src, gets close to 4GB, you need to read the precondition in
keymust be at least 32 bytes
This is just a placeholder and there is no multiplexing for this API yet.