Themis is open-source high-level cryptographic services library for mobile and server platforms, providing secure messaging and secure data storage. Current stable release is 0.9.2, dated 6th of November.
Themis works in most operating systems (see Availability), and is available for Objective C / iOS, Java / Android, Ruby, Python, PHP, C++, Javascript (NodeJS).
Themis provides three important cryptographic services:
- Secure Message: a simple encrypted messaging solution for widest scope of applications. ECC + ECDSA / RSA + PSS + PKCS#8.
- Secure Session: session-oriented, forward secrecy messaging solution with better security guarantees, but more demanding infrastructure. ECDH key agreement, ECC & AES encryption.
- Secure Cell: a multi-mode cryptographic container, suitable for storing anything from encrypted files to database records and format-preserved strings. Secure Cell is built around AES in GCM (Token and Seal modes) and CTR (Context imprint mode).
Themis was designed to provide complicated cryptosystems in easy-to-use infrastructure, suitable for modern rapid development. Themis is based on best modern practices in implementing complicated security systems based on strongest available cryptographic algorithms in their safest forms. It is available for modern mobile and server languages (see below).
Themis is open source, Apache 2 Licensed.
- Fetch the repository: git clone https://github.com/cossacklabs/themis.git
- Have OpenSSL/LibreSSL + OpenSSL/LibreSSL Dev package (libssl-dev) installed at typical paths:
/usr/lib
,/usr/include
. - Have typical GCC/clang environment installed
- Type 'make install' and you're done (most of the cases)
- Dive into our wiki for the docs of language of your choice, take a look at docs/examples for examples.
It is really advisable to go the long way and read the docs, but god blesses the brave.
Themis is available for the following languages:
- Objective C / iOS documentation and examples
- Java / Android documentation
- Ruby documentation and examples
- Python documentation and examples
- PHP documentation and examples
- C++ documentation and examples
- Javascript (NodeJS) documentation and examples
- Soon: GoLang, Swift
Themis supports the following architectures: x86/x64, armv*, various androids
It is checked to compile on:
- Debian 7.8, CentOS 6.6, CentOS Linux 7.1.1503, Ubuntu 14.04 LTS
- MS Windows 7, 8, 10
- OSX 10.10
- Android 4.4.2
- Android 4.4.4 / CyanogenMod 11
- Android 5
- iOS 7-9, x32/x64
We plan to expand this minuscule availability scope with broader set of platforms. If you'd like to help Themis arrive (or get better) on your favourite platform / language — get in touch.
As long as it is feasible, we'll accumulate list of all tutorials we publish on how to use Themis in different cases here:
- Releasing Themis into public: usability testing, which goes a bit into how to use Secure Message for iOS and Python. Go directly into corresponding github repository to play with code.
- Building encrypted chat service with Themis and mobile websocket example, which outlines stages necessary to build encrypted chat service around Ruby websocket server, with clients in iOS and Android. Github repository with code for the post.
Project's github wiki contains ever-evolving official documentation, which contains everything from how to use it to ways to contribute to it, with a brief explanation of cryptosystems and architecture behind main Themis library in between.