Releases: cossacklabs/themis
0.12.1 hotfix iOS/macOS CocoaPods
This is a small change required only for Themis iOS/macOS to link themis.podspec
to correct tag.
0.12.0
0.12.0, September 27th 2019
TL;DR:
- Added WasmThemis to support WebAssembly (works with Electron and Node.js);
- added experimental support for Windows (using MSYS2 compiler and NSIS installer);
- added support of Go Modules;
- added package for ThemisPP;
- added support for Node.js v12 LTS (in addition to v10 and v8) in jsThemis;
- added extra safety checks and fixes for tricky bugs.
Breaking changes:
- Linux: when building from sources, the default installation path of Themis Core library has been changed from
/usr
to/usr/local
. If you’re affected, read the instructions on how to make a clean upgrade below. - Go: some of GoThemis APIs have been renamed to comply with Go naming convention (old API are marked as deprecated and will be removed in the next release). If you’re using Go – please switch to new functions.
- Ruby: deprecated
rubythemis
gem has been completely removed in favour ofrbthemis
.
Code:
-
Core
-
Soter (low-level security core used by Themis)
Improved security and code quality, implemented better handling of secrets and memory management. These changes decrease the chance of potential memory leaks.
-
Introduced new internal function:
soter_wipe()
.
It can be used to securely wipe sensitive data from memory after it's no longer needed.
All Themis cryptosystems now use this new API (#488). -
Improved usage and error handling of OpenSSL/BoringSSL PRNGs.
Thank you, @veorq for bringing up this issue (#485). -
Improved memory safety and fixed potential corner-case issues in OpenSSL/BoringSSL usage.
Thanks, @outspace for identifying these issues (#501, #524, #525, #535).
-
-
Key generation
-
Improved key validity checks across all Themis cryptosystems. Now it’s harder to use wrong keys or misuse them (#486).
-
Improved error handling for EC key generator that could produce an invalid public key without returning an error.
Thanks, @vixentael for finding this issue (#500).
-
-
Secure Cell
-
Library ABI
-
Themis shared libraries now have a formal ABI version.
This ensures that no compatibility issues arise if we ever need to introduce breaking changes in the ABI (#454). -
Removed private symbols from public export lists.
Themis has been accidentally exporting various private utility functions.
Private functions not intended for public use are now hidden (#458, #472).
-
-
-
Themis now installs to
/usr/local
by default when building from source on Linux (#448).This may be a breaking change if your system has non-standard precedence rules.
If you install Themis from source code directly, please do a clean upgrade the following way:make uninstall PREFIX=/usr make install PREFIX=/usr/local
Please consider using binary repositories to install Themis.
If your system or package manager is not supported yet, please let us know via [email protected]. -
Themis packages now support multiarch installations (#512).
Multiarch enables parallel installation of 32-bit and 64-bit versions of the library.
This is particularly important on CentOS where some tools like pkg-config would fail to locate Themis due to non-standard installation path. -
Updated Makefile to support a number of standard GNU variables like
libdir
(#453, #455). -
Improved accuracy of package dependencies to make sure you don't have to install anything manually after installing Themis from package repositories (#446).
-
NSIS installer is now available for Windows. To build NSIS installer, use
make nsis_installer
command in MSYS2 environment.
You can read more about MSYS2 target here (#474).
-
-
Dependency updates
-
Other changes
-
-
Android
-
C++
-
ThemisPP is now available as a system package through Cossack Labs repositories (#506).
Use
libthemispp-dev
for Debian and Ubuntu,libthemispp-devel
for CentOS.
-
-
Go
-
Breaking changes
-
Some APIs have been renamed to conform with the Go naming conventions (#424).
The old names are now deprecated and scheduled for removal in the next release.
Please migrate to using the new names when you upgrade.Old API New API cell.CELL_MODE_SEAL
cell.ModeSeal
compare.COMPARE_MATCH
compare.Match
keys.KEYTYPE_EC
keys.TypeEC
session.STATE_ESTABLISHED
session.StateEstablished
(*session.SecureSession) GetRemoteId
GetRemoteID
-
-
GoThemis is now compatible with Go 1.11 modules starting with this release.
For example, you are now able to pin a specific version of GoThemis in your projects (#505).
-
-
iOS, macOS
-
Java
- JNI wrapper for desktop Java does not require a separate installation of Themis Core from now on (#450).
-
Node.js
-
PHP
- Updated PHP installer to use the latest Composer version (#519).
-
Ruby
-
Breaking changes
rubythemis
gem has been completely removed after being deprecated in Themis 0.11.
Please userequire 'rbthemis'
in your projects (#508).
-
-
Rust
- Minor internal code style modernizations (#466).
-
WebAssembly
- WasmThemis brings Themis to Web using [WebAssembly](https://web...
0.11.2 hotfix for Carthage
This is not a real release, but a hotfix.
This tag is created for Themis Carthage only. The only changes are inside Cartfile and affect Themis Carthage users (iOS/macOS).
0.11.1
0.11.0
0.11.0, March 28th 2019
TL;DR: Added Rust Themis, added Carthage distribution for iOS and Maven distribution for Android. Improved Secure Message API and propagated it to all our language wrappers.
We found that Themis is now recommended by OWASP as data encryption library for mobile platforms.
Breaking changes: We renamed rubythemis
to rbthemis
as a beginning of a tradition of gentle deprecations, with timely warning of all the users that can potentially be affected. We removed themis_version()
function that allowed checking Themis' version at run-time (with no replacement function).
Code:
-
Core
-
Fixes in Soter (low-level security core used by Themis):
-
Fixed possible null pointer deference caused by the misusage of short-circuit evaluation. Huge thanks to @movie-travel-code for pointing out (#315, #314).
-
Fixed crash in Secure Message when RSA keys are used incorrectly (swapped or empty) – a shoutout for @ilammy and @secumod for fixing this (#334).
-
Fixed issue with RSA key generator silently truncating private keys – our gratitude going out to @ilammy and @secumod again (#335).
-
Fixed crash that occured on re-using Secure Comparator with BoringSSL – thanks to @ilammy and @secumod for this fix (#347).
-
Fixed overflow during Secure Cell decryption in Seal mode - thanks to @ilammy and his skills in fuzz testing (#367).
-
Improved the test suite to catch more corner cases, including with OpenSSL-specific issues (#323, #319).
-
-
Secure Session
-
Added additional safety tests for Secure Session: return error if clientID is empty (thanks @deszip for asking tough questions and mis-using clientID) (#386).
-
Described thread safety code practices when using Secure Session.
-
-
Secure Message
-
Updated Secure Message API: divided the
wrap
function intoencrypt
andsign
, and theunwrap
function intodecrypt
andverify
. The new API has more intuitive naming and should be harder to misuse, with encrypt/decrypt and sign/verify API clearly named and separated.A common mistake with the old API was that users could accidentally use sign/verify API instead of encryption because they didn't provide a private key. The new API features more strict checks and prevents this kind of mistake.
This change doesn't affect the language wrappers you are using, so no code changes are required from you.
Documentation for the new API calls is available in the Wiki documentation and for each language separately (in their Howtos).
(#389).
-
Fixed a potential memory leak in Secure Message encryption and decryption (#398).
-
-
Code quality
-
Cleaned up circular dependencies in header files. This change has made the code cleaner and the compilation time faster (#392).
-
Improved code quality by fixing warnings from various compiler flags (
-Wall -Wextra -Wformat-security -Wnull-dereference -Wshift-overflow
and so on) (#377). -
Formatted the code using
clang-format
andclang-tidy
, added automated formatting for core and tests (#418, #399, #397, #396, #395).
-
-
Other changes
-
Improved and refactored our Great Makefile to be more stable, more user-friendly, and to support OS-specific issues (#417, #413, #348, #346, #345, #343, #321).
-
Removed
themis_version()
function and all related API for querying Themis and Soter versions at run-time. There is no replacement for it and this is obviously a breaking change (#388).
-
-
-
Rust
-
Introduced Rust Themis wrapper, all work done by brilliant @ilammy!
Rust Themis supports the same functionality as other Themis wrappers: Secure Cell, Secure Message, Secure Session, and Secure Comparator. Rust Themis package is available through crates.io, examples are stored in docs/examples/rust, the HowTo guide is available in Wiki.
(#419, #405, #403, #390, #383, #382, #381, #380, #376, #375, #374, #373, #372, #365, #363, #362, #358, #357, #356, #353, #349, #340).
-
-
iOS and macOS
-
Added Carthage support. Now users can add Themis to their Cartfile using
github "cossacklabs/themis"
.More details available in Objective-C Howto and Swift Howto on wiki. Example projects available in docs/examples/objc and docs/examples/swift/ folders.
-
Added BoringSSL support, now users can select which crypto-engine they want to include. This change affects only Themis CocoaPod: users can add Themis based on BoringSSL to their Podfile using
pod 'themis/themis-boringssl'
(#351, #331, #330, #329). -
Added bitcode support. This affects only Themis CocoaPod that uses OpenSSL – thanks @deszip and @popaaaandrei (#407, #355, #354).
-
Added compatibility for Swift frameworks. Now Themis can be used directly from Swift without Bridging header file, kudos to @popaaaandrei for pointing on this out (#416, #415).
-
Updated code to use the latest Secure Message API (see description of core changes above). This change doesn't affect user-facing code so no code changes are required from users (#393).
-
Updated error codes and error messages for all crypto systems, now errors and logs are more user-friendly and understandable (#394, #393).
-
Improved code quality here and there (#317).
-
Dropped feature flag
SECURE_COMPARATOR_ENABLED
because it's redundant: Secure Comparator is enabled by default (#429).
-
-
**m...
0.10.0
TL;DR: Multi-platform, multi-language compatibility improved.
-
If you are using Themis on x64 systems, consider upgrading every Themis library/wrapper you were using to
0.10.0
. Incompatibility issues may arise between previous Themis versions and0.10.0
on x64 machines (#279). -
Rubythemis has breaking changes for Secure Cell Token Protect mode (#281). We added checks for other language wrappers to make sure this won't happen again (#282, #283).
Check the Migration Guide for more details.
Docs:
- Updated the descriptions of Crypto systems, added more usage examples and code samples.
- Refreshed code samples in language tutorials, made them more readable.
Obj-C | Swift | Java and Android | Python | PHP | Ruby | C++ | Go | Node js. - Added human-friendly description of Secure Comparator and supplied usage examples for all languages with the exception of PHP.
Infrastructure:
- Added support of Ubuntu 17.10.
- Removed support of Ubuntu 16.10 and Ubuntu 17.04 (no more compiled binaries for these OSs now).
- Added CLI utils for easy testing of Secure Cell, Secure Message, and Key generation on local machine. Available for Python, Ruby, Go, NodeJS, and PHP. Check the Console Utils guide for more details and usage description/guide.
- Added Integration test suit for the majority of the available language wrappers, which was the catalyst for many fixes in this release.
- Added support of CircleCI 2.0 with multiple workflows. This allows testing each language wrapper and integrations between them easily and quickly (#295, #299).
Code:
- Core:
- C++ wrapper:
- Added a set of unit tests (#292).
- Android wrapper:
- iOS wrapper:
- GoThemis:
- JSThemis:
- RubyThemis:
- Fixed arguments' order for Secure Cell in the Token Protect mode, which caused incompatibility with older versions of rubythemis (#281). Please check the migration guide for the details;
- Added CLI utils and integration tests that allow you to test Secure Cell, Secure Message, and Key generation on your local machine (#277, #293, #305, #306)
- PyThemis:
- PHPThemis:
- Added support of PHP 7.0, 7.1, 7.2 (#278, #280);
- Added a package for
phpthemis
. Now you don't need to compile it from sources. See the installation PHP guide for more details; - Improved unit tests. Now it's easy to run tests because all the dependencies are handled by a php-composer (#284, #285, #303);
- Added a memory test suit, which allows us to keep a closer eye on PHPThemis' memory usage (#298);
- Added CLI utils and integration tests that allow you to test Secure Cell, Secure Message, and Key generation on your local machine (#277, #293, #305, #306).
0.9.6
TL;DR: OpenSSL 1.1 support.
Docs:
- Significant update of the Contributing section in Wiki.
Infrastructure:
- Removed support for Ubuntu Precise.
- Fixed
.rpm
package versioning (#240). - Added a handy command for preparing and running of all the tests
make test
(#243). - Added small changes and updates into Makefile to make it even better and fixed the installing dependencies (#236, #239, #250).
Code:
- Core:
- added OpenSSL 1.1 support (#208).
- Android wrapper:
- iOS wrapper:
- GoThemis:
- JSThemis:
- PyThemis:
0.9.5
Changelog:
Mostly usability fixes for wrappers.
Infrastructure:
- You can now download pre-built Themis packages from our package server.
- Enhanced building process for MacOS (working now!) (#215).
- Enhanced building process for Debian 9.x (working even better now!).
- Updated documentation and examples to make it easier to understand.
- Now we use Bitrise as a separate CI for iOS wrapper.
- Test and code coverage are automagically measured now!
Code:
- Core: disabled SHA1 support.
- Secure Comparator: magically improved code readability (#196, #195).
- iOS wrapper: added support of dynamic frameworks and bitcode (#222, #219, #205).
- Go wrapper: refactored custom error (
themisError
) type. - PHP wrapper: updated tests.
- PyThemis: considerably improved example projects.
0.9.4
This is tiny intermediary release to lock ongoing changes in stable form for all languages:
- BoringSSL support on Android and Linux
- Fixed some leaks and code styling problems (thanks to @bryongloden)
- Memory management updates for stability in languages, which rely on sloppy GC
- Fix Themis build errors under certain conditions
- Secure Comparator examples for many languages
- Swift3 support + numerous enhancements from @valeriyvan, thanks a lot!
- GoThemis: fixed rare behavior in Secure Session wrapper
- GoThemis examples
- JsThemis syntax corrections and style fixes
- JsThemis Nan usage to enhance compatibility
- More and better Themis Server examples
- Enhanced error messages (now with proper spelling!)
- Corrections for RD_Themis
Updating themis.podspec
Updating podspec to be compatible with CocoaPods 1.0