v4.7.0
Warning This is a major update and includes some breaking build build changes.
- Updates baseline to upstream SQLite 3.49.1, including complete upstream SQLite refactoring of build system to use autosetup
- Significantly refactors and optimizes library initialization and cleanup
- Allocates majority of requisite memory at startup to improve memory locking on constrained platforms (i.e. Android and Windows) and reduce fragmentation
- Expands
sqlcipher_providerinterface to includeinitandshutdownfunctions - Adds support for
.recovershell command on corrupt databases with a full plaintext first page - Performs fast random overwrite of freed memory segments for improved security
- Adds basic obfuscation of context key material for improved security
- Generates keyspecs dynamically on demand instead of storing them
- Expands keyspec/raw key format to accept key, HMAC key, and salt
- Improves error handling in
sqlcipher_export()andPRAGMA cipher_migrate - Allows setting custom compile-time default cryptographic provider via the
SQLCIPHER_CRYPTO_CUSTOMmacro - Removes support for end-of-life OpenSSL versions older than 3.0
BREAKING CHANGE:SELECTstatements (now also including schema independent queries likeSELECT 1) cannot be executed on encrypt ed databases prior to setting the database key (behavior inherited from upstream SQLite) - BREAKING CHANGE: Renames
configureflag--enable-tempstore=yesto--with-tempstore=yesfor alignment with SQLite (change required for upstream SQLite autosetup) - BREAKING CHANGE: Renames default executable and library build outputs from
sqlcipherandlibsqlciphertosqlite3andlibsqlite3(for alignment with SQLite) - BREAKING CHANGE: Removes
configureflag--with-crypto-lib(replace with appropriate-DSQLCIPHER_CRYPTO_*CFLAG) - BREAKING CHANGE: Requires defining
SQLITE_EXTRA_INIT=sqlcipher_extra_initandSQLITE_EXTRA_SHUTDOWN=sqlcipher_extra_shutdownat compile time for optimized library initialization and cleanup - BREAKING CHANGE: Enforces thread safe mode (i.e.
SQLITE_THREADSAFEof 1 or 2) and temporary storage (i.e.SQLITE_TEMP_STOREof 2 or 3) settings at compile time