Skip to content

Releases: sqlcipher/sqlcipher

v4.12.0

08 Dec 15:28

Choose a tag to compare

  • Updates baseline to SQLite 3.51.1
  • Adds PRAGMA cipher_status so applications can verify a database handle is using encryption
  • Improves guards against key/rekey/attach misuse
  • Adds criteria for PRAGMA cipher_migrate tests
  • Fixes check for __has_feature macro to separate it from use
  • Fixes CHANGELOG.md markdown formatting, typos, and inline code snippets
  • Fixes conditional in SQLCipher pragma handling
  • Removes deprecated providers for LibTomCrypt and NSS
  • Removes unnecessary shutdown and URI config changes in core tests
  • Ensures all test suite database handles are closed before delete

v4.11.0

08 Oct 14:10

Choose a tag to compare

Full Changelog: v4.10.0...v4.11.0

v4.10.0

04 Aug 20:05

Choose a tag to compare

  • Updates baseline to SQLite 3.50.4 (this version of upstream SQLite address several potential security issues)
  • Allows compile time override of default log level via SQLCIPHER_LOG_LEVEL_DEFAULT macro
  • Fixes issue building with -fstanitize=address on macOS
  • Fixes detection of CommonCrypto version on macOS
  • Improves CommonCrypto version detection on iOS
  • Introduces support for Swift Package Manager via SQLCipher.swift

v4.9.0

15 May 18:38

Choose a tag to compare

  • Updates baseline to upstream SQLite 3.49.2 - Updates the SQLite baseline to SQLite 3.49.2 to address a security issue in the upstream SQLite library.
  • Removes use of static mutex in sqlcipher_extra_shutdown() - Fixes a small resource leak related to library cleanup when compiling with SQLITE_OMIT_AUTOINIT defined.

Additional Context: The SQLite 3.49.2 update fixes a bug that could allow someone with access to run arbitrary CREATE TABLE statements to trigger a memory error and process crash. The issue was introduced along with NOT NULL optimizations in SQLite 3.40.0 and subsequently incorporated into SQLCipher 4.5.4.

v4.8.0

28 Apr 14:05

Choose a tag to compare

  • Fixes regression in PRAGMA cipher_migrate where an error would be thrown when migrating a current-version database
  • Adds selective locking in critical sections of the library for shared cache connections (Note: use of shared cache is still strongly discouraged)
  • Standardizes initial private heap size to 48KB to ensure mlock under constrained limits
  • Removes changes to windows working set sizes
  • Improvements to logging of memory stats and other cleanup

v4.7.0

25 Mar 12:47

Choose a tag to compare

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

v4.6.1

20 Aug 13:25

Choose a tag to compare

  • Updates baseline to upstream SQLite 3.46.1
  • Significant refactor to merge crypto.h, crypto.c, and crypto_impl.c into a single sqlcipher.c source file for simplicity.
  • Updates minimum working set size on windows to increase lockable pages
  • Adds new PRAGMA cipher_log_source for filtering log output on higher verbosity levels
  • Improves log output by including the log level and source prior to message
  • Improves error logging in PRAGMA cipher_migrate
  • Fixes issue where log level and target would be overwritten if set prior to initialization
  • Corrects Podspec license element to use specific BSD 3 Clause
  • Fixes default log output to console for macOS

v4.6.0

21 May 16:26

Choose a tag to compare

Important: Starting in 4.6.0 the default configuration will emit ERROR and WARN level log messages upon initialization. Default log output is sent to logcat for Android, Console for iOS and macOS, and stderr for all other platforms.

  • Sets default log level to WARN
  • Sends default log output to: logcat for Android; Console for iOS and macOS; and stderr for all other platforms
  • General improvements to log level assignments, output, and sanitization
  • Fixes Apple Privacy Manifest by removing empty NSPrivacyCollectedDataType from PrivacyInfo.xcprivacy
  • Moves Swift support defines for podspec user_target_xcconfig so they only apply to the consuming project

v4.5.7

24 Apr 17:09

Choose a tag to compare

  • Updates baseline to upstream SQLite 3.45.3
  • Adds “device” logging and profile target using os_log for Apple and logcat on Android
  • Updates podspec for current Xcode versions, improved Swift support, and Privacy Manifest
  • Fixes issues compiling with SQLITE_OMIT_LOG macro
  • Fixes a malformed man page caused by old merge conflict

v4.5.6

17 Jan 23:09

Choose a tag to compare

  • Updates baseline to upstream SQLite 3.44.2.
  • Improves PRAGMA cipher_integrity_check to report expected page size if invalid.
  • Implements PRAGMA page_size compatibility with PRAGMA cipher_page_size so both will operate properly on encrypted databases.