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

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