A small OCaml cryptographic library emphasizing applicative style and ease of use with basic ciphers, hashes, and public-key primitives.
nocrypto is an OCaml cryptographic library that provides essential cryptographic primitives like ciphers, hashes, and public-key algorithms. It solves the need for a simple, functional, and secure crypto library within the OCaml ecosystem, emphasizing ease of use and protection against timing attacks.
OCaml developers who need to implement cryptographic operations such as encryption, hashing, or digital signatures in their applications, particularly those valuing functional programming patterns.
Developers choose nocrypto for its clean applicative style, integration with OCaml's functional paradigm, and built-in security features like timing attack protection, making it a practical and secure choice for crypto in OCaml projects.
OCaml cryptographic library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Designed with an applicative style that aligns with OCaml's functional paradigm, making cryptographic operations intuitive for OCaml developers.
Implements RSA blinding and delegates AES operations to AES-NI to mitigate timing attacks, as explicitly noted in the README.
Optional build-time support for SSE2 and AES-NI acceleration improves performance on compatible hardware, with configuration flags detailed in the build instructions.
Includes Fortuna, a cryptographically secure random number generator, for reliable entropy in cryptographic operations.
Lack of run-time autodetection for CPU acceleration can cause illegal instruction errors on unsupported machines, requiring manual build adjustments as warned in the FAQ.
Requires explicit initialization calls like Nocrypto_entropy_unix.initialize(), which can be overlooked and lead to runtime failures, adding complexity for developers.
Limited to interface documentation without extensive examples or guides, potentially hindering adoption and troubleshooting beyond basic usage.