A modern cryptography library for Clojure providing direct bindings to libsodium/NaCl.
caesium is a cryptography library for Clojure that provides direct bindings to libsodium, a modern and secure cryptographic library. It enables Clojure developers to perform encryption, decryption, password hashing, and other cryptographic operations with the same security guarantees as libsodium. The library focuses on exposing libsodium's APIs faithfully while allowing fine-grained control over memory and security.
Clojure developers who need secure cryptographic operations in their applications, particularly those who require low-level control and compatibility with libsodium's APIs.
Developers choose caesium for its direct, zero-copy bindings to libsodium, secure memory handling, and high-quality implementation by a cryptographer. It avoids abstraction layers that could introduce vulnerabilities while providing predictable, well-tested APIs.
Modern cryptography (libsodium/NaCl) for Clojure
Uses jnr-ffi for zero-copy behavior between JVM and C, ensuring efficient and accurate mapping of libsodium's functions, as highlighted in the README for performance and compatibility.
APIs operate on byte arrays or ByteBuffers, allowing developers to manually zero sensitive data, which is crucial for preventing memory leaks in cryptographic applications, as emphasized in the philosophy section.
Supports libsodium's full range including secretbox, password hashing, and public-key cryptography, making it versatile for various security needs, with examples provided in the README.
Written by a cryptographer with extensive testing, CI, and high code coverage, ensuring reliability and security, as noted in the differences section.
Requires libsodium 1.0.18+ to be installed separately, adding setup complexity and potential cross-platform issues, which is explicitly noted in the README as a prerequisite.
APIs are low-level and closely mirror libsodium, requiring developers to have a good understanding of cryptography and memory management, making it less accessible for those seeking simpler abstractions.
The README directs users to libsodium's documentation for details, meaning there's less Clojure-specific guidance and examples, which can increase the learning curve.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.