ire
ire copied to clipboard
I2P router implementation in Rust
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
- [x] Ed25519
- Verifying
- [x] DSA
- [x] ECDSA_SHA256_P256
- [x] ECDSA_SHA384_P384
- [ ] ECDSA_SHA512_P521
- [x] RSA_SHA256_2048
- [x] RSA_SHA384_3072
- [x] RSA_SHA512_4096
- [x] Ed25519
- [x] ElGamal
- [x] AES256
- Signing
- I2NP
- [x] Message parsing
- [ ] Message handling
- NetDB
- [x] Local storage
- [ ] Persistence to disk
- [x] Reseeding
- [x] Lookups
- [x] Expiry
- [x] Exploration
- [ ] Publishing
- [ ] Floodfill
- Transports
- [x] Transport manager
- NTCP
- [x] Handshake
- [x] Session tracking
- [x] Automatic session creation
- NTCP2
- [x] Handshake
- [x] Session tracking
- [x] 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.tomlfile and configure the router. Seeexamples/router.tomlfor 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 The Ire Developers. See LICENSE.txt for further details.