[tor-bugs] #29285 [Circumvention/Pluggable transport]: Improve the PT spec and how PTs interface with Tor

Tor Bug Tracker & Wiki blackhole at torproject.org
Thu Jun 13 17:39:40 UTC 2019


#29285: Improve the PT spec and how PTs interface with Tor
-------------------------------------------------+-------------------------
 Reporter:  cohosh                               |          Owner:  phw
     Type:  project                              |         Status:
                                                 |  assigned
 Priority:  High                                 |      Milestone:
Component:  Circumvention/Pluggable transport    |        Version:
 Severity:  Normal                               |     Resolution:
 Keywords:  network-team-roadmap-2019-Q1Q2,      |  Actual Points:
  anti-censorship-roadmap                        |
Parent ID:                                       |         Points:  15
 Reviewer:                                       |        Sponsor:
                                                 |  Sponsor28-must
-------------------------------------------------+-------------------------

Comment (by dcf):

 Replying to [comment:5 phw]:
 > And here's an incomplete list of existing library implementations:

 Really there are two types of PT implementations, or three if you count PT
 2.0 additions. There aren't really standard names for these.
 1. IPC manager/dispatcher. As far as I know, tor and
 [https://github.com/twisteroidambassador/ptadapter] are the only two
 implementations of this. This is the thing that sets e.g.
 `TOR_PT_MANAGED_TRANSPORT_VER` and manages subprocesses of type (2).
 2. IPC transport/plugin. This is goptlib and pyptlib. It's a subprocess
 managed by an implementation of type (1). This is the thing that writes
 e.g. `CMETHOD` to stdout.
 3. From PT 2.0, there are also plugin/transport implementations that you
 are meant to link with directly in the same executable, without going
 through the IPC interface. There are [https://github.com/Pluggable-
 Transports/Pluggable-Transports-
 spec/blob/master/releases/PTSpecV2.1Draft1/Pluggable%20Transport%20Specification%20v2.1%20-%20Go%20Transport%20API%20v2.1%2C%20Draft%201.pdf
 Go] and [https://github.com/Pluggable-Transports/Pluggable-Transports-
 spec/blob/master/releases/PTSpecV2.1Draft1/Pluggable%20Transport%20Specification%20v2.1%20-%20Swift%20Transport%20API%20v1.0%2C%20Draft%201.pdf
 Swift] API spec. From talking to Brandon Wiley, my understanding is that
 everything that uses PT other than tor and ptadapter uses such an API, or
 something like it, not the IPC model.
 [https://github.com/OperatorFoundation/shapeshifter-dispatcher
 shapeshifter-dispatcher] converts implementations of type (3) into type
 (2).

 The [https://github.com/Pluggable-Transports/Pluggable-Transports-
 spec/blob/master/releases/PTSpecV2.1Draft1/Pluggable%20Transport%20Specification%20v2.1%20-%20Base%20Specification%20v2.1%2C%20Draft%201.pdf
 Pluggable Transports Base Spec v2.1] calls types (1) and (2) "IPC" and
 type (3) "API".

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/29285#comment:7>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list