[tor-bugs] #23684 [Core Tor/Tor]: Make it easier for mobile app developers to embed tor

Tor Bug Tracker & Wiki blackhole at torproject.org
Thu Sep 28 17:45:17 UTC 2017


#23684: Make it easier for mobile app developers to embed tor
------------------------------+--------------------
     Reporter:  hellais       |      Owner:  (none)
         Type:  enhancement   |     Status:  new
     Priority:  Medium        |  Milestone:
    Component:  Core Tor/Tor  |    Version:
     Severity:  Normal        |   Keywords:
Actual Points:                |  Parent ID:
       Points:                |   Reviewer:
      Sponsor:                |
------------------------------+--------------------
 The use-case that we are trying to improve is the following:

 I am mobile app developer and I want to use Tor as part of my software and
 possibly instrument it in some way via it's control port.

 See also: https://github.com/measurement-kit/measurement-kit/issues/86

 The current situation of Tor integration on mobile platforms is a bit
 suboptimal. The best solution would allow developers to "execute" Tor in
 the same way on all platforms uniformly.

 Currently the approaches taken for integrating Tor into mobile apps is one
 of two:

 a) Tor is started as a process and the user speaks to it via the control
 port (this is only possible on Android though).
 Example: OrBot

 b) The tor `main()` is wrapped and is called as part of some wrapper
 library written in the platform native language (this approach is the most
 common one on iOS).
 Example:
 [https://github.com/ChatSecure/Tor.framework/blob/master/Tor/HITorManager.m#L197
 Tor.Framework],
 [https://github.com/ursachec/CPAProxy/blob/master/CPAProxy/CPAThread.m#L75
 CPAProxy]

 Both of these approaches are not the easiest from a mobile app developers
 perspective.

 To make the developer experience easier, it would be best if some of the
 following things happened:

 1. The build process of tor allowed you to also get a shared library

 2. There is some API call or function that is documented and supported
 officially by the Tor library (1.) that allows the developer to start and
 stop tor.

 If these two things were supported in tor natively, it would be possible
 to pack tor as a [https://gradle.org/ gradle] and [https://cocoapods.org/
 cocoapod] dependency (which is the way in which mobile developers usually
 add dependencies to their project).

 The other problem is related to usage of pluggable transports, which tor
 expects to be able to fork and start them and is something that we cannot
 do on iOS.

 I suggest we can use this as a master ticket to track all the various
 improvements that are needed and attach child tickets for the various
 units of work that this can be split up into.

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


More information about the tor-bugs mailing list