Expand description
§sqlcipher-src
The SQLCipher amalgamation as C source for -sys crates, on native targets and on wasm32-unknown-unknown through sqlite-wasm-rs, where it adds the libtomcrypt crypto provider.
Native builds compile AMALGAMATION_FILE with their own crypto provider and flags:
let dir = sqlcipher_src::source_dir();
assert!(dir.join(sqlcipher_src::AMALGAMATION_FILE).is_file());
assert!(dir.join(sqlcipher_src::HEADER_FILE).is_file());sqlite-wasm-rs 0.6 compiles WASM_SOURCE_FILE instead of plain SQLite when SQLITE_WASM_RS_SOURCE_DIR points at the same directory, set in the environment or in [env] of .cargo/config.toml:
export SQLITE_WASM_RS_SOURCE_DIR="$(cargo metadata --format-version 1 \
| jq -r '.packages[] | select(.name == "sqlcipher-src") | .manifest_path' \
| xargs dirname)/sqlcipher"
cargo build --target wasm32-unknown-unknownShared-memory builds (+atomics) also need -mbulk-memory in CFLAGS_wasm32_unknown_unknown.
The sources are generated from signed SQLCipher and libtomcrypt releases by upgrade.sh. CI runs rusqlite’s SQLCipher tests on them natively, and checks that files written natively and in Node, Chrome and Firefox open on both sides.
The wrapper is MIT, SQLCipher is BSD-3-Clause, SQLite is public domain, and libtomcrypt is public domain or WTFPL.
Constants§
- AMALGAMATION_
FILE - SQLCipher amalgamation inside
source_dir, for native builds that pick their own crypto provider. - HEADER_
FILE - Public SQLCipher header inside
source_dir. - LIBTOMCRYPT_
VERSION - libtomcrypt release providing the ciphers, hashes and random generator.
- SQLCIPHER_
VERSION - SQLCipher release the vendored amalgamation is generated from.
- SQLITE_
VERSION - SQLite release that SQLCipher release is based on.
- WASM_
BINDINGS_ FILE - Rust bindings for
HEADER_FILEinsidesource_dir, fromsqlite-wasm-rs’s bindgen setup withSQLITE_HAS_CODEC, so they declaresqlite3_keyandsqlite3_rekey. - WASM_
SOURCE_ FILE - Single translation unit inside
source_dirthat compiles SQLCipher with libtomcrypt for Wasm.
Functions§
- source_
dir - Directory holding the sources, at the path this crate was compiled from.