2015-03-04 08:45:43 -06:00
# SQLCipher Change Log
All notable changes to this project will be documented in this file.
2021-02-18 10:41:04 -05:00
## [4.4.3] - (February 2021 - [4.4.3 changes])
- Updates baseline to ustream SQLite 3.34.1
- Fixes sqlcipher_export handling of NULL parameters
- Removes randomization of rekey-delete tests to avoid false test failures
- Changes internal usage of sqlite_master to sqlite_schema
- Omits unusued profiling function under certain defines to avoid compiler warnings
2020-11-16 16:48:51 -05:00
## [4.4.2] - (November 2020 - [4.4.2 changes])
- Improve error handling to resolve potential corruption if an encryption operation failed while operating in WAL mode
- Changes to OpenSSL library cryptographic provider to reduce initialization complexity
- Adjust cipher_integrity_check to skip locking page to avoid a spurious error report for very large databases
- Miscellaneous code and comment cleanup
2020-10-20 09:51:34 -04:00
## [4.4.1] - (October 2020 - [4.4.1 changes])
- Updates baseline to upstream SQLite 3.33.0
- Fixes double-free bug in cipher_default_plaintext_header_size
- Changes SQLCipher tests to use suite runner
- Improvement to cipher_integrity_check tests to minimize false negatives
- Deprecates PRAGMA cipher_store_pass
2020-05-28 09:45:57 -04:00
2020-04-30 15:28:17 -04:00
## [4.4.0] - (May 2020 - [4.4.0 changes])
- Updates baseline to upstream SQLite 3.31.0
- Adjusts shell to report SQLCipher version alongside SQLite version
- Fixes various build warnings under several compilers
- Removes unused id and status functions from provider interface
2019-10-31 08:56:05 -04:00
## [4.3.0] - (November 2019 - [4.3.0 changes])
- Updates baseline to upstream SQLite 3.30.1
- PRAGMA key now returns text result value "ok" after execution
- Adjusts backup API so that encrypted to encrypted backups are permitted
- Adds NSS crypto provider implementation
- Fixes OpenSSL provider compatibility with BoringSSL
- Separates memory related traces to reduce verbosity of logging
- Fixes output of PRAGMA cipher_integrity_check on big endian platforms
- Cryptograpic provider interface cleanup
2019-11-18 11:20:42 -05:00
- Rework of mutex allocation and management
2019-10-31 08:56:05 -04:00
- Resolves miscellaneous build warnings
2019-12-19 17:38:32 -05:00
- Force error state at database pager level if SQLCipher initialization fails
2019-10-31 08:56:05 -04:00
2019-05-20 15:05:05 -04:00
## [4.2.0] - (May 2019 - [4.2.0 changes])
- Adds PRAGMA cipher_integrity_check to perform independent verification of page HMACs
2019-05-15 13:07:00 -04:00
- Updates baseline to upstream SQLite 3.28.0
2019-05-29 11:49:17 -04:00
- Improves PRAGMA cipher_migrate to handle keys containing non-terminating zero bytes
2019-05-15 10:24:27 -04:00
2019-03-08 08:25:54 -06:00
## [4.1.0] - (March 2019 - [4.1.0 changes])
2019-01-04 12:03:21 -05:00
- Defer reading salt from header until key derivation is triggered
2019-01-15 13:45:41 -05:00
- Clarify usage of sqlite3_rekey for plaintext databases in header
- Normalize attach behavior when key is not yet derived
- Adds PRAGMA cipher_settings to query current database codec settings
2019-01-16 13:03:47 -05:00
- Adds PRAGMA cipher_default_settings to query current default SQLCipher options
2019-01-16 13:16:31 -05:00
- PRAGMA cipher_hmac_pgno is now deprecated
- PRAGMA cipher_hmac_salt_mask is now deprecated
- PRAGMA fast_kdf_iter is now deprecated
2019-03-12 13:41:27 -05:00
- Improve sqlcipher_export routine and restore all database flags
2019-02-21 09:12:12 -05:00
- Clear codec data buffers if a crypographic provider operation fails
- Disable backup API for encrypted databases (this was previously documented as not-working and non-supported, but will now explicitly error out on initialization)
2019-02-25 15:04:23 -05:00
- Updates baseline to upstream SQLite 3.27.2
2018-12-17 13:15:39 -05:00
2019-03-08 08:25:54 -06:00
## [4.0.1] - (December 2018 - [4.0.1 changes])
2018-12-17 08:34:13 -05:00
- Based on upstream SQLite 3.26.0 (addresses SQLite “Magellan” issue)
- Adds PRAGMA cipher_compatibility and cipher_default_compatibility which take automatcially configure appropriate compatibility settings for the specified SQLCipher major version number
- Filters attach statements with KEY parameters from readline history
- Fixes crash in command line shell with empty input (i.e. ^D)
- Fixes warnings when compiled with strict-prototypes
2018-11-30 12:13:04 -05:00
2019-03-08 08:25:54 -06:00
## [4.0.0] - (November 2018 - [4.0.0 changes])
2018-11-30 12:13:04 -05:00
### Changed
- Default page size for databases increased to 4096 bytes (up from 1024) *
- Default PBKDF2 iterations increased to 256,000 (up from 64,000) *
- Default KDF algorithm is now PBKDF2-HMAC-SHA512 (from PBKDF2-HMAC-SHA1) *
- Default HMAC algorithm is now HMAC-SHA512 (from HMAC-SHA1) *
- PRAGMA cipher is now disabled and no longer supported (after multi-year deprecation) *
- PRAGMA rekey_cipher is now disabled and no longer supported *
- PRAGMA rekey_kdf_iter is now disabled and no longer supported *
- By default all memory allocated internally by SQLite before the memory is wiped before it is freed
- PRAGMA cipher_memory_security: allows full memory wiping to be disabled for performance when the feature is not required
- PRAGMA cipher_kdf_algorithm, cipher_default_kdf_algorithm to control KDF algorithm selection between PBKDF2-HMAC-SHA1, PBKDF2-HMAC-SHA256 and PBKDF2-HMAC-SHA512
- PRAGMA cipher_hmac_algorithm, cipher_default_hmac_algorithm to control HMAC algorithm selection between HMAC-SHA1, HMAC-SHA256 and PBKDF2-HMAC-SHA512
- Based on upstream SQLite 3.25.2
- When compiled with readline support, PRAGMA key and rekey lines will no longer be
saved to history
- Adds second optional parameter to sqlcipher_export to specify source database to
support bidirectional exports
- Fixes compatibility with LibreSSL 2.7.0+
- Fixes compatibility with OpenSSL 1.1.x
- Simplified and improved performance for PRAGMA cipher_migrate when migrating older database versions
- Refactoring of SQLCipher tests into separate files by test type
- PRAGMA cipher_plaintext_header_size and cipher_default_plaintext_header_size: allocates a portion of the database header which will not be encrypted to allow identification as a SQLite database
- PRAGMA cipher_salt: retrieve or set the salt value for the database
- Adds Podspec for using tagged versions of SQLCipher
- Define SQLCIPHER_PROFILE_USE_FOPEN for WinXP support
- Improved error handling for cryptographic providers
- Improved memory handling for PRAGMA commands that return values
- Improved version reporting to assist with identification of distribution
- Major rewrite and simplification of internal codec and pager extension
- Fixes compilation with --disable-amalgamation
- Removes sqlcipher.xcodeproj build support
2015-03-04 08:45:43 -06:00
2019-03-08 08:25:54 -06:00
## [3.4.2] - (December 2017 - [3.4.2 changes])
2017-09-29 16:01:58 -05:00
### Added
- Added support for building with LibreSSL
### Changed
- Merge upstream SQLite 3.20.1
- Text strings for `SQLITE_ERROR` and `SQLITE_NOTADB` changed to match upstream SQLite
- Remove static modifier for codec password functions
- Page alignment for `mlock`
- Fix segfault in `sqlcipher_cipher_ctx_cmp` during rekey operation
- Fix `sqlcipher_export` and `cipher_migrate` when tracing API in use
- Validate codec page size when setting
- Guard OpenSSL initialization and cleanup routines
2017-12-21 13:31:28 -06:00
- Allow additional linker options to be passed via command line for Windows platforms
2017-09-29 16:01:58 -05:00
2019-03-08 08:25:54 -06:00
## [3.4.1] - (December 2016 - [3.4.1 changes])
2016-12-28 11:39:09 -06:00
### Added
- Added support for OpenSSL 1.1.0
### Changed
- Merged upstream SQLite 3.15.2
2019-03-08 08:25:54 -06:00
## [3.4.0] - (April 2016 - [3.4.0 changes])
2016-02-24 14:38:23 -06:00
### Added
- Added `PRAGMA cipher_provider_version`
### Changed
- Merged upstream SQLite 3.11.0
2016-03-03 11:32:44 -06:00
### Deprecated
- Deprecated `PRAGMA cipher` command
2019-03-08 08:25:54 -06:00
## [3.3.1] - (July 2015 - [3.3.1 changes])
2015-07-13 10:23:35 -05:00
### Changed
- Merge upstream SQLite 3.8.10.2
- Fixed segfault when provided an invalid cipher name
- Check for codec context when performing `PRAGMA cipher_store_pass`
- Remove extraneous null check in `PRAGMA cipher_migrate`
2019-03-08 08:25:54 -06:00
## [3.3.0] - (March 2015 - [3.3.0 changes])
2015-03-25 14:47:02 -05:00
### Added
2015-03-25 14:53:22 -05:00
- Added FIPS API calls within the OpenSSL crypto provider
2015-03-25 14:47:02 -05:00
- `PRAGMA cipher_default_page_size` - support for attaching non-default page sizes
### Changed
- Merged upstream SQLite 3.8.8.3
2019-03-08 08:25:54 -06:00
## [3.2.0] - (September 2014 - [3.2.0 changes])
2015-03-04 08:45:43 -06:00
### Added
2016-02-24 14:38:23 -06:00
- Added `PRAGMA cipher_store_pass`
2015-03-04 08:45:43 -06:00
### Changed
- Merged upstream SQLite 3.8.6
- Renmed README to README.md
2019-03-08 08:25:54 -06:00
## [3.1.0] - (April 2014 - [3.1.0 changes])
2015-03-04 08:45:43 -06:00
### Added
2015-03-25 14:47:02 -05:00
- Added `PRAGMA cipher_profile`
2015-03-04 08:45:43 -06:00
### Changed
- Merged upstream SQLite 3.8.4.3
2019-03-08 08:25:54 -06:00
## [3.0.1] - (December 2013 - [3.0.1 changes])
2015-03-04 08:45:43 -06:00
### Added
2016-02-24 14:38:23 -06:00
- Added `PRAGMA cipher_add_random` to source external entropy
2015-03-04 08:45:43 -06:00
### Changed
2015-03-25 14:47:02 -05:00
- Fix `PRAGMA cipher_migrate` to handle passphrases longer than 64 characters & raw keys
2015-03-04 08:45:43 -06:00
- Improvements to the libtomcrypt provider
2019-03-08 08:25:54 -06:00
## [3.0.0] - (November 2013 - [3.0.0 changes])
2015-03-04 08:45:43 -06:00
### Added
2015-03-25 14:47:02 -05:00
- Added `PRAGMA cipher_migrate` to migrate older database file formats
2015-03-04 08:45:43 -06:00
### Changed
- Merged upstream SQLite 3.8.0.2
- Remove usage of VirtualLock/Unlock on WinRT and Windows Phone
- Ignore HMAC read during Btree file copy
- Fix lib naming for pkg-config
2016-02-24 14:38:23 -06:00
- Use _v2 version of `sqlite3_key` and `sqlite3_rekey`
2015-03-04 08:45:43 -06:00
- Update xcodeproj file
### Security
- Change KDF iteration length from 4,000 to 64,000
2021-02-18 10:41:04 -05:00
[unreleased]: https://github.com/sqlcipher/sqlcipher/compare/v4.4.3...prerelease
[4.4.3]: https://github.com/sqlcipher/sqlcipher/tree/v4.4.3
[4.4.3 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.4.2...v4.4.3
2020-11-16 16:48:51 -05:00
[4.4.2]: https://github.com/sqlcipher/sqlcipher/tree/v4.4.2
2021-02-18 10:41:04 -05:00
[4.4.2 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.4.1...v4.4.2
2020-10-20 09:51:34 -04:00
[4.4.1]: https://github.com/sqlcipher/sqlcipher/tree/v4.4.1
[4.4.1 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.4.0...v4.4.1
2020-04-30 15:28:17 -04:00
[4.4.0]: https://github.com/sqlcipher/sqlcipher/tree/v4.4.0
[4.4.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.3.0...v4.4.0
2019-10-31 08:56:05 -04:00
[4.3.0]: https://github.com/sqlcipher/sqlcipher/tree/v4.3.0
[4.3.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.2.0...v4.3.0
2019-05-20 15:05:05 -04:00
[4.2.0]: https://github.com/sqlcipher/sqlcipher/tree/v4.2.0
[4.2.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.1.0...v4.2.0
2019-03-08 08:25:54 -06:00
[4.1.0]: https://github.com/sqlcipher/sqlcipher/tree/v4.1.0
[4.1.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.0.1...v4.1.0
[4.0.1]: https://github.com/sqlcipher/sqlcipher/tree/v4.0.1
[4.0.1 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.0.0...v4.0.1
[4.0.0]: https://github.com/sqlcipher/sqlcipher/tree/v4.0.0
[4.0.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.4.2...v4.0.0
[3.4.2]: https://github.com/sqlcipher/sqlcipher/tree/v3.4.2
[3.4.2 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.4.1...v3.4.2
[3.4.1]: https://github.com/sqlcipher/sqlcipher/tree/v3.4.1
[3.4.1 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.4.0...v3.4.1
[3.4.0]: https://github.com/sqlcipher/sqlcipher/tree/v3.4.0
[3.4.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.3.1...v3.4.0
[3.3.1]: https://github.com/sqlcipher/sqlcipher/tree/v3.3.1
[3.3.1 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.3.0...v3.3.1
[3.3.0]: https://github.com/sqlcipher/sqlcipher/tree/v3.3.0
[3.3.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.2.0...v3.3.0
[3.2.0]: https://github.com/sqlcipher/sqlcipher/tree/v3.2.0
[3.2.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.1.0...v3.2.0
[3.1.0]: https://github.com/sqlcipher/sqlcipher/tree/v3.1.0
[3.1.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.0.1...v3.1.0
[3.0.1]: https://github.com/sqlcipher/sqlcipher/tree/v3.0.1
[3.0.1 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.0.0...v3.0.1
[3.0.0]: https://github.com/sqlcipher/sqlcipher/tree/v3.0.0
[3.0.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v2.2.0...v3.0.0
[2.2.0]: https://github.com/sqlcipher/sqlcipher/tree/v2.2.0
[2.2.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v2.1.1...v2.2.0
[2.1.1]: https://github.com/sqlcipher/sqlcipher/tree/v2.1.1
[2.1.1 changes]: https://github.com/sqlcipher/sqlcipher/compare/v2.1.0...v2.1.1
[2.1.0]: https://github.com/sqlcipher/sqlcipher/tree/v2.1.0
[2.1.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v2.0.6...v2.1.0
[2.0.6]: https://github.com/sqlcipher/sqlcipher/tree/v2.0.6
[2.0.6 changes]: https://github.com/sqlcipher/sqlcipher/compare/v2.0.5...v2.0.6
[2.0.5]: https://github.com/sqlcipher/sqlcipher/tree/v2.0.5
[2.0.5 changes]: https://github.com/sqlcipher/sqlcipher/compare/v2.0.3...v2.0.5
[2.0.3]: https://github.com/sqlcipher/sqlcipher/tree/v2.0.3
[2.0.3 changes]: https://github.com/sqlcipher/sqlcipher/compare/v2.0.0...v2.0.3
[2.0.0]: https://github.com/sqlcipher/sqlcipher/tree/v2.0.0
[2.0.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.10...v2.0.0
[1.1.10]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.10
[1.1.10 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.9...v1.1.10
[1.1.9]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.9
[1.1.9 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.8...v1.1.9
[1.1.8]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.8
[1.1.8 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.7...v1.1.8
[1.1.7]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.7
[1.1.7 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.6...v1.1.7
[1.1.6]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.6
[1.1.6 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.5...v1.1.6
[1.1.5]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.5
[1.1.5 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.4...v1.1.5
[1.1.4]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.4
[1.1.4 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.3...v1.1.4
[1.1.3]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.3
[1.1.3 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.2...v1.1.3
[1.1.2]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.2
[1.1.2 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.1...v1.1.1
[1.1.1]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.1
[1.1.1 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.0...v1.1.1
[1.1.0]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.0
[1.1.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/617ed01...v1.1.0