|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +set -e |
| 4 | +WORKSPACE=$(pwd) |
| 5 | + |
| 6 | +AUTO_INSTALL_TOOLS=${AUTO_INSTALL_TOOLS:-true} |
| 7 | +if [ "${AUTO_INSTALL_TOOLS}" == "true" ]; then |
| 8 | + DEBIAN_FRONTEND=noninteractive apt update && apt install -y git make autoconf libtool android-tools-adb unzip wget |
| 9 | +fi |
| 10 | + |
| 11 | +# https://developer.android.com/ndk/downloads/ |
| 12 | +export ANDROID_NDK_ROOT=${ANDROID_NDK_ROOT:-${WORKSPACE}/android-ndk-r26b} |
| 13 | +if [ ! -e ${ANDROID_NDK_ROOT} ]; then |
| 14 | + wget -q https://dl.google.com/android/repository/android-ndk-r26b-linux.zip |
| 15 | + unzip android-ndk-r26b-linux.zip |
| 16 | +fi |
| 17 | +PATH="${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH" |
| 18 | + |
| 19 | +# Compile OpenSSL |
| 20 | +export OPENSSL_ALL_CIPHERS="-cipher ALL -ciphersuites TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:TLS_AES_128_CCM_8_SHA256" |
| 21 | +if [ ! -e ${WORKSPACE}/openssl ]; then |
| 22 | + git clone https://github.com/openssl/openssl.git ${WORKSPACE}/openssl |
| 23 | + cd ${WORKSPACE}/openssl && \ |
| 24 | + ./Configure android-x86_64 --prefix=${WORKSPACE}/openssl-install && \ |
| 25 | + sed -i 's/-ldl//g' Makefile && \ |
| 26 | + sed -i 's/-pie//g' Makefile && \ |
| 27 | + make -j && \ |
| 28 | + make -j install |
| 29 | +fi |
| 30 | +export LD_LIBRARY_PATH="${WORKSPACE}/openssl-install/lib64:$LD_LIBRARY_PATH" |
| 31 | + |
| 32 | +# Compile WolfSSL |
| 33 | +export WOLFSSL_CONFIG_OPTS='--enable-debug --enable-opensslcoexist --enable-cmac --enable-keygen --enable-sha --enable-aesctr --enable-aesccm --enable-x963kdf --enable-compkey --enable-certgen --enable-aeskeywrap --enable-enckeys --enable-base16 --enable-aesgcm-stream --enable-curve25519 --enable-curve448 --enable-ed25519 --enable-ed448 --enable-pwdbased' |
| 34 | +export WOLFSSL_CONFIG_CPPFLAGS=CPPFLAGS="-I${WORKSPACE}/openssl-install -DHAVE_AES_ECB -DWOLFSSL_AES_DIRECT -DWC_RSA_NO_PADDING -DWOLFSSL_PUBLIC_MP -DECC_MIN_KEY_SZ=192 -DHAVE_PUBLIC_FFDHE -DHAVE_FFDHE_6144 -DHAVE_FFDHE_8192 -DFP_MAX_BITS=16384 -DWOLFSSL_DH_EXTRA -DWOLFSSL_PSS_LONG_SALT -DWOLFSSL_PSS_SALT_LEN_DISCOVER" |
| 35 | +export UNAME=Android |
| 36 | +export CROSS_COMPILE=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android34- |
| 37 | +export CC=x86_64-linux-android34-clang |
| 38 | +if [ ! -e ${WORKSPACE}/wolfssl ]; then |
| 39 | + git clone https://github.com/wolfssl/wolfssl ${WORKSPACE}/wolfssl |
| 40 | + cd ${WORKSPACE}/wolfssl && \ |
| 41 | + ./autogen.sh && \ |
| 42 | + ./configure ${WOLFSSL_CONFIG_OPTS} "${WOLFSSL_CONFIG_CPPFLAGS}" -prefix=${WORKSPACE}/wolfssl-install --host=x86_64-linux-android --disable-asm CFLAGS=-fPIC && \ |
| 43 | + make -j install |
| 44 | +fi |
| 45 | +export LD_LIBRARY_PATH="${WORKSPACE}/wolfssl-install/lib:$LD_LIBRARY_PATH" |
| 46 | +export LIBRARY_PATH="${WORKSPACE}/wolfssl-install/lib:$LIBRARY_PATH" |
| 47 | + |
| 48 | +# If running in wolfProvider/IDE/Android, then 'ln -s ../../ wolfProvider' |
| 49 | +if [ ! -e ${WORKSPACE}/wolfProvider ]; then |
| 50 | + git clone https://github.com/wolfssl/wolfProvider ${WORKSPACE}/wolfProvider |
| 51 | +fi |
| 52 | +cd ${WORKSPACE}/wolfProvider && \ |
| 53 | + ./autogen.sh && \ |
| 54 | + ./configure --with-openssl=${WORKSPACE}/openssl-install --with-wolfssl=${WORKSPACE}/wolfssl-install --host=x86_64-linux-android CFLAGS="-lm -fPIC" --enable-debug && \ |
| 55 | + make -j |
0 commit comments