SQLCipher 4.5.5 Release

SQLCipher 4.5.5 is now available.

The following are the major changes to SQLCipher core:

  • Updates baseline to upstream SQLite 3.42.0
  • Does not allow key to be set again on a connection after it has been successfully used for an encryption or decryption operation to prevent accidental database corruption
  • Raises an error if a rekey operation is attempted on an unencrypted database
  • Raises an error when a key or rekey operation is passed an empty key
  • Minor improvements to constant time functions
  • Miscellaneous code and comment cleanup

The following important change affects the Legacy SQLCipher for Android package:

Important Deprecation Notice: We officially announced the availability of the new SQLCipher for Android API in early 2022. The new library features significantly improved performance, support for concurrent database access with connection pooling and WAL, and a simplified internal API based on the AndroidBindings project. It has been widely used in production applications and many active projects have already migrated to the new packages.

As of this release of SQLCipher, 4.5.5, the legacy SQLCipher for Android Package (android-database-sqlcipher) is officially deprecated. We have already shifted development focus almost exclusively to the new project. In addition, we are no longer distributing pre-built Community Edition packages of the legacy library via Maven Central. Developers using the Community Edition of android-database-sqlcipher are strongly encouraged to migrate to the new SQLCipher for Android sqlcipher-android project. The source code for legacy project will remain online indefinitely on GitHub for developers who wish to build the legacy library from source.

Our hope is that this Community Edition deprecation will help encourage rapid adoption of the new SQLCipher for Android package, especially as legacy developers seek to update to underlying OpenSSL 3 LTS support. Instructions for migrating from android-database-sqlcipher to sqlcipher-android may be found here.

Finally, there are a large number of enhancements to the Commercial and Enterprise packages for this release:

  • All SQLCipher non-FIPS packages that use the OpenSSL Cryptographic Provider are now using OpenSSL 3.0.10 LTS
  • Adds armhf (32 bit) and arm64 support to SQLCipher for Linux, SQLCipher for Linux .NET, and SQLCipher for JDBC packages
  • Adds static libraries (libsqlcipher.a) to SQLCipher for Linux package
  • Continued improvement to .NET MAUI and Xamarin in SQLCipher for iOS .NET to add support for iOS arm64 simulator
  • Updates SQLCipher for Windows System.Data.SQLite to use System.Data.SQLite 1.0.118 as baseline
  • SQLCipher for JDBC now uses xerial/sqlite-jdbc release 3.42.0.0 as baseline
  • Updates SQLitePCL.raw dependencies for all .NET packages to version 2.1.5
  • Updates minimum versions in all iOS and macOS example projects to support current Xcode requirements