5e63a70215
Introduces mixtcp, a smoltcp-based device that tunnels TCP/IP through the mixnet via IpMixStream and Exit Gateway IPRs. Components: - NymIprDevice: smoltcp::phy::Device impl using channel-based I/O - NymIprBridge: async task bridging the device to IpMixStream - create_device(): helper to set up the complete stack Examples: - cloudflare_ping: ICMP ping through the mixnet - https_client: HTTPS requests through the mixnet - tls: TLS connections through the mixnet
MixTCP
This is an initial proof of concept of a SmolTCP device that uses the Mixnet for transport. It relies on the IpMixStream module from the Rust SDK to set up a connection with an Exit Gateway's Ip-Packet-Router, meaning that this is the IP that is seen by the receiver of the request.
This can be used as the basis for building HTTP(S) crates on top of the Mixnet whilst abstracting away the complexities of using the Mixnet for transport.
More to come in the future.
examples/ contains examples for:
- a TLS ping with Cloudflare
- creating a
reqwest-like HTTPSGETrequest and receiving a response
Component Interaction
create_device()
|
+--------------+---------------+
| | |
v v v
NymIprDevice NymIprBridge IpPair
| | (10.0.x.x)
| |
+-- channels --+
|
v
IpMixStream
|
v
Mixnet