New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

ca-net

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ca-net

Network Communication Mod

latest
Source
npmnpm
Version
0.0.5
Version published
Maintainers
1
Created
Source

ca-net

Simple TCP/IP Communication Lib

This lib creates a wrapper of sorts around the node.js's net.createServer and net.connect. It sets up encrypted communication between a client and server using DiffieHellman Key Exchange, and aes-256-cbc encryption from node.js's crypto. It also takes care of message compression and splitting.

##Install npm install ca-net

##API

ca-net.client(Host, Port, API, callback)

Wrapper for net.connect

Parameters

Host: string, Address of Server

Port: int, Port of Server

API: function, [optional] Called on('data') will pass arguments objCon,Buffer

callback: function, [optional] Called on('connect') will pass arguments net.Socket,objCon

 

ca-net.server(Port, API, callback)

Wrapper for net.createServer

Parameters

Port: int, Port to listen on

API: function, [optional] Called on('data') will pass arguments objCon,Buffer

callback: function, [optional] Called on('listening') will pass arguments net.Server,{'token':objCon}

 

objData

internal class

ca-net.objData.objData(objCon, data)

internal class

Parameters

objCon: objCon, internal class

data: Buffer, internal class

 

ca-net.objData.destruct()

internal function called at the tail of a recursive objData.combine, objData.unpack, objData.pack or when objData times out on objData.ttl timeout

 

ca-net.objData.combine(aObjData)

internal function called to join together data that has been split by objData.pack

Parameters

aObjData: objData, internal function called to join together data that has been split by objData.pack

 

ca-net.objData.send(data)

internal function Prepends data Buffer with length and writes it socket

Parameters

data: Buffer, Data to send

 

ca-net.objData.recieve()

internal function Processes Prepended length and split data Buffer if longer than length calls .unpack() on data creates new objData for remaining data and calls .recieve() on new objData

 

ca-net.objData.pack(c, z, s)

internal function processes objData.data before calling objData.send zip? > encrypt? > split?

Parameters

c: bool, [optional] toEncrypt flag

z: bool, [optional] toZip flag

s: bool, [optional] Special Flag used for pubKey syncing

 

ca-net.objData.unpack()

internal function process objData.data before passing objData.data to objData.objCon.API join? > decrypt? > unzip?

 

objCon

internal class

ca-net.objCon.objCon(con, token, address, API)

internal class

Parameters

con: net.Socket, internal class

token: string, [optional]

address: string, [optional]

API: function, [optional]

 

ca-net.objCon.API(c, r)

Handles encryption setup on initial connection

Parameters

c: objCon, Handles encryption setup on initial connection

r: Buffer, Handles encryption setup on initial connection

 

ca-net.objCon.destruct()

destroys objCon on time out

 

ca-net.objCon.keepAlive()

updates objCon.ttl to keep connection from self destructing

 

ca-net.objCon.send(msg, flg)

send messages to remote connection

Parameters

msg: Buffer, Message to send to remote connection

flg: bool, internal var for connection initilization

##Known Issues:

Fixed ... needs updated in npm

...\ca-net\index.js:468
        delete tConns[this.token];
               ^
ReferenceError: tConns is not defined

##TODO:

Coding:

  • create objCon class for uniformity betwen Cli & Serv
  • create objData class for simulated low level exchange
  • objData Send/Recieve
  • objData Zipping
  • objData Encryption
  • objData pubKey Sync
  • add functionality for externaly checking if objCon.destruct() has been called
  • change .onError() so that host script is informed

Testing / Doc:

  • Test Send / Recieve
  • Test Zipping
  • Test Encryption
  • Test Splitting
  • remove cb from source & testing
  • update testing w/ random data
  • Test Zip > Encrypt > Split > Send\Recieve > Join > Decrypt > Unzip
  • Test objCon
  • Doc API
  • Add Example Code

Eventualy:

  • Rewrite objData.pack() and objData.unpack() to use a fixed length binnary header instead of dirty string manipulation

####Disclaimer: This is a toy project, and should not be used for production grade anything ... use at your own risk

FAQs

Package last updated on 15 Sep 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts