#nacl #curve25519 #progress #indigo

networky

networking library for indigo with NaCl (Curve25519) encrypted connections and an async progress monitor

2 releases

0.1.1 Nov 11, 2024
0.1.0 Sep 1, 2024

#341 in Debugging


Used in crashy

Apache-2.0

575KB
13K SLoC

Indigo in Rust

This is the home of the following crates published on crates.io:

  • buildinfy: include build information in your executable, such as current GitLab CI pipeline.
  • commandy: small command line argument parser with small binary size.
  • crashy: small crash reporter that prints more info than the default crash reporter and has support for Sentry.io.
  • expry: evaluates expressions, on binary JSON-like representations.
  • hairy: text templating system with error checking (missing values can be detected compile time).
  • libpep: implementation of polymorphic encryption and pseudonimisation.
  • markdowny: parser for Markdown to AST, so it can be easily converted to other formats.
  • searchy: small embedded in-memory search engine supporting evaluation expressions.
  • sshboard: a clipboard for SSH.
  • tmuxstatus: small utility that shows a CPU usage histogram and current memory usage.
  • tweetnacly: Bindings for TweetNaCl, with a couple of additions: flexible SHA2-512 hash, detached mode.

Shared design goals

  1. Energy efficiency when running the code;
  2. Small memory footprint;
  3. Error handling.

We try to achieve this with:

  • event-driven programming;
  • shifting as much as possible to compile time, and avoid runtime costs;
  • use memory efficient data representations.

Dependencies

We distinguish 3 types of dependencies:

  1. development related dependencies, such as testing frameworks;
  2. loose coupled dependencies, such as a UUID generating framework;
  3. tightly coupled dependencies, such as an event framework.

We focus on minimizing the type 3 dependencies, as these are hard to change. Type 2 dependencies should be included in a wrapper function, so it easy to swap out alternative implementations (or implement it on our own in the future).

List of (some) external crates used by multiple crates in indigo-ng:

  • image
  • qrcode
  • bcrypt
  • xxhash-rust (with xxh32)
  • tokio
  • hyper
  • TLS related based on rustls (including rustls-native-certs and tokio-rustls)

Installation

For Debian, Ubuntu, and Raspbian, add the bitpowder repository. See the instructions on that repository page.

For macOS (for tmuxstatus, genny, butlery, libpep-rust, nanoproxy, sshboard):

brew tap bitpowder/indigo-ng https://bitpowder.com:2443/bitpowder/indigo-ng.git
brew install --HEAD bitpowder/indigo-ng/tmuxstatus

Update with brew reinstall bitpowder/indigo-ng/tmuxstatus.

Dependencies

~4–13MB
~153K SLoC