Skip to content

v4.7.0

Choose a tag to compare

@sjlombardo sjlombardo released this 25 Mar 12:47
· 77 commits to master since this release

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_provider interface to include init and shutdown functions
  • Adds support for .recover shell 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() and PRAGMA cipher_migrate
  • Allows setting custom compile-time default cryptographic provider via the SQLCIPHER_CRYPTO_CUSTOM macro
  • Removes support for end-of-life OpenSSL versions older than 3.0
    BREAKING CHANGE: SELECT statements (now also including schema independent queries like SELECT 1) cannot be executed on encrypt ed databases prior to setting the database key (behavior inherited from upstream SQLite)
  • BREAKING CHANGE: Renames configure flag --enable-tempstore=yes to --with-tempstore=yes for alignment with SQLite (change required for upstream SQLite autosetup)
  • BREAKING CHANGE: Renames default executable and library build outputs from sqlcipher and libsqlcipher to sqlite3 and libsqlite3 (for alignment with SQLite)
  • BREAKING CHANGE: Removes configure flag --with-crypto-lib (replace with appropriate -DSQLCIPHER_CRYPTO_* CFLAG)
  • BREAKING CHANGE: Requires defining SQLITE_EXTRA_INIT=sqlcipher_extra_init and SQLITE_EXTRA_SHUTDOWN=sqlcipher_extra_shutdown at compile time for optimized library initialization and cleanup
  • BREAKING CHANGE: Enforces thread safe mode (i.e. SQLITE_THREADSAFE of 1 or 2) and temporary storage (i.e. SQLITE_TEMP_STORE of 2 or 3) settings at compile time