Skip to content
I2P router implementation in Rust
Rust Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows
assets Test i2pseeds.su3 parsing Oct 10, 2018
examples Example router.toml Oct 23, 2018
src cargo update Dec 16, 2019
.gitignore Initial blank project Sep 2, 2017
.travis.yml Remove code coverage from Travis CI Nov 10, 2019
AUTHORS.md Readme, license, CoC etc. Sep 2, 2017
CODE_OF_CONDUCT.md
Cargo.lock
Cargo.toml config 0.10 Dec 16, 2019
LICENSE.txt
README.md Explore the netDB for RouterInfos Nov 23, 2018

README.md

Ire: the I2P Rust engine

Crates.io Build Status codecov

Ire is a Rust implementation of an I2P router, designed to participate in the global, decentralised I2P network.

Development Status

Ire is in pre-alpha; much of the internal architecture still needs to be defined and implemented.

Implemented Features

  • Cryptographic primitives
    • Signing
      • ECDSA_SHA256_P256
      • ECDSA_SHA384_P384
      • ECDSA_SHA512_P521
      • Ed25519
    • Verifying
      • DSA
      • ECDSA_SHA256_P256
      • ECDSA_SHA384_P384
      • ECDSA_SHA512_P521
      • RSA_SHA256_2048
      • RSA_SHA384_3072
      • RSA_SHA512_4096
      • Ed25519
    • ElGamal
    • AES256
  • I2NP
    • Message parsing
    • Message handling
  • NetDB
    • Local storage
    • Persistence to disk
    • Reseeding
    • Lookups
    • Expiry
    • Exploration
    • Publishing
    • Floodfill
  • Transports
    • Transport manager
    • NTCP
      • Handshake
      • Session tracking
      • Automatic session creation
    • NTCP2
      • Handshake
      • Session tracking
      • Automatic session creation
    • SSU

Usage

The binary implements a router, along with a basic client that can be used to test the various transports:

  1. Create a router.toml file and configure the router. See examples/router.toml for available configuration options.

  2. Run the router:

$ RUST_LOG=ire=debug cargo run --features cli --release router router.toml
  1. Generate keys for the client:
$ cargo run --features cli --release cli gen client.router.keys.dat
  1. Run a client:
$ RUST_LOG=ire=debug cargo run --features cli --release cli client client.router.keys.dat router.info [NTCP|NTCP2]

Code of Conduct

We abide by the Contributor Covenant and ask that you do as well.

For more information, please see CODE_OF_CONDUCT.md.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/str4d/ire

Copyright

Copyright (c) 2017 The Ire Developers. See LICENSE.txt for further details.

You can’t perform that action at this time.