Giter Club home page Giter Club logo

e3x-js's Introduction

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)

e3x-js's People

Contributors

quartzjer avatar rynomad avatar dvanduzer avatar kagami avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.