1.0.1 • Published 2 years ago

dark-crystal-web3-transport v1.0.1

Weekly downloads
-
License
AGPL-3.0-only
Repository
-
Last release
2 years ago

Dark Crystal Web3 Protocol messages using js-waku

This modules contains protobuf schemas for Dark Crystal Web3, and functionality to send and receive them using Waku v2.

Includes a simple web-based test app:

To run unit tests:

  • yarn test

To re-build protobuf schemas:

  • yarn run protobuf

There are 3 message types:

PubKey

This message is sent by the recovery partner and contains their public encryption key. It may also contain a signature to prove their Ethereum address.

The message is encrypted using the hash of their ethereum address as a symmetric key. This gives a small security advantage over sending the key and associated address clear - one can find the associated encryption key for a given address, but not immediately see all addresses which have published a key.

ShareRequest

This message is sent by the secret owner to ask the recovery partner to return a share. It contains a 'lookup key' by which to identify the share, and an ephemeral public encryption key which the recovery partner should use to encrypt the share.

Optionally it may also contain an 'identifier' with some information to confirm the identity of the secret owner, such as a short phrase which is confirmed out of band, or a signature.

This message is encrypted to the recovery partner's public key as given in a PubKey message.

Share

This message is sent by the recovery partner in response to a ShareRequest, and contains a share payload.

It is encrypted using the public key given in the ShareRequest.

All messages also contain a timestamp.

TODO

  • decrypt our own pubkey messages, so we can display when / whether they were published