Releases: sqlcipher/sqlcipher
Releases · sqlcipher/sqlcipher
v4.12.0
- Updates baseline to SQLite 3.51.1
- Adds
PRAGMA cipher_statusso applications can verify a database handle is using encryption - Improves guards against key/rekey/attach misuse
- Adds criteria for
PRAGMA cipher_migratetests - Fixes check for
__has_featuremacro 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
Full Changelog: v4.10.0...v4.11.0
v4.10.0
- 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=addresson 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
- 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_AUTOINITdefined.
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
- Fixes regression in
PRAGMA cipher_migratewhere 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
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
v4.6.1
- Updates baseline to upstream SQLite 3.46.1
- Significant refactor to merge
crypto.h,crypto.c, andcrypto_impl.cinto a singlesqlcipher.csource file for simplicity. - Updates minimum working set size on windows to increase lockable pages
- Adds new
PRAGMA cipher_log_sourcefor 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
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
- 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