Coder Social home page Coder Social logo

cyphernet-dao / rust-cyphernet Goto Github PK

View Code? Open in Web Editor NEW
46.0 2.0 9.0 484 KB

Cyphernet is a set of libraries for privacy-preserving networking apps

License: Apache License 2.0

Rust 100.00%
cypherpunk i2p noise-framework noise-protocol nym privacy rust tor cyphernet

rust-cyphernet's Introduction

Cyphernet: privacy-preserving networking & internet applications

Build Tests Lints codecov

crates.io Docs Apache-2 licensed

This repository provides a set of libraries for privacy-preserving networking & internet applications written in rust.

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

Manifest

Name: cyphernet
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: [email protected]
  Alexis Sellier:
    GitHub: @cloudhead
    SSH: iTDjRHSIaoL8dpHbQ0mv+y0IQqPufGl2hQwk4TbXFlw

Overview

The library provides three main components, structured as modules:

  • Network addresses (sub-crate cypheraddr), 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 (sub-crate noise-framework) for end-to-end encrypted network communications.
  • SOCKS5 client (sub-crate socks5-client) for accessing Tor and other mixnets via proxy.

All the components has a minimal set of non-optional dependencies and short compile times. For instance, SOCKS5 proxy and cyphernet addresses both have zero non-optional dependencies.

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:

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

Documentation

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

About cyphernet

Cyphernet is a conceptual approach for a privacy-preserving networking, based on the following stack of layers:

Cyphernet stack

Licensing

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

rust-cyphernet's People

Contributors

dr-orlovsky avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

rust-cyphernet's Issues

Make certain dependencies optional

It would be nice if eidolon-auth and sha3 were made optional, so that we don't have to depend on them if we don't use them. I'm not sure where sha3 is currently used actually, or if it's needed somewhere I'm not realizing.

sha3 is currently being pulled by cypheraddr
eidolon-auth is being pulled by cyphernet

Allow `Ed25519` with Noise

Currently if you set:

    const CURVE_NAME: &'static str = "Ed25519";

In cyphernet::EcPk and try to use that for Noise, you get:

thread '' panicked at 'not implemented: curve Ed25519 is not supported by the Noise library', /noise-framework-0.2.0/src/state.rs:275:17

We should either remove that associated constant, or not panic, since we now are supporting ECDH on Ed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.