Skip to content
This repository

An open-source, privacy-enhancing web browser for iOS, utilizing the Tor anonymity network

This branch is 1 commit ahead and 336 commits behind master

Fetching latest commit…

Cannot retrieve the latest commit at this time

README.markdown

Onion Browser

Early-stage WIP. Goal is to create an iOS web browser that sends all traffic over the Tor network which is also open source.

Current Progress

Currently contains a build chain for creating the library dependencies for a universal i386 (iPhoneSimulator) and armv6/armv7 (iPhone/iPad) application containing tor and it's dependencies libevent and openssl.

Build scripts based on build-libssl.sh from x2on/OpenSSL-for-iPhone


Building dependencies

Run the commands in the following order.

bash build-libssl.sh
bash build-libevent.sh
bash build-tor.sh

OpenSSL 1.0.1 ARM w/ASM-Acceleration

NOTE (2/25/2012): This branch is broken: I have no idea what I am doing in assembly. (Tor does not run due to my fudging of symbols such as _armv7_tick.)

A patch is located at patches/openssl-1.0.1-beta3-armv7-asm.diff which enables building a custom BSD-asm target that enables the armv4_asm assembly files (originally written for linux-armv4 and android-armv7). The patch isn't compatible with other targets because the Apple version of the AS assembler is not compatible with the modern GNU implementation due to it being based on an extremely old fork — the patch rewrites some of the *.S files (or the perl scripts which generate them) to be compatible with the Apple assembler:

  • The .global pseudo-op was changed to .globl.
  • Some pseudo-ops were entirely removed (.type, .size, .fpu, etc.)
  • I screwed around with variable scope to allow the assembled files to link properly. Generally converted .comm pseudo-ops to .lcomm, manually added leading underscore for private symbol names, etc. (BUT SEE DISCLAIMER BELOW)

Initial tests are promising (see [docs/openssl-arm-asm.txt][bench_doc]): approx. a 30% speed improvement on an iPhone 4S (armv7) on a totally contrived, simplistic, artificial benchmark on SHA256 and SHA512. (But hey, the test also shows that the patched library compiles and that at least some of it generates expected values.)

To use this, build openssl with build-libssl-arm.sh instead of build-libssl.sh in the "Building dependencies" instructions above.


DISCLAIMER FOR THIS ARM-ASM PATCH: I don't know assembly and this patch is the result of me Googling DuckDuckGo-ing and using trial-and-error based on**:

Something went wrong with that request. Please try again.