SQLCipher 4.10.0 Release

2025-08-04 08:00:00 -0400

We’re pleased to announce the immediate availability of SQLCipher 4.10.0. This release includes a number of enhancements and security updates.

SQLCipher Core

  • Updates baseline to latest SQLite 3.50.4
  • Allows compile time override of default log level via SQLCIPHER_LOG_LEVEL_DEFAULT macro
  • Fixes detection of CommonCrypto version on macOS
  • Improves CommonCrypto version detection on iOS
  • Fixes issue with using -fsanitize=address on macOS

Note that the new SQLite 3.50.4 contains several security fixes. Applications that use SQLCipher and allow untrusted schema modification are advised to upgrade.

Important Note: Applications upgrading from versions of SQLCipher 4.6.1 or earlier should be aware that this version of SQLCipher incorporates several potential breaking changes from SQLCipher 4.7.0. Please carefully review the 4.7.0 release notes before upgrading.

Swift Package Manager Support

SQLCipher 4.10.0 introduces support for integration via Swift Package Manager with Xcode for Apple platforms like iOS and macOS. Please consider updating your projects to use Swift Package Manager today according the appropriate documentation:

  1. Swift Package Manager for Community Edition
  2. Swift Package Manager for Commercial & Enterprise
  3. Swift Package Manager for Library Integrations

Swift Package Manager is replacing CocoaPods support. This is the last release where we will be publishing a Podspec for SQLCipher.

SQLCipher Commercial and Enterprise

  • Fixes error handling KDF_NONE in sqlcipher_vle_pbkdf2 function
  • Adds additional options for setting License Codes (see below)
  • Improves FIPS module resolution logic for macOS bundles
  • Significant improvements to virtually all integration example programs included with SQLCipher packages
  • Remove deprecated example programs from packages
  • Removes redundant zetetic- prefix from NuGet packages for .NET (see below)
  • Consolidates iOS and macOS into a single Apple integration package

License Code Changes

SQLCipher Commercial and Enterprise Editions require integrating applications to unlock the software by providing the license code using PRAGMA cipher_license. This approach works well for most applications, but requires modification of the application code. Starting in this release, SQLCipher now supports several additional options for providing the license code. The license code value may now be set in:

  • The environmental variable CIPHER_LICENSE
  • A file named cipher_license in the same directory as the SQLCipher library
  • A file named cipher_license in the same directory as the current executable
  • A file named cipher_license in the same directory as the current working directory
  • A file named cipher_license in the Resources directory next to the main library in a macOS bundle
  • An arbitrary file path set using the CIPHER_LICENSE_FILE environmental variable

NuGet Package Name Changes

Commercial and Enterprise NuGet packages have been renamed in this release to remove the redundant zetetic- prefix. For example, the package previously named zetetic-sqlcipher-ios is now simply sqlcipher-ios. Similarly the package previously named zetetic-sqlite-net-base is now named sqlcipher-sqlite-net-base. Applications using SQLCipher NuGet packages can simply remove the references from the old packages, and add a new reference to the current package. Alternately, the value of the <PackageReference> tags can be modified in the application .csproj directly.

This is a packaging naming change only, so no code changes are required. The following is a complete list of package renames for reference:

  • zetetic-sqlcipher-android => sqlcipher-android
  • zetetic-sqlcipher-ios => sqlcipher-ios
  • zetetic-sqlcipher-linux-fips => sqlcipher-linux-fips
  • zetetic-sqlcipher-linux => sqlcipher-linux
  • zetetic-sqlcipher-macos-fips => sqlcipher-macos-fips
  • zetetic-sqlcipher-macos => sqlcipher-macos
  • zetetic-sqlcipher-uwp => sqlcipher-uwp
  • zetetic-sqlcipher-windows-fips => sqlcipher-windows-fips
  • zetetic-sqlcipher-windows => sqlcipher-windows
  • zetetic-sqlcipher-windows-system-data-sqlite => sqlcipher-windows-system-data-sqlite
  • zetetic-sqlcipher-windows-vcrtforwarders => sqlcipher-windows-vcrtforwarders
  • zetetic-sqlite-net-base => sqlcipher-sqlite-net-base

Apple Consolidation

SQLCipher Commercial and Enterprise packages for iOS and macOS are now consolidated into a single downloadable package. Integration is now simplified by requring on a single SQLCipher.xcframework package to be added, and the each platform will be unlocked with an appropriate License Code. As a result of this change packages previously available as separate sqlcipher-ios-X.X.X.zip and sqlcipher-macos-X.X.X.zip are now replaced by a sqlcipher-apple-X.X.X.zip for delivery.

Upgrading and Availability

SQLCipher 4.10.0 is available for download now. We strongly recommend testing your applications thoroughly with the new version before deploying to production.

Commercial and Enterprise - On-demand access to new releases of SQLCipher packages are available to all licensees with an active CipherCare support subscription from the Customer Downloads fulfillment site. Subscribers will also receive a separate email notification regarding the update and can contact us at any time for private support directly from the SQLCipher development team. Commercial and Enterprise edition upgrades require a new license code from the SQLCipher fulfillment site for each version. Don’t forget to change the license code in your application(s) when you upgrade.

Community Edition - SQLCipher Community Edition source code is available on GitHub, via AAR packaging for Android, and Swift Package Manager for Apple platforms.

For feedback and questions, please visit our Community Forum or private support channels. Thank you for using SQLCipher!