[tor-bugs] #28672 [Obfuscation/Snowflake]: Android reproducible build of Snowflake

Tor Bug Tracker & Wiki blackhole at torproject.org
Sat Mar 9 01:14:34 UTC 2019


#28672: Android reproducible build of Snowflake
-----------------------------------+---------------------------
 Reporter:  dcf                    |          Owner:  (none)
     Type:  project                |         Status:  new
 Priority:  Medium                 |      Milestone:
Component:  Obfuscation/Snowflake  |        Version:
 Severity:  Normal                 |     Resolution:
 Keywords:  android                |  Actual Points:
Parent ID:  #19001                 |         Points:
 Reviewer:                         |        Sponsor:  Sponsor19
-----------------------------------+---------------------------

Comment (by dcf):

 Replying to [comment:6 gk]:
 > dcf: do you have a script/instructions somewhere on how to build the
 whole thing which we could then translate into our `tor-browser-build`
 process? If you plan to do that work yourself, you are more than welcome!
 :). We'll likely put that on our plate otherwise.

 I didn't do anything beyond making sure that go-webrtc and snowflake would
 compile for Android, because I don't know how the pluggable transport
 integration works on Android. eighthave was showing us a `gomobile bind`
 setup that doesn't use separate executables (requires patching out
 `package main`) and I didn't know if that was how it was going to be done.

 I think that go-webrtc will only require minor changes in
 projects/webrtc/config and projects/snowflake/config. Here you can see the
 changes we made in the upstream build script:
   https://github.com/keroserene/go-webrtc/pull/90/files#diff-
 0b83f9dedf40d7356e5ca147a077acb4
 In projects/webrtc/config:
  * Set `TARGET_OS=android` `TARGET_CPU=arm`
  * Append `target_os = [ 'android' ]` to .gclient. I think it's safe to do
 across all targets, as it only affects what gets downloaded.
  * In `gclient sync`, `echo n` to not agree to the proprietary Google Play
 services license (also prevents the Play libraries from downloading). You
 could alternately patch out this check, etc.
  * In `gn gen`, set `symbol_level=0`. This is needed to actually disable
 debugging symbols; otherwise the libwebrtc is like 100 MB.
  * Upstream we are using Google's prebuilt arm-linux-androideabi-ar, but
 it would be better to build your own.
 In projects/snowflake/config:
  * Set `GOOS=android` `GOARCH=arm`.
  * You may have to copy webrtc-android-armeabi-v7a.pc over webrtc-linux-
 arm.pc, as in [https://gitlab.com/eighthave/snowflake/blob/master/.gitlab-
 ci.yml#L92 eighthave's script].

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


More information about the tor-bugs mailing list