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);
dst
must be at least 16 bytes- if
len
, the length ofsrc
, gets close to 4GB, you need to read the precondition inEverCrypt.Poly1305.fsti
key
must 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.