Non-agile APIs¶
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.
Chacha20-Poly1305¶
Multiplexes between: portable C, AVX, AVX2
Found in EverCrypt_Chacha20Poly1305.h.
See AEAD: Chacha20-Poly1305 for the API documentation, which is identical.
Curve25519¶
Multiplexes between: portable C, ADX + BMI2
Found in EverCrypt_Curve25519.h.
See ECDH: X25519 for the API documentation, which is identical.
Poly1305¶
Multiplexes between: portable C, AVX, AVX2, X64 assembly
Found in EverCrypt_Poly1305.h.
void EverCrypt_Poly1305_poly1305(uint8_t *dst, uint8_t *src, uint32_t len, uint8_t *key);
dstmust be at least 16 bytes- if
len, the length ofsrc, gets close to 4GB, you need to read the precondition inEverCrypt.Poly1305.fsti keymust be at least 32 bytes
Ed25519¶
Found in EverCrypt_Ed25519.h.
Note
This is just a placeholder and there is no multiplexing for this API yet.