Add TLS to a Rust app with no C code in the cryptography layer, keeping the whole codebase auditable.
Use hashing, encryption, or signatures from TypeScript or JavaScript via WebAssembly in the browser or Node.js.
Implement secure password authentication (OPAQUE) so plaintext passwords never reach your server.
Build a post-quantum-ready Rust service using ML-KEM-768 key encapsulation.
Not yet on crates.io, must add via git dependency. Pre-1.0 (v0.1.7), README warns against production use until an independent security audit is complete.
Thornwood is a Rust cryptography library built around one specific goal: a completely C-free build. Most production cryptography libraries (OpenSSL, ring, aws-lc-rs) include C code, which makes them harder to audit and verify. Thornwood implements all its cryptographic operations in Rust, with only a narrow exception for one crate that wraps verified low-level assembly routines. The rest of the code is pure Rust with no unsafe blocks. The library covers a wide range of cryptographic operations: hashing (SHA-2, SHA-3, BLAKE2b), encryption (AES-GCM), key exchange (X25519, ECDH), digital signatures (Ed25519, ECDSA, RSA), password hashing (Argon2id), and post-quantum key encapsulation (ML-KEM-768). It also implements OPAQUE, a protocol for password authentication that avoids sending the password to the server. All of these are available together through a top-level umbrella crate. The primary integration target is rustls, a TLS library written in Rust. Thornwood ships a CryptoProvider plugin for rustls that lets you run TLS 1.2 and TLS 1.3 connections without any C code in the cryptography layer. This is the main reason someone would reach for Thornwood today: they want TLS in a Rust application and want the entire compiled dependency graph to be C-free and auditable down to the primitive level. Thornwood also compiles to WebAssembly, so TypeScript or JavaScript code running in Node.js or browsers can use its hashing, encryption, key exchange, and signature operations through generated wasm packages. The project is pre-1.0 at version 0.1.7 and has not yet been published to crates.io. The README explicitly advises treating it as pre-production until an independent security audit is complete. It is maintained by Pine and licensed under Apache 2.0.
← pine-org on gitmyhub — every repo by this author, as a profile.
Verify against the repo before relying on details.