0.2.3 • Published 8 years ago

e3x v0.2.3

Weekly downloads
6
License
-
Repository
github
Last release
8 years ago

e3x: End-to-End Encrypted eXchange (javascript)

Build Status

This module implements all of e3x in javascript as a node and browserify module. It is used by telehash-js which is designed to provide a friendly higher level api, whereas this is low level and expects the application to manage all state tracking.

Usage

All packets use lob-enc structure of: {json:{...}, body:Buffer(...)}

var e3x = require('e3x');

var secrets = e3x.generate();

var self = e3x.self(args);
if(!self) //console.log(e3x.err);

var inner = self.decrypt(message);

var exchange = self.exchange(args);
if(!exchange) //console.log(self.err);

exchange.token; // 16 byte buffer
exchange.sending = function(packet){ }

var bool = exchange.verify(message);
var message = exchange.encrypt(inner);

var inner = exchange.receive(cpacket);

var at = exchange.at(at); // set the at, or return the current one if none given, will start to timeout channels until in sync
var bool = exchange.sync(handshake); // processes handshake to do all setup stuff, resends channels if in sync
var handshake = exchange.handshake(); // returns current handshake to be sent

var channel = exchange.channel(open);
if(!channel) //console.log(exchange.err);

var bool = channel.receive(inner); // true if accepted
channel.send(packet); // calls exchange.sending()
channel.state;
channel.receiving = function(err, packet){};

Cipher Sets

These are the current Cipher Sets supported by default:

The API to implement a new CS module is just a simplified crypto wrapper:

var cs = require('e3x-csxx');
cs.id; // 'xx';

cs.generate(cb); // new local keypair, cb(err, pair)

var local = new cs.Local(pair);
var inner = local.decrypt(body);

var remote = new cs.Remote(public_key_endpoint);
var bool = remote.verify(local, body);
var outer = remote.encrypt(local, inner);

var ephemeral = new cs.Ephemeral(remote, body);
var outer = ephemeral.encrypt(inner)
var inner = ephemeral.decrypt(outer)
0.2.3

8 years ago

0.2.2

9 years ago

0.2.0

9 years ago

0.1.28

9 years ago

0.1.27

9 years ago

0.1.26

9 years ago

0.1.25

9 years ago

0.1.24

9 years ago

0.1.23

9 years ago

0.1.22

9 years ago

0.1.20

9 years ago

0.1.16

10 years ago

0.1.15

10 years ago

0.1.14

10 years ago

0.1.13

10 years ago

0.1.10

10 years ago

0.1.9

10 years ago

0.1.8

10 years ago

0.1.7

10 years ago

0.1.1

10 years ago

0.0.1

10 years ago