sqlcipher-src
The SQLCipher amalgamation and the libtomcrypt crypto provider as C source for -sys crates.
Native builds compile SOURCE_FILE with their own crypto provider and flags:
let dir = source_dir;
assert!;
assert!;
Builds without a system crypto library compile SOURCE_FILE with -DSQLITE_HAS_CODEC -DSQLCIPHER_CRYPTO_LIBTOMCRYPT and each file in LIBTOMCRYPT_SOURCES as its own translation unit with -DLTC_SOURCE, all with LIBTOMCRYPT_INCLUDE_DIR on the include path and one shared set of LTC_* switches:
let dir = source_dir;
assert!;
for source in LIBTOMCRYPT_SOURCES
The sqlcipher feature of sqlite-wasm-rs builds this way for wasm32-unknown-unknown.
The sources are generated from signed SQLCipher and libtomcrypt releases by upgrade.sh and ship as released, except that SOURCE_FILE skips SQLCipher's .fini_array finalizer on __wasm__, which cannot hold that section, until sqlcipher/sqlcipher#622 is released. CI runs SQLCipher's and rusqlite's SQLCipher tests on them natively, and checks through sqlite-wasm-rs that files written natively and in Node, Chrome and Firefox open on both sides.
The crate is MIT, SQLCipher is BSD-3-Clause, SQLite is public domain, and libtomcrypt is public domain or WTFPL.