您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
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