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.
Silvestr Predko 633c5efe4c Update CI 2 years ago
.github/workflows Update CI 2 years ago
common-api Bump up outdated dependencies 2 years ago
example Fixed a e2ee issues 2 years ago
web-client Expose add_participant API 2 years ago
.dockerignore Add /pkg to docker ignore 2 years ago
.gitignore Rename js-client to example 2 years ago
Cargo.toml Change optimization config to most efficient 3 2 years ago
Dockerfile Use near-client from crates.io 2 years ago
README.md Update README 2 years ago
docker-compose.yml Update a Docker file for new integration tests 2 years ago

README.md

Client

CI

Common-API 🦆

Commonly used API among different dependencies. For example key-exchange-server

Web-Client 🦘

It’s a client that exchange keys between meeting moderator and participants. To achieve solid security used blockchain as a trust point for establishing secure channels between moderator and participant. Each user in a blockchain has an ED25519 PublicKey. For creating a secure channel Diffie–Hellman algorithm is used, provided by Dalek cryptography. Unfortunately, it’s not possible to exchange keys with ED25519 keys, because it is using a Edwards point, and for algorithm needs a Montgomery point. For this purpose, conversion happened here.

NOTE! Used the maximum key length for each algorithm

Then we have proper keys for the Diffie–Hellman exchange. Let’s create out secret with dhx. After we need to provide a uniformly distributed secret key. For this purpose used a KDF algorithm blake3. Here is an implementation.

The next stage is to pass a randomly generated key in a secure way for each participant. To do this let’s encrypt generated key with a just generated after KDF secure key, that is unique for each participant = moderator pair. Encrypt randomly generated key by ChaCha20 with a AES-GCM. That’s all.

Usage of web-client library:

Please follow the official instructions to use the latest package.

Build

wasm-pack build web-client --target bundler --out-dir ../pkg

Test

Pre requirements: Clone a key-exchange-server and near-smartcontracts. Deploy their docker instances:

⚠️ Please keep the order(near-smartcontracts depends on the key-exchange-server network)

  1. key-exchange-server: bash docker-compose up -d
  2. near-smartcontracts: bash docker-compose -f docker-compose.yml -f docker-compose.tests.yml up -d

Then:

docker-compose up