Themis
Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.
Install / Use
/learn @cossacklabs/ThemisREADME
<p align="center"> <a href="https://github.com/cossacklabs/themis/releases"><img src="https://img.shields.io/github/release/cossacklabs/themis.svg" alt="GitHub release"></a> <a href="https://github.com/cossacklabs/themis/releases/latest"><img src="https://img.shields.io/badge/platform-Android%20%7C%20iOS%20%7C%20macOS%20%7C%20Linux%20%7C%20Java%20%7C%20WASM-green.svg" alt="Platforms"></a> <a href='https://coveralls.io/github/cossacklabs/themis'><img src='https://coveralls.io/repos/github/cossacklabs/themis/badge.svg?branch=master' alt='Coverage Status' /></a> <a href='https://goreportcard.com/report/github.com/cossacklabs/themis'><img class="badge" tag="github.com/cossacklabs/themis" src="https://goreportcard.com/badge/github.com/cossacklabs/themis"></a> <br> <a href="https://github.com/cossacklabs/themis/actions?query=workflow%3A%22Themis+Core%22"><img src="https://github.com/cossacklabs/themis/workflows/Themis%20Core/badge.svg" alt="Themis Core"></a> <a href="https://github.com/cossacklabs/themis/actions?query=workflow%3A%22Integration+testing%22"><img src="https://github.com/cossacklabs/themis/workflows/Integration%20testing/badge.svg" alt="Integration testing"></a> <a href="https://github.com/cossacklabs/themis/actions?query=workflow%3A%22Code+style%22"><img src="https://github.com/cossacklabs/themis/workflows/Code%20style/badge.svg" alt="Code style"></a> <a href="https://circleci.com/gh/cossacklabs/themis"><img src="https://circleci.com/gh/cossacklabs/themis/tree/master.svg?style=shield" alt="Circle CI"></a> <a href="https://app.bitrise.io/app/69a1d5c9d42fa60f"><img src="https://app.bitrise.io/app/69a1d5c9d42fa60f/status.svg?token=Fp_06Ema5PgzBbZQyQy1bA&branch=master" alt="Bitrise"></a> </p> <h4 align="center">General purpose cryptographic library for storage and messaging for iOS (Swift, Obj-C), Android (Java, Kotlin), React Native (iOS, Android), desktop Java, С/С++, Node.js, Python, Ruby, PHP, Go, Rust, WASM.</h4> <h4 align="center">Perfect fit for multi-platform apps. Hides cryptographic details. Made by cryptographers for developers 🧡</h4>
What Themis is
Themis is an open-source high-level cryptographic services library for securing data during authentication, storage, messaging, network exchange, etc. Themis solves 90% of typical data protection use cases that are common for most apps.
Themis helps to build both simple and complex cryptographic features easily, quickly, and securely. Themis allows developers to focus on the main thing: developing their applications.
Use cases that Themis solves
-
Encrypt stored secrets in your apps and backend: API keys, session tokens, files.
-
Encrypt sensitive data fields before storing in database ("application-side field-level encryption").
-
Support searchable encryption, data tokenization and data masking using Themis and Acra.
-
Exchange secrets securely: share sensitive data between parties, build simple chat app between patients and doctors.
-
Build end-to-end encryption schemes with centralised or decentralised architecture: encrypt data locally on one app, use it encrypted everywhere, decrypt only for authenticated user.
-
Maintain real-time secure sessions: send encrypted messages to control connected devices from your app, receive real-time sensitive data from your apps to your backend.
-
Compare secrets between parties without revealing them (zero-knowledge proof-based authentication).
-
One cryptographic library that fits them all: Themis is the best fit for multi-platform apps (e.g., iOS+Android+Electron app with Node.js backend) because it provides 100% compatible API and works in the same way across all supported platforms.
Cryptosystems
Themis provides ready-made building blocks (“cryptosystems”) which simplify usage of core cryptographic security operations.
Themis provides 4 important cryptographic services:
- 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-256-GCM, AES-256-CTR.
- Secure Message: a simple encrypted messaging solution for the widest scope of applications. Exchange the keys between the parties and you're good to go. Two pairs of underlying cryptosystems: ECC + ECDSA / RSA + PSS + PKCS#7.
- Secure Session: session-oriented encrypted data exchange with forward secrecy for better security guarantees and more demanding infrastructures. Secure Session can perfectly function as socket encryption, session security, or a high-level messaging primitive (with some additional infrastructure like PKI). ECDH key agreement, ECC & AES encryption.
- Secure Comparator: Zero knowledge proofs-based cryptographic protocol for authentication and comparing secrets.
We created Themis to build other products on top of it - i.e. Acra and Hermes.
Installation
Refer to the Installation page to install Themis for your mobile, web, desktop, or server-side application. We highly recommend installation packages instead of building from source.
Languages
Themis is available for the following languages/platforms, refer to language howtos for each:
| Platform | Documentation | Examples | Version |
| :----- | :----- | :------ | :--- |
| ⚛️ React Native (iOS, Android) | React Native Howto | docs/examples/react-native | |
| 🔶 Swift (iOS, macOS) | Swift Howto | docs/examples/swift |
|
| 📱 Objective-C (iOS, macOS) | Objective-C Howto | docs/examples/objc|
|
| ☕️ Java (Desktop) | Java (Desktop) Howto | docs/examples/java |
|
| ☎️ Java (Android) | Java (Android) Howto | docs/examples/android |
|
| 📞 Kotlin (Android) | Kotlin (Android) Howto | docs/examples/android |
|
| 🔻 Ruby | Ruby Howto | docs/examples/ruby |
|
| 🐍 Python | Python Howto | docs/examples/python |
|
| 🐘 PHP | PHP Howto | docs/examples/php | |
| ➕ C++ | CPP Howto | docs/examples/c++ ||
| 🍭 Node.js | Javascript (Node.js) Howto | docs/examples/js |
|
| 🖥 WebAssembly | Javascript (WebAssembly) Howto| docs/examples/js |
|
| 🐹 Go | Go Howto| [docs/e
Related Skills
healthcheck
342.0kHost security hardening and risk-tolerance configuration for OpenClaw deployments
himalaya
342.0kCLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
node-connect
342.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
xurl
342.0kA CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.
