ocrypto supports the following cryptographic algorithms, conforming to the relevant RFCs and NIST specifications:
Message digests (hashes)
Message authentication codes (MAC)
Unauthenticated ciphers
Authenticated encryption with associated data (AEAD)
Key derivation
Asymmetric signature
Asymmetric encryption
Key agreement
Password-authenticated key exchange (PAKE)
The following cryptographic key sizes are supported:
For all algorithms, ocrypto provides functions that execute in a single call and only use the call stack for storing intermediate values ("single-part functions"). For some algorithms, e.g., Ed25519, additional functions are provided that execute in a single call and use minimal stack space, plus caller-provided context objects for storing intermediate values ("stack-optimized functions"). For some algorithms, e.g., all SHA variants, additional functions are provided that execute in multiple calls for the incremental processing of data streams ("incremental functions"). They use minimal stack space, plus caller-provided context objects for storing intermediate values.