Ire: the I2P Rust engine
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
- Signing
- 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:
-
Create a
router.toml
file and configure the router. Seeexamples/router.toml
for available configuration options. -
Run the router:
$ RUST_LOG=ire=debug cargo run --features cli --release router router.toml
- Generate keys for the client:
$ cargo run --features cli --release cli gen client.router.keys.dat
- 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-2023 The Ire Developers. See LICENSE.txt for further details.