Skip to content


Subversion checkout URL

You can clone with
Download ZIP
OpenSSL for Shou
C Perl Assembly C++ Shell eC
Branch: master
Failed to load latest commit information.
android.testssl openssl-1.0.1e upgrade
apps openssl-1.0.1e upgrade
crypto Merge with Android's Merge "openssl-1.0.1e upgrade"
include/openssl Fix Clang build.
jni Use armeabi-v7a-hard
patches Fix Clang build.
ssl Fix Clang build.
.gitignore Only build armeabi-v7a merge build configs Merge with Android's Merge "openssl-1.0.1e upgrade" Add cleanspec for engine change merge build configs Only build static library
MODULE_LICENSE_BSD_LIKE auto import from //depot/cupcake/@135843
NOTICE Upgrade to openssl-1.0.0d Move more build configuration to openssl.config
README.txt updated README with new info about android openssl repo and what i did merge build configs Only build static library Auto-generate configuration flags. Auto-generate configuration flags. Move more build configuration to openssl.config builds using ndk-build from NDKr5b
e_os.h openssl-1.0.1 upgrade
e_os2.h openssl-1.0.1 upgrade Move more build configuration to openssl.config
openssl.config Move more build configuration to openssl.config
openssl.version openssl-1.0.1e upgrade

OpenSSL on the Android platform.

The code in this directory is based on $OPENSSL_VERSION in the file
openssl.version. See patches/README for more information on how the
code differs from $OPENSSL_VERSION.

Porting New Versions of OpenSSL.

The following steps are recommended for porting new OpenSSL versions.

1) Retrieve the appropriate version of the OpenSSL source from (in openssl-*.tar.gz file). Check the PGP
   signature (found in matching openssl-*.tar.gz.asc file) with:

     gpg openssl-*.tar.gz.asc

   If the public key is not found, import the the one with the
   matching RSA key ID from, using:

     gpg --import # paste PGP public key block on stdin

2) Update the variables in openssl.config and openssl.version as appropriate.
   At the very least you will need to update the openssl.version.

3) Run:

     ./ import openssl-*.tar.gz

4) If there are any errors, then modify openssl.config, openssl.version
   and patches in patches/ as appropriate.  You might want to use:

     ./ regenerate patches/*.patch

   Repeat step 3.

5) Cleanup before building with:

     m -j16 clean-libcrypto clean-libssl clean-openssl clean-ssltest

6) Build openssl from the external/openssl directory with:

     mm -j16 snod && adb remount && adb sync system

   If there are build errors, then patches/*.mk, openssl.config, or may need updating.

7) Run tests to make sure things are working:

     # Run local openssl tests
     (cd android.testssl/ && ./
     # Build and sync libcore tests
     (croot && cd libcore && mm -j16 snod && adb remount && adb sync)
     # Run tests from libcore
     (croot && vogar --classpath out/target/common/obj/JAVA_LIBRARIES/core-tests_intermediates/classes.jar
     # Run tests from Harmony
     (croot && vogar --classpath out/target/common/obj/JAVA_LIBRARIES/apache-harmony-tests_intermediates/classes.jar
     # try an https website
     adb shell am start # confirm result in browser

     The vogar tool can be found externally at

     Quick installation instructions (without rebuilding from source):
        svn co $VOGAR
        mkdir -p $VOGAR/build/
        curl -o $VOGAR/build/vogar.jar

     Within Google, you can find it under:

     # You can also run openssl s_server as a test server on the device:
     adb push ./android.testssl/CAss.cnf /sdcard/CAss.cnf
     adb shell openssl req -config /sdcard/CAss.cnf -x509 -nodes -days 365 -subj '/C=US/ST=California/L=Mountain View/CN=localhost' -newkey rsa:1024 -keyout /sdcard/server.pem -out /sdcard/server.pem
     adb shell openssl s_server -cert /sdcard/server.pem -www -verify 1
     adb shell am start https://localhost:4433 # confirm result in browser

8) Do a full build before checking in:

     m -j16

Optionally, check whether build flags (located in CONFIGURE_ARGS in
openssl.config, plus some extras in, need to be updated.
Doing this step will help ensure that the compiled library is appropriately
optimized for speed and size.
Something went wrong with that request. Please try again.