• OCaml 84.1%
  • Scheme 12.1%
  • CSS 2.5%
  • HTML 1.3%
2024-01-19 09:16:15 +01:00
.reuse init 2023-06-27 08:49:07 +02:00
doc doc: Add some screenshots. 2023-07-27 12:12:47 +02:00
lib Background: Persist peers in db. 2023-07-26 13:24:52 +02:00
LICENSES init 2023-06-27 08:49:07 +02:00
src manifest: Bump to 0.3.0-dev. 2023-09-20 15:18:01 +02:00
.gitignore example: We can load a ServiceWorker! 2023-06-28 10:19:52 +02:00
dune-project init 2023-06-27 08:49:07 +02:00
eristekt.opam example: Add skeleton example. 2023-06-27 11:53:40 +02:00
guix.scm guix: Fix Repo URLS. 2024-01-19 09:16:15 +01:00
README.md README: Add note on how to install. 2023-07-27 12:57:26 +02:00

ERIStekt

ERIStekt is a browser extension that allows you to locally encode and decode content with ERIS.

Currently it supports:

  • Encoding a file with ERIS.
  • Storing encoded blocks in a local IndexedDB database.
  • Decode ERIS content using blocks in the local database.
  • Get and put blocks from and to a remote peer using the ERIS CoAP protocol over WebSockets.

Content can be decoded by simply entering the ERIS URN in the address bar. This works by installing a custom protocol handler.

Currently only Mozilla Firefox (and related browsers such as Icecat) are supported.

Usage

Installation

The extension can be installed by downloading the signed eristekt-X.Y.Z.xpi file from https://codeberg.org/eris/eristekt/releases.

Popup Menu

After installation an ERIS icon will appear in your toolbar. Clicking on it will open a popup menu:

Screenshot of ERIStekt popup menu

Encoding a file

To encode a file select "Encode a file" from the popup menu. Following page will be opened:

Screenshot of encode a file page

After selecting a file it can be encoded.

Optionally you can select peers to where blocks should be uploaded.

Upon successfull encoding folowing page will be displayed:

Screenshot of successfull encoding

Options

The options can be accessed by clicking "Options" in the popup menu:

Screenshot of the options page

Peers

Peers are remote ERIS block stores that can be used to get and put blocks of encoded content. See also the ERIS CoAP protocol for more information.

Decoding content

Content can be decoded by entering the ERIS URN in the address bar. Blocks will be fetched from any enabled peers.

Limitations

  • Currently the only transport supported is CoAP over Websockets. Other transports that we intend to implement include (or are interested in):
    • CBOR dumps: This is useful for loading blocks from a USB disk or other Sneakernet transports.
    • WebRTC: This would allow peer-to-peer block transfer between browsers.
  • No Garbage Collection: There is currently no way to delete locally stored blocks to reclaim disk space.

Hacking

ERIStekt is implemented in the OCaml programming language and is compiled to Javascript using the js_of_ocaml compiler.

The ERIS encoding is implemented in the ocaml-eris library that uses Zig to compile cryptographic primitives to WebAssembly.

Development Environment

A development environment with all required dependencies can be created with Guix:

guix shell -D -f guix.scm

Building the XPI

The extension is packaged as an XPI file. It can be built by running:

dune build @install

This will create an eristekt.xpi file in _build/install/default/share/.

By default the builds are very large as they contain debugging information and unused functions/modules. To generate a much smaller build artifact use the release profile:

dune build @install --profile=release

Contact

See the ERIS project site.

Urgent and sensitive security issues may be addressed directly to the ERIS maintainers. See security.txt.

Acknowledgments

The development of ERIStekt has been supported by the NLnet Foundation trough NGI Assure.

License

AGPL-3.0-or-later