Skip to content

Tanker client-side encryption SDK for JavaScript

License

Notifications You must be signed in to change notification settings

TankerHQ/sdk-js

Repository files navigation

Tanker logo

License Build Coverage Last commit

Encryption SDKs for JavaScript

Overview · Core · Identity · Browser support · Other platforms · Contributing

Overview

Tanker is an open-source solution to protect sensitive data in any application, with a simple end-user experience and good performance. No cryptographic expertise required.

Tanker Core

Tanker Core is the foundation, it provides powerful end-to-end encryption of any type of data, textual or binary. Tanker Core handles multi-device, identity verification, user groups and pre-registration sharing.

Package Version
@tanker/client-browser browser_npm-badge
@tanker/client-node nodejs_npm-badge

Detailed changes for each release are documented in the Release Notes.

Tanker Core usage example

The Core SDK takes care of all the difficult cryptography in the background, leaving you with simple high-level APIs:

import { Tanker } from '@tanker/client-browser';

// Initialize the isolated Tanker environment within your application
const tanker = new Tanker({ appId: '...' });

// Start a session with the user's cryptographic identity
await tanker.start(aliceIdentity);

// Encrypt data and share it with separate recipients or groups
const encryptedMessage = await tanker.encrypt(
  "It's a secret to everybody",
  { shareWithUsers: [bobIdentity] }
);

// Decrypt data (or throw if not a legitimate recipient)
const message = await tanker.decrypt(encryptedMessage);

The Core SDK automatically handles complex key exchanges, cryptographic operations, and identity verification for you.

For more details and advanced examples, please refer to:

Identity management

End-to-end encryption requires that all users have cryptographic identities. The following packages help to handle them:

Tanker Identity is a server side package to link Tanker identities with your users in your application backend. It is available in multiple languages. This repository only contains the Javascript version.

Package Version
@tanker/identity identity_npm-badge

Browser support

The Tanker JavaScript SDKs support the following platforms:

  • Chrome, Firefox, Safari, and Microsoft Edge
  • Node.js 18+

The Tanker JavaScript SDKs are constantly tested with all of the supported browsers via unit and functional tests.

We use BrowserStack to automate testing on many browser & OS combinations.

BrowserStack logo

Other platforms

Tanker is also available for your desktop and mobile applications: use our open-source Python, Ruby, and Rust SDKs.

Contributing

We welcome feedback, bug reports, and bug fixes in the form of pull requests.

To build the JavaScript SDKs yourself, please follow the steps below.

Prerequisites

Install the lastest version of npm.

Use this command to check the npm version installed on your system:

npm --version

Install dependencies

Clone this repository:

git clone https://github.com/TankerHQ/sdk-js.git

Install dependencies:

cd sdk-js && npm install

Test and lint

Our codebase uses the following ES6 features: async / await, import / export, and classes with typescript for type-checking and with eslint for linting.

To check that the code is correct and to launch the tests in Node.js, use:

npm run proof

Submit your pull request

Before submitting your pull request, please make sure that your changes pass the linters and that all the tests pass on your local machine.

For non-trivial changes, we highly recommend including extra tests.

When you're ready, submit your pull request, targeting the master branch of this repository.