- OCaml 84.1%
- Scheme 12.1%
- CSS 2.5%
- HTML 1.3%
| .reuse | ||
| doc | ||
| lib | ||
| LICENSES | ||
| src | ||
| .gitignore | ||
| dune-project | ||
| eristekt.opam | ||
| guix.scm | ||
| README.md | ||
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:
Encoding a file
To encode a file select "Encode a file" from the popup menu. Following page will be opened:
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:
Options
The options can be accessed by clicking "Options" in the popup menu:
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.