CurveCP protocol implementation in pure Javascript
JavaScript
Permalink
Failed to load latest commit information.
examples standard formatting Sep 8, 2016
src add isBuffer check Sep 17, 2016
.gitignore Initial commit Dec 24, 2015
.jshintrc add .jshintrc Mar 27, 2016
LICENSE
README.md Add basic usage info and design logic Dec 25, 2015
circle.yml add deployment instructions Jun 19, 2016
package.json update dependencies and bump version Sep 17, 2016

README.md

CurveCP

Pure Javascript CurveCP protocol

The aim of this project is to implement the CurveCP protocol in pure javascript following the specification on http://www.curvecp.org and interopable with the reference implementation.

This project currently implements the messaging format, encryption layer and congestion control algorithm but still needs to be tested, fine-tuned and improved upon. I don't consider this library to be usable yet.

Quick start

See examples directory for an example client and server implementation.

You should create a PacketStream to start with (supplying public/private keys and other required info) and then wrap this stream in a MessageStream() object.

Clients should then execute the connect() method on MessageStream object.

Design

This implementation makes a clean split between:

  • The congestion control algorithm (chicago.js)
  • The crypto layer (packet-stream.js)
  • The messaging layer (message-stream.js)
  • The actual networking transport. To follow the reference implementation, you should use UDP as a networking transport (like illustrated in examples section) but in principle, the packet-stream can be connected to any networking transport. I'm also using it with different types of transports in my own projects.

Inspiration