Skip to content

Releases: eepnet/emissary

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 12 Apr 09:07

This release stabilizes the SSU2 transport and brings IPv6 support to both NTCP2 (#322) and SSU2 (#323). Simplified bandwidth metering has been implemented (#324) and the router configuration now supports specifying a bandwidth limit and a share percentage. The defaults are 1 MB/s and 90% (router class P).

PQ hybrid support has been implemented for destinations (#329), NTCP2 (#331) and SSU2 (#334). The crypto used by destinations can be controlled with i2cp.leaseSetEncType (default is 6,4). [ntcp2] and [ssu2] have ml_kem and disable_pq options which allow controlling the PQ-related behavior of the transports. See router configuration documentation for NTCP2 and SSU2 for more details.

Added

  • ssu2: Implement peer test protocol (#266)
  • sam: Add support for QUIT/EXIT/STOP (#268)
  • cli: Implement RouterCommand::RouterUiDev (#301)
  • ssu2: Introduce RelayManager (#306)
  • ssu2: Implement support for fragmented RouterInfos (#318)
  • ssu2: Add support for RouterInfo compression (#319)
  • ntcp2: Implement idle timeouts (#321)
  • ntcp2: Add IPv6 support (#322)
  • ssu2: Add IPv6 support (#323)
  • core: Implement simple bandwidth metering (#324)
  • ssu2: Implement connection migration (#327)
  • session: Add support for PQ Hybrid ECIES-x25519-AEAD-Ratchet (#329)
  • ntcp2: Add support for PQ hybrid connections (#331)
  • ssu2: Add support for PQ hybrid connections (#334)
  • cli/socks: Add outproxy support (#335)

Changed

  • core: Introduce SubsystemManager (#247)
  • core: Add more metrics (#251)
  • ssu2: Check clock skew (#252)
  • docs: Improve router configuration documentation (#256)
  • ssu2: Share R::UdpSocket between sessions (#257)
  • streaming: Make opening a stream more aggressive (#262)
  • core: Address warning about private macro usage (#270)
  • core: Expose I2CP port in ProtocolAddressInfo (#271)
  • ssu2: Refactor TransmissionManager (#274)
  • transit: Close tunnels which have no activity after 2 minutes (#275)
  • docs: Improve docs (#280)
  • ci: Use nextest (#281)
  • core: Decrease the time it takes to run tests by using tokio::test's start_paused (#282)
  • Be precise when marking tests with start_paused, make investigation for #288 easier (#289)
  • ssu2: Refactor Detector (#290)
  • cli: Specify which client tunnel exited (#296)
  • cli/http: Allow specifying HTTP Proxy tunnel lengths (#297)
  • ssu2: Add support for parallel peer tests (#300)
  • core: Use userspace CRNG seeded by a system RNG (#302)
  • core: Add fuzzers for SAM, I2CP, SSU2 and NTCP2 (#307)
  • primitives: Refactor RouterAddress (#309)
  • ssu2: Request introducers if the router is firewalled (#313)
  • transport: Add introducer support to TransportManager (#314)
  • ssu2: Implement outbound relay support (#315)
  • transport: Refactor firewall/external address handling (#316)
  • transit: Remove total_bandwidth (#317)
  • cli/ui: Upgrade iced (#320)
  • transport: Add more metrics (#326)
  • cli/http: Allow specifying port for HTTP outproxy (#332)
  • cli: Enable SSU2 by default (#336)
  • docs: Update documentation (#337)

Fixed

  • ssu2: Terminate inbound connection if outbound connection is pending (#249)
  • transport: Reject dial requests if the router is already connected (#250)
  • ssu2: Inform transport manager when a connection has been terminated (#255)
  • streaming: Resend reply SYN if it doesn't get acknowledged (#259)
  • i2cp: Treat options field of GetDate as optional (#261)
  • core: Fix fuzz tests (#269)
  • tunnel: Fix flaky exploratory_tunnel_test (#276)
  • transit: Improve transit tunnel cleanup logic (#279)
  • cli: Fix configuration tests (#298)
  • docs: Add Runtime trait parameter to examples (#303)
  • cli: Decrease mock update interval to 250 milliseconds (#305)
  • cli/ui: Improve subscription address validation (#311)
  • util: Use correct protocol for SSU2 NAT-PMP port mapping (#312)
  • core: Fix bugs (#328)
  • tunnel: Return random inbound/outbound tunnel (#330)
  • cli: Do not add duplicate entries to addres book (#333)

Thanks to @bheesham, @hizani and @Shrike05 for their contributions!

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 04 Feb 20:05

v0.3.1 contains a fix that hopefully alleviates some of the issues caused by the ongoing attack.

Update to the latest version: cargo install emissary-cli --locked --force

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 13 Dec 10:58

NOTE: Old address book file ($HOME/.emissary/addressbook/addresses) must be removed due to breaking changes made to address book format

Added

  • ssu2: Implement congestion control (#115)
  • cli/http: Add outproxy support (#118)
  • ssu2: Add metrics (#133)
  • sam: Add support for primary sessions (#165)
  • cli: Implement SOCKS proxy (#175)
  • util: Replace async-std with smol (#169)
  • cli: Add Base64 encoding/decoding as built-in router commands (#207)
  • cli: Implement RouterCommand::Devnet (#233)
  • core: Add support for Datagram2 (#226)
  • Add documentation for embedding emissary (#240)

Changed

  • util: Refactor reseed logic (#105)
  • session: Make ratchet threshold configurable (#106)
  • cli/http: Use .b32.i2p hostnames in HTTP requests (#116)
  • cli: Generate random port for NTCP2 (#126)
  • sam: Validate tunnel lengths (#144)
  • sam: Validate tunnel lengths and quantities (#154)
  • session: Verify DateTime blocks (#161)
  • sam: Add MASTER alias for PRIMARY sessions (#177)
  • ntcp2: Check clock skew (#179)
  • ssu2: Fix SessionCreated custom network ID test (#181)
  • sam: Reimplement Datagram::parse() using nom (#200)
  • runtime: Convert Runtime::UdpSocket to use async/await (#211)
  • primitives: Check offline signature expiration timestamp (#219)
  • primitives: Use ElGamal key type in destinations (#220)
  • core: Introduce error types for parsers (#221)
  • cli: Change the on-disk format of address book files (#222)
  • core: Gate event system behind a feature flag (#224)
  • cli: Implement add/remove API for AddressBook (#227)
  • cli/ui: Overhaul the native router UI (#228)
  • util: move Storage to emissary-util (#234)
  • util: Move PortMapper to emissary-util (#237)

Fixed

  • datagram: Drop datagrams originating from DSA-SHA1 destinations (#103)
  • transport: fix regression for undialable routers (b0cb1c5)
  • streaming: handle missing routing path gracefully (7cbf025)
  • ssu2: Handle invalid SessionConfirmed messages gracefully (#146)
  • core: Parse SAM private key correctly (#203)
  • ssu2: Decrypt Data payload in OutboundSsu2Session::on_data() (#215)
  • streaming: Send Base64-encoded destination to non-silent listeners (#236)

Thanks to @hizani, @kralverde and @sjlgasnier for their contributions!

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 23 Apr 18:14

Added

  • cli: implement browser ui (d96ed00)
  • session: Respond to ACK requests if no traffic is sent (#78)
  • session: Respond to NextKey if no traffic is sent (#87)

Changed

  • netdb: remove chrono (#72)
  • tunnel: Drop expired I2NP fragments (#73)
  • util: Return associated type from Runtime::delay (#80)
  • verify datagram signature (#83)
  • primitives: Implement a HashMap backend for Mapping (#86)

Fixed

  • tunnel: randomize tunnel build record order (d3622f8)
  • Update tunnel build code to match specification (#82)
  • ssu2: Improve pending inbound/outbound sessions (#97)
  • sam: set highest supported version to v3.2 (30e97f1)
  • profile: accept G/E routers to profile storage (d1e3ae1)

Thanks to @hizani and @kralverde for their contributions!