Crate cyphernet

source ·
Expand description

Cyphernet is a set of libraries for privacy-preserving networking & internet applications.

The set of libraries supports mix networks (Tor, I2P, Nym), proxies, end-to-end encryption without central authorities/PKI (Noise-based encryption protocols like lightning wire protocol, NTLS etc). The library provides three main components, structured as modules:

  • Network addresses (module addr), which allow simple use of
  • Tor, Nym, I2P and other mix networks and SOCKS proxies
  • P2P addresses with node public keys
  • May be used in a way that prevents using DNS names (outside mixnet scope).
  • Noise protocol framework (module noise) for end-to-end encrypted network communications.

The library tries to minimize number of dependencies. Most of its functionality is available via non-default features, like:

  • noise: support for noise protocols
  • mixnets: supports for mixnet network addresses, including tor, nym, i2p (may require additional crypto libraries for parsing public keys)
  • serde: encoding for addresses types
  • dns: enable use of DNS names alongside IP addresses and mixnet names.

Network addresses provided by the library include the following types:

  • addr::InetHost - IP addr or DNS name
  • addr::HostName - IP, DNS, Tor, I2P, Nym host name (no port or proxy information)
  • addr::NetAddr - any type of host name + port information
  • addr::PartialAddr - any type of host name + optional port, which defaults to generic const if not provided
  • addr::PeerAddr - any of the above addresses + node public key for authentication
  • addr::ProxiedHost - host name + proxy (there are IP/DNS w/o proxy and with proxy)
  • addr::ProxiedAddr - any of the above addresses + proxy (thus IP/DNS is always proxied)

Re-exports

Modules

  • Edwards25519 curve keys and EdDSA algorithm implementation for Ed25519 scheme.
  • Curve25519 keys and ECDH algorithm implementation for X25519 scheme.

Structs

Enums

Traits

Type Aliases