Are there any official reproducible tor/obfs4proxy binaries?

Hello all!

Nico here from Briar, a p2p messenger making use of Tor to deliver messages directly to one’s contact when the Internet is available (Briar can also synchronize by other means).

Currently, Briar is building its own reproducible tor and obfs4proxy binaries with the help of two tor-reproducer and go-reproducer scripts. This is quite tedious because we also build zlib, openssl and libevent beside Tor each time, while targeting all Android platforms, Windows/x86, macOS/x86 & ARM, Linux/x86 & ARM.

For example, this time I was adding Windows support to our Tor reproducers, but now all Linux builds are failing due to tor saying “checking whether we need extra options to link openssl… configure: error: Found linkable openssl in /opt/tor-reproducer/tor-android/prefix, but it does not seem to run, even with -R. Maybe specify another using --with-openssl-dir}”. Anyway, that’s a topic for another time.

I was told that back in the old days Tor wasn’t publishing any reproducible tor and obfs4proxy binaries and I wanted to ask: has this changed in the meantime?

When adding Windows support, I first tried using Tor Browser’s tor binaries which worked like a charm. Are you publishing these binaries somewhere, so we don’t have to extract them from the Tor Browser bundle?

Once we’ve built the tor and obfs4proxy binaries, we’re publishing them via Maven to later use them in our all-Java project. Having an official Tor maven repository would be more than awesome, but starting with just some official binaries is more than fine, too.

If this sounds all too difficult for you: is there maybe any other way to include Tor in our project?

Thanks a lot for everything at Tor (also for starting this forum)!

Nico

1 Like

Is this the right place to ask? Or should I do so somewhere else?

EDIT: Updated the $platform variable definitions

We don’t currently publish them, but you should be able to easily/reproducibly build them yourself by building only the obs4 binaries within tor-browser-build ( https://git.torproject.org/builders/tor-browser-build.git ) by:

./rbm/rbm build obfs4 --target $flavor --target $platform

where

  • flavor: one of [release, alpha, nightly]
  • platform: one of [torbrowser-linux-x86_64, torbrowser-linux-i686, torbrowser-windows-x86_64, torbrowser-windows-i686, torbrowser-osx-x86_64, torbrowser-android-armv7, torbrowser-android-x86, torbrowser-android-x86_64, torbrowser-android-aarch64]

see the Makefile in tor-browser-build root for other invocation examples

This will require you to build a lot of stuff the first time (go, dependencies, compilers, etc) but after this initial pain rbm will reuse any build artifacts that haven’t changed for the next rebuild.

4 Likes

Created a new ticket to address this: Create a new build target to package tor daemon, pluggable transports and dependencies (#40397) · Issues · The Tor Project / Applications / tor-browser-build · GitLab

1 Like

Awesome, thanks a lot, @richard! I’ll continue commenting there then, once my Tor GitLab account is approved :slightly_smiling_face: