You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lennart Grahl aa67f5d871
Merge pull request #116 from saltyrtc/115-supplement
преди 2 месеца
.circleci Update CI file to test on newer and more versions преди 2 месеца
dist Release v0.14.3 преди 4 месеца
docs Replace ArrayBuffer with Uint8Array everywhere (#112) преди 5 месеца
rollup Fix rollup config of performance tests преди 11 месеца
src Wording in log message ("unknown" -> "unexpected") преди 2 месеца
tests Update CI file to test on newer and more versions преди 2 месеца
.editorconfig Add .editorconfig (#94) преди 1 година
.gitignore Add performance tests for encrypt/decrypt functions преди 1 година
.gitmodules Remove chunked-dc-js submodule преди 2 години
CHANGELOG.md Release v0.14.3 преди 4 месеца
CONTRIBUTING.md Add CONTRIBUTING.md преди 2 години
LICENSE.md Update copyright year преди 1 година
README.md Document test certificates in Firefox преди 11 месеца
RELEASING.md Release v0.12.4 преди 11 месеца
karma.conf.js Update CI file to test on newer and more versions преди 2 месеца
package-lock.json Release v0.14.3 преди 4 месеца
package.json Release v0.14.3 преди 4 месеца
saltyrtc-client.d.ts Fix signature of KeyStore's constructor in type definitions преди 4 месеца
tsconfig.json Upgrade TypeScript преди 1 година
tslint.json Add tslint (#88) преди 1 година

README.md

SaltyRTC JavaScript Client

CircleCI Supported ES Standard npm Version npm Downloads License CII Best Practices Chat on Gitter

This is a SaltyRTC v1 implementation for JavaScript (ES5+) written in TypeScript 2.

Warning: This is beta software. Use at your own risk. Testing and review is welcome!

The library has been tested with Firefox 45+ and Chromium 49+.

Installing

Via npm

You can install this library via npm:

npm install --save @saltyrtc/client msgpack-lite tweetnacl

Manually

Alternatively, copy one of the following files to your project directly:

  • ES2015: dist/saltyrtc-client.es2015.js
  • ES5: dist/saltyrtc-client.es5.js
  • ES5 minified: dist/saltyrtc-client.es5.min.js
  • ES5 minified polyfilled: dist/saltyrtc-client.es5.min.polyfill.js

Make sure to manually add the following external dependencies to your project:

Usage

See Docs.

Development

Install dependencies:

$ npm install

To compile the TypeScript sources to a single JavaScript (ES5 / Minified ES5 / ES2015) file:

$ npm run dist

The resulting files will be located in dist/.

Due to a bug (https://github.com/rollup/rollup-plugin-typescript/issues/43), rollup does not currently output non-fatal errors from TypeScript. To see those, simply issue npm run validate in your main directory.

$ npm run validate

Testing

1. Preparing the Server

First, clone the saltyrtc-server-python repository.

git clone https://github.com/saltyrtc/saltyrtc-server-python
cd saltyrtc-server-python

Then create a test certificate for localhost, valid for 5 years.

openssl req \
   -newkey rsa:1024 \
   -x509 \
   -nodes \
   -keyout saltyrtc.key \
   -new \
   -out saltyrtc.crt \
   -subj /CN=localhost \
   -reqexts SAN \
   -extensions SAN \
   -config <(cat /etc/ssl/openssl.cnf \
     <(printf '[SAN]\nsubjectAltName=DNS:localhost')) \
   -sha256 \
   -days 1825

You can import this file into your browser certificate store. For Chrome/Chromium, use this command:

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n saltyrtc-test-ca -i saltyrtc.crt

In Firefox the easiest way to add your certificate to the browser is to start the SaltyRTC server (e.g. on localhost port 8765), then to visit the corresponding URL via https (e.g. https://localhost:8765). Then, in the certificate warning dialog that pops up, choose “Advanced” and add a permanent exception.

Create a Python virtualenv with dependencies:

python3 -m virtualenv venv
venv/bin/pip install .[logging]

Finally, start the server with the following test permanent key:

export SALTYRTC_SERVER_PERMANENT_KEY=0919b266ce1855419e4066fc076b39855e728768e3afa773105edd2e37037c20 # Public: 09a59a5fa6b45cb07638a3a6e347ce563a948b756fd22f9527465f7c79c2a864
venv/bin/saltyrtc-server -v 5 serve -p 8765 \
    -sc saltyrtc.crt -sk saltyrtc.key \
    -k $SALTYRTC_SERVER_PERMANENT_KEY

2. Running Tests

To compile the test sources, run:

$ npm run rollup_tests

Then simply open tests/testsuite.html in your browser!

Alternatively, run the tests automatically in Firefox and Chrome:

$ npm test

3. Linting

To run linting checks:

npm run lint

You can also install a pre-push hook to do the linting:

echo -e '#!/bin/sh\nnpm run lint' > .git/hooks/pre-push
chmod +x .git/hooks/pre-push

Security

Responsible Disclosure / Reporting Security Issues

Please report security issues directly to one or both of the following contacts:

Coding Guidelines

  • Write clean ES2015
  • Favor const over let

License

MIT, see LICENSE.md.