Boost logo

Boost :

Subject: [boost] boost::asio and I2P connection handling.
From: Janusz Zradomia (tiguask_at_[hidden])
Date: 2015-08-05 10:11:06

Hello. I would like to extend the ASIO (in boost::asio) by adding support
for new virtual protocols.

For example i2p, it is similar to Tor but it works with equivalent of
.onion hidden servers, and is not used to connect to "normal Internet"

It works like this:
- the end-points, equivalent of the ip4/ip6 address, is a very long string
(around 500-1000 characters, it is technically the public key of data)
- the end-point address is often expressed as shorter version of the
address, that is around 50 characters afair, in two possible formats (b32
and b64)
- user can create new i2p listening socket for TCP-like data (for stream of
bytes), or for UDP-like data (message oriented). On creation of the
listening socket you can get a new own "address" as above. Or, you can on
creation/before creation tell it to reuse an previously created address by
providing the std::string with private key of it (that you saved previously)
- user can connect to an i2p address. When connecting, he is getting a new
endpoint from which he connects, or he can reuse old one by loading the
private key as above.
- there exists naming lookup system, that allows to convert domain-name
strings like "zzz.i2p" into proper i2p address

Can I add such new class of protocol on top of ASIO?
Which classes I need to extend (create child class)?
Where exactly would each of the listed above functions go?

Boost list run by bdawes at, gregod at, cpdaniel at, john at