@totemstan/securelink
v1.15.0
Published
E2EE only
Downloads
3
Readme
secureLink
SecureLink (built on SocketIO) provides a secure link between clients through the use of PGP end-to-end encryption. SecureLink also provides antibot technology to challenge clients, and a secure login mechanisim. SecureLink establishes the following SocketIO protocol
Function Client Channel Server
==================================================================
join ----------------- connect ---------------->
request ----------------- join ------------------->
<---- status || challenge || start -------
start ----------------- announce --------------->
session <---------------- accept* -----------------
save ----------------- store ------------------>
history <---------------- status ------------------
load ----------------- restore ---------------->
history <---------------- status ------------------
login ----------------- login ------------------>
request <----- status, remove*, accept* -----------
relay ----------------- relay ------------------>
message <---------------- relay** -----------------
* sends to all clients
** sends to all clients except the requesting client
Manage
npm install @totemstan/securelink # install
npm run start [ ? | $ | ...] # Unit test
npm run verminor # Roll minor version
npm run vermajor # Roll major version
npm run redoc # Regen documentation
Usage
Acquire and optionally configure SecureLink as follows:
const SECLINK = require("@totemstan/securelink").config({
key: value, // set key
"key.key": value, // indexed set
"key.key.": value // indexed append
});
where configuration keys follow ENUMS deep copy conventions.
Program Reference
SECLINK
Provides a private (end-to-end encrypted) message link between trusted clients and secure logins.
This module documented in accordance with jsdoc.
Env Dependencies
LINK_PASS = passphrase to encrypt user passwords ["securePass"]
LINK_HOST = name of secure link host ["secureHost"]
Requires: module:enums, module:socketio, module:socket.io, module:crypto
Author: ACMESDS
Example
On the server:
const
SECLINK = require("securelink");
SECLINK.config({
server: server,
sqlThread: sqlThread,
guest: {....}
});
const
{ sio } = SECLINK;
sio.emit( "update", { // send update request
});
On the client:
// <script src="securelink-client.js"></script>
Sockets({ // establish sockets
update: req => { // intercept update request
console.log("update", req);
},
// other sockets as needed ...
});
SECLINK.host
Domain name of host for attributing domain-owned accounts.
Kind: static property of SECLINK
SECLINK.isTrusted()
Test if an account is "trusted" to use the secure com channel.
Kind: static method of SECLINK
SECLINK.Login(login, cb)
Start a secure link and return the user profile corresponding for the supplied
account/password login. The provided callback LOGIN(err,profile) where LOGIN =
resetPassword || newAccount || newSession || guestSession determines the login session
type being requested.
Kind: static method of SECLINK
Cfg: Function
| Param | Type | Description | | --- | --- | --- | | login | String | account/password credentials | | cb | function | callback (err,profile) to process the session |
SECLINK.testClient(client, guess, res)
Test response of client during a session challenge.
Kind: static method of SECLINK
| Param | Type | Description | | --- | --- | --- | | client | String | name of client being challenged | | guess | String | guess provided by client | | res | function | response callback( "pass" || "fail" || "retry" ) |
SECLINK.config()
Establish socketio channels for the SecureIntercom link (at store,restore,login,relay,status, sync,join,exit,content) and the insecure dbSync link (at select,update,insert,delete).
Kind: static method of SECLINK
SECLINK-CLIENT
Provides UIs for operating private (end-to-end encrypted) messaging link between trusted clients.
This module documented in accordance with jsdoc.
The UIs herein are created in the /site.jade and support:
+ client login/out/reset operations
+ SecureLink and dbSync sockets (Kill, Sockets, Join)
+ data encryption (GenKeys, Encrypt, Decrypt, Encode, Decode)
Requires: module:socketio, module:openpgp, module:uibase
Author: ACMESDS
Contacting, Contributing, Following
Feel free to
- submit and status TOTEM issues
- contribute to TOTEM notebooks
- revise TOTEM requirements
- browse TOTEM holdings
- or follow TOTEM milestones
License
© 2012 ACMESDS