#i2p #tor #cyphernet #nym #privacy #p2p #cryptography

cypheraddr

Network address types supporting proxying, mixnets, P2P with minimalistic dependencies (part of cyphernet suite)

4 releases (breaking)

new 0.4.0 May 6, 2024
0.3.0 Sep 5, 2023
0.2.0 Feb 15, 2023
0.1.0 Jan 16, 2023

#1440 in Network programming

Download history 32/week @ 2024-01-14 58/week @ 2024-01-21 32/week @ 2024-01-28 26/week @ 2024-02-04 108/week @ 2024-02-11 73/week @ 2024-02-18 62/week @ 2024-02-25 124/week @ 2024-03-03 112/week @ 2024-03-10 172/week @ 2024-03-17 142/week @ 2024-03-24 168/week @ 2024-03-31 120/week @ 2024-04-07 82/week @ 2024-04-14 64/week @ 2024-04-21 139/week @ 2024-04-28

430 downloads per month
Used in 14 crates (2 directly)

Apache-2.0

50KB
917 lines

Cypheraddr: network addresses supporting SOCKS5, Tor, I2P, Nym and P2P pubkeys

Build Tests Lints codecov

crates.io Docs Apache-2 licensed

Rust library providing a set of address data types with minimal dependencies which allow simple use of.

  • Tor, Nym, I2P and other mix networks and SOCKS proxies;
  • P2P addresses with node public keys.

The crate may be used in a way that prevents using DNS names (outside mixnet scope).

The library is a part of rust cyphernet suite.

Manifest

Name: cypheraddr
Type: Library
Kind: Free software
License: Apache-2.0
Language: Rust
Compiler: 1.65
Author: Maxim Orlovsky
Maintained: Cyphernet DAO, Switzerland
Maintainers:
  Maxim Orlovsky:
    GitHub: @dr-orlovsky
    GPG: EAE730CEC0C663763F028A5860094BAF18A26EC9
    SSH: BoSGFzbyOKC7Jm28MJElFboGepihCpHop60nS8OoG/A
    EMail: dr@orlovsky.ch
  Alexis Sellier:
    GitHub: @cloudhead
    SSH: iTDjRHSIaoL8dpHbQ0mv+y0IQqPufGl2hQwk4TbXFlw

Overview

Network addresses provided by the library include the following types:

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

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

  • 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.

Documentation

API reference documentation for the library can be accessed at https://docs.rs/cypheraddr/.

Licensing

The libraries are distributed on the terms of Apache 2.0 opensource license. See LICENCE file for the license details.

Dependencies

~0.5–2MB
~27K SLoC