A comprehensive OCaml library providing cryptographic primitives like ciphers, hashes, and public-key cryptography for security-sensitive applications.
Cryptokit is an OCaml library that provides a comprehensive set of cryptographic primitives, including ciphers, hash functions, public-key cryptography, and random number generation. It solves the need for implementing secure cryptographic protocols in OCaml applications, offering both modern and legacy algorithms in a modular framework.
OCaml developers building security-sensitive applications, such as secure communication tools, authentication systems, or data protection utilities, who need reliable cryptographic primitives.
Developers choose Cryptokit for its extensive, well-documented primitives, composable design that allows custom cryptographic pipelines, and integration with OCaml's ecosystem via Dune and Zarith.
A library of cryptographic primitives (ciphers, hashes, etc) for OCaml
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Includes a wide range of modern and legacy primitives like AES-GCM, Chacha20-Poly1305, SHA-3, and RSA, as listed in the overview and features section.
Promotes a 'Lego'-like style for composing cryptographic pipelines from primitives, enabling custom workflows over character streams.
Uses AES-NI and PCLMUL extensions on supported x86 processors for AES and GCM, as noted in the design notes, improving performance.
Offers detailed documentation comments in cryptokit.mli and buildable HTML docs with Dune, aiding in implementation and debugging.
The README explicitly states that RSA and ECDSA implementations are not protected against timing attacks, posing security risks for sensitive applications.
Only supports elliptic curves in Weierstrass form, missing other common formats, which restricts flexibility for modern cryptographic protocols.
Requires OCaml 4.08+, Dune, Zarith, and Zlib, with configuration steps that can be challenging for developers new to the OCaml ecosystem.