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