2 All notable changes to this project will be documented in this file.
4 ## [4.4.1] - (October 2020 - [4.4.1 changes])
5 - Updates baseline to upstream SQLite 3.33.0
6 - Fixes double-free bug in cipher_default_plaintext_header_size
7 - Changes SQLCipher tests to use suite runner
8 - Improvement to cipher_integrity_check tests to minimize false negatives
9 - Deprecates PRAGMA cipher_store_pass
11 ## [4.4.0] - (May 2020 - [4.4.0 changes])
12 - Updates baseline to upstream SQLite 3.31.0
13 - Adjusts shell to report SQLCipher version alongside SQLite version
14 - Fixes various build warnings under several compilers
15 - Removes unused id and status functions from provider interface
17 ## [4.3.0] - (November 2019 - [4.3.0 changes])
18 - Updates baseline to upstream SQLite 3.30.1
19 - PRAGMA key now returns text result value "ok" after execution
20 - Adjusts backup API so that encrypted to encrypted backups are permitted
21 - Adds NSS crypto provider implementation
22 - Fixes OpenSSL provider compatibility with BoringSSL
23 - Separates memory related traces to reduce verbosity of logging
24 - Fixes output of PRAGMA cipher_integrity_check on big endian platforms
25 - Cryptograpic provider interface cleanup
26 - Rework of mutex allocation and management
27 - Resolves miscellaneous build warnings
28 - Force error state at database pager level if SQLCipher initialization fails
30 ## [4.2.0] - (May 2019 - [4.2.0 changes])
31 - Adds PRAGMA cipher_integrity_check to perform independent verification of page HMACs
32 - Updates baseline to upstream SQLite 3.28.0
33 - Improves PRAGMA cipher_migrate to handle keys containing non-terminating zero bytes
35 ## [4.1.0] - (March 2019 - [4.1.0 changes])
36 - Defer reading salt from header until key derivation is triggered
37 - Clarify usage of sqlite3_rekey for plaintext databases in header
38 - Normalize attach behavior when key is not yet derived
39 - Adds PRAGMA cipher_settings to query current database codec settings
40 - Adds PRAGMA cipher_default_settings to query current default SQLCipher options
41 - PRAGMA cipher_hmac_pgno is now deprecated
42 - PRAGMA cipher_hmac_salt_mask is now deprecated
43 - PRAGMA fast_kdf_iter is now deprecated
44 - Improve sqlcipher_export routine and restore all database flags
45 - Clear codec data buffers if a crypographic provider operation fails
46 - Disable backup API for encrypted databases (this was previously documented as not-working and non-supported, but will now explicitly error out on initialization)
47 - Updates baseline to upstream SQLite 3.27.2
49 ## [4.0.1] - (December 2018 - [4.0.1 changes])
50 - Based on upstream SQLite 3.26.0 (addresses SQLite “Magellan” issue)
51 - Adds PRAGMA cipher_compatibility and cipher_default_compatibility which take automatcially configure appropriate compatibility settings for the specified SQLCipher major version number
52 - Filters attach statements with KEY parameters from readline history
53 - Fixes crash in command line shell with empty input (i.e. ^D)
54 - Fixes warnings when compiled with strict-prototypes
56 ## [4.0.0] - (November 2018 - [4.0.0 changes])
58 - Default page size for databases increased to 4096 bytes (up from 1024) *
59 - Default PBKDF2 iterations increased to 256,000 (up from 64,000) *
60 - Default KDF algorithm is now PBKDF2-HMAC-SHA512 (from PBKDF2-HMAC-SHA1) *
61 - Default HMAC algorithm is now HMAC-SHA512 (from HMAC-SHA1) *
62 - PRAGMA cipher is now disabled and no longer supported (after multi-year deprecation) *
63 - PRAGMA rekey_cipher is now disabled and no longer supported *
64 - PRAGMA rekey_kdf_iter is now disabled and no longer supported *
65 - By default all memory allocated internally by SQLite before the memory is wiped before it is freed
66 - PRAGMA cipher_memory_security: allows full memory wiping to be disabled for performance when the feature is not required
67 - PRAGMA cipher_kdf_algorithm, cipher_default_kdf_algorithm to control KDF algorithm selection between PBKDF2-HMAC-SHA1, PBKDF2-HMAC-SHA256 and PBKDF2-HMAC-SHA512
68 - PRAGMA cipher_hmac_algorithm, cipher_default_hmac_algorithm to control HMAC algorithm selection between HMAC-SHA1, HMAC-SHA256 and PBKDF2-HMAC-SHA512
69 - Based on upstream SQLite 3.25.2
70 - When compiled with readline support, PRAGMA key and rekey lines will no longer be
72 - Adds second optional parameter to sqlcipher_export to specify source database to
73 support bidirectional exports
74 - Fixes compatibility with LibreSSL 2.7.0+
75 - Fixes compatibility with OpenSSL 1.1.x
76 - Simplified and improved performance for PRAGMA cipher_migrate when migrating older database versions
77 - Refactoring of SQLCipher tests into separate files by test type
78 - 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
79 - PRAGMA cipher_salt: retrieve or set the salt value for the database
80 - Adds Podspec for using tagged versions of SQLCipher
81 - Define SQLCIPHER_PROFILE_USE_FOPEN for WinXP support
82 - Improved error handling for cryptographic providers
83 - Improved memory handling for PRAGMA commands that return values
84 - Improved version reporting to assist with identification of distribution
85 - Major rewrite and simplification of internal codec and pager extension
86 - Fixes compilation with --disable-amalgamation
87 - Removes sqlcipher.xcodeproj build support
89 ## [3.4.2] - (December 2017 - [3.4.2 changes])
91 - Added support for building with LibreSSL
94 - Merge upstream SQLite 3.20.1
95 - Text strings for `SQLITE_ERROR` and `SQLITE_NOTADB` changed to match upstream SQLite
96 - Remove static modifier for codec password functions
97 - Page alignment for `mlock`
98 - Fix segfault in `sqlcipher_cipher_ctx_cmp` during rekey operation
99 - Fix `sqlcipher_export` and `cipher_migrate` when tracing API in use
100 - Validate codec page size when setting
101 - Guard OpenSSL initialization and cleanup routines
102 - Allow additional linker options to be passed via command line for Windows platforms
104 ## [3.4.1] - (December 2016 - [3.4.1 changes])
106 - Added support for OpenSSL 1.1.0
109 - Merged upstream SQLite 3.15.2
111 ## [3.4.0] - (April 2016 - [3.4.0 changes])
113 - Added `PRAGMA cipher_provider_version`
116 - Merged upstream SQLite 3.11.0
119 - Deprecated `PRAGMA cipher` command
121 ## [3.3.1] - (July 2015 - [3.3.1 changes])
123 - Merge upstream SQLite 3.8.10.2
124 - Fixed segfault when provided an invalid cipher name
125 - Check for codec context when performing `PRAGMA cipher_store_pass`
126 - Remove extraneous null check in `PRAGMA cipher_migrate`
128 ## [3.3.0] - (March 2015 - [3.3.0 changes])
130 - Added FIPS API calls within the OpenSSL crypto provider
131 - `PRAGMA cipher_default_page_size` - support for attaching non-default page sizes
134 - Merged upstream SQLite 3.8.8.3
136 ## [3.2.0] - (September 2014 - [3.2.0 changes])
138 - Added `PRAGMA cipher_store_pass`
141 - Merged upstream SQLite 3.8.6
142 - Renmed README to README.md
144 ## [3.1.0] - (April 2014 - [3.1.0 changes])
146 - Added `PRAGMA cipher_profile`
149 - Merged upstream SQLite 3.8.4.3
151 ## [3.0.1] - (December 2013 - [3.0.1 changes])
153 - Added `PRAGMA cipher_add_random` to source external entropy
156 - Fix `PRAGMA cipher_migrate` to handle passphrases longer than 64 characters & raw keys
157 - Improvements to the libtomcrypt provider
159 ## [3.0.0] - (November 2013 - [3.0.0 changes])
161 - Added `PRAGMA cipher_migrate` to migrate older database file formats
164 - Merged upstream SQLite 3.8.0.2
165 - Remove usage of VirtualLock/Unlock on WinRT and Windows Phone
166 - Ignore HMAC read during Btree file copy
167 - Fix lib naming for pkg-config
168 - Use _v2 version of `sqlite3_key` and `sqlite3_rekey`
169 - Update xcodeproj file
172 - Change KDF iteration length from 4,000 to 64,000
174 [unreleased]: https://github.com/sqlcipher/sqlcipher/compare/v4.4.1...prerelease
175 [4.4.1]: https://github.com/sqlcipher/sqlcipher/tree/v4.4.1
176 [4.4.1 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.4.0...v4.4.1
177 [4.4.0]: https://github.com/sqlcipher/sqlcipher/tree/v4.4.0
178 [4.4.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.3.0...v4.4.0
179 [4.3.0]: https://github.com/sqlcipher/sqlcipher/tree/v4.3.0
180 [4.3.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.2.0...v4.3.0
181 [4.2.0]: https://github.com/sqlcipher/sqlcipher/tree/v4.2.0
182 [4.2.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.1.0...v4.2.0
183 [4.1.0]: https://github.com/sqlcipher/sqlcipher/tree/v4.1.0
184 [4.1.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.0.1...v4.1.0
185 [4.0.1]: https://github.com/sqlcipher/sqlcipher/tree/v4.0.1
186 [4.0.1 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.0.0...v4.0.1
187 [4.0.0]: https://github.com/sqlcipher/sqlcipher/tree/v4.0.0
188 [4.0.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.4.2...v4.0.0
189 [3.4.2]: https://github.com/sqlcipher/sqlcipher/tree/v3.4.2
190 [3.4.2 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.4.1...v3.4.2
191 [3.4.1]: https://github.com/sqlcipher/sqlcipher/tree/v3.4.1
192 [3.4.1 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.4.0...v3.4.1
193 [3.4.0]: https://github.com/sqlcipher/sqlcipher/tree/v3.4.0
194 [3.4.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.3.1...v3.4.0
195 [3.3.1]: https://github.com/sqlcipher/sqlcipher/tree/v3.3.1
196 [3.3.1 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.3.0...v3.3.1
197 [3.3.0]: https://github.com/sqlcipher/sqlcipher/tree/v3.3.0
198 [3.3.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.2.0...v3.3.0
199 [3.2.0]: https://github.com/sqlcipher/sqlcipher/tree/v3.2.0
200 [3.2.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.1.0...v3.2.0
201 [3.1.0]: https://github.com/sqlcipher/sqlcipher/tree/v3.1.0
202 [3.1.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.0.1...v3.1.0
203 [3.0.1]: https://github.com/sqlcipher/sqlcipher/tree/v3.0.1
204 [3.0.1 changes]: https://github.com/sqlcipher/sqlcipher/compare/v3.0.0...v3.0.1
205 [3.0.0]: https://github.com/sqlcipher/sqlcipher/tree/v3.0.0
206 [3.0.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v2.2.0...v3.0.0
207 [2.2.0]: https://github.com/sqlcipher/sqlcipher/tree/v2.2.0
208 [2.2.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v2.1.1...v2.2.0
209 [2.1.1]: https://github.com/sqlcipher/sqlcipher/tree/v2.1.1
210 [2.1.1 changes]: https://github.com/sqlcipher/sqlcipher/compare/v2.1.0...v2.1.1
211 [2.1.0]: https://github.com/sqlcipher/sqlcipher/tree/v2.1.0
212 [2.1.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v2.0.6...v2.1.0
213 [2.0.6]: https://github.com/sqlcipher/sqlcipher/tree/v2.0.6
214 [2.0.6 changes]: https://github.com/sqlcipher/sqlcipher/compare/v2.0.5...v2.0.6
215 [2.0.5]: https://github.com/sqlcipher/sqlcipher/tree/v2.0.5
216 [2.0.5 changes]: https://github.com/sqlcipher/sqlcipher/compare/v2.0.3...v2.0.5
217 [2.0.3]: https://github.com/sqlcipher/sqlcipher/tree/v2.0.3
218 [2.0.3 changes]: https://github.com/sqlcipher/sqlcipher/compare/v2.0.0...v2.0.3
219 [2.0.0]: https://github.com/sqlcipher/sqlcipher/tree/v2.0.0
220 [2.0.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.10...v2.0.0
221 [1.1.10]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.10
222 [1.1.10 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.9...v1.1.10
223 [1.1.9]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.9
224 [1.1.9 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.8...v1.1.9
225 [1.1.8]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.8
226 [1.1.8 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.7...v1.1.8
227 [1.1.7]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.7
228 [1.1.7 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.6...v1.1.7
229 [1.1.6]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.6
230 [1.1.6 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.5...v1.1.6
231 [1.1.5]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.5
232 [1.1.5 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.4...v1.1.5
233 [1.1.4]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.4
234 [1.1.4 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.3...v1.1.4
235 [1.1.3]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.3
236 [1.1.3 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.2...v1.1.3
237 [1.1.2]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.2
238 [1.1.2 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.1...v1.1.1
239 [1.1.1]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.1
240 [1.1.1 changes]: https://github.com/sqlcipher/sqlcipher/compare/v1.1.0...v1.1.1
241 [1.1.0]: https://github.com/sqlcipher/sqlcipher/tree/v1.1.0
242 [1.1.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/617ed01...v1.1.0