#!/bin/bash # # aria_cmake_build_test.sh # # This is a test script for building wolfSSL examples with various settings # for the ARIA Magic Crypto ciphers. # # See https://github.com/wolfSSL/wolfssl/pull/6400 and # https://github.com/wolfSSL/wolfssl/pull/6600 # # The basic steps for building: # # # set to your path # export ARIA_DIR=/mnt/c/workspace/MagicCrypto # # mkdir -p out # pushd out # cmake .. -DWOLFSSL_ARIA=yes # cmake --build . # # # View the available ciphers with: # ./examples/client/client -e # # or with grep: # ./examples/client/client -e | grep -i ARIA # # Note the OPENSSL_EXTRA and WOLF_CRYPTOCB macros may need to be defined # in certain circumstances. The LD_LIBRARY_PATH=$ARIA_DIR may also be needed. # export ARIA_BUILD_DIR=./out_temp export ARIA_ERROR_RM_FAIL=1 export ARIA_ERROR_MKDIR_FAIL=2 export ARIA_ERROR_CMAKE_FAIL=3 export ARIA_ERROR_BUILD_FAIL=4 export ARIA_ERROR_CLIENT_FAIL=5 export ARIA_ERROR_CIPHER_FAIL=6 export ARIA_ERROR_CONFIG_FAIL=7 # # function build_aria_test() # build_aria_test() { local EXPECTED_ERROR=$1 # First parameter; 0, 1, 2, etc local EXPECTED_ARIA=$2 # Second parameter: typically "Y" or "N" local BUILD_MESSAGE=$3 # Third parameter; "some message" local BUILD_DIR=$4 # Fourth parameter: "./someDirectory" local BUILD_OPTION=$5 # Fifth parameter. Optional: "" echo "********************************************************************" echo "Starting $BUILD_MESSAGE" echo "********************************************************************" if [[ -z "$BUILD_DIR" ]]; then local BUILD_DIR=out fi echo "BUILD_DIR=$BUILD_DIR" echo "BUILD_OPTION=$BUILD_OPTION" # remove build directory rm -rf $BUILD_DIR if [ $? -eq 0 ]; then echo "$BUILD_DIR removed." else echo "Failed to remove directory." return $ARIA_ERROR_RM_FAIL fi # create a fresh directory mkdir -p $BUILD_DIR if [ $? -eq 0 ]; then echo "$BUILD_DIR created." else echo "Failed to create directory $BUILD_DIR" return $ARIA_ERROR_MKDIR_FAIL fi # change into build directory pushd $BUILD_DIR # initial cmake echo "********************************************************************" echo "CMake for $BUILD_MESSAGE" if [ -z "$BUILD_OPTION" ]; then echo "(No additional build options)" else echo "Using build option: $BUILD_OPTION" fi echo "********************************************************************" cmake .. $BUILD_OPTION if [ $? -eq 0 ]; then echo "cmake successful." else echo "ERROR: cmake failed" return $ARIA_ERROR_CMAKE_FAIL fi # build echo "********************************************************************" echo "Build for $BUILD_MESSAGE" if [ -z "$BUILD_OPTION" ]; then echo "(No additional build options)" else echo "Using build option: $BUILD_OPTION" fi echo "********************************************************************" cmake --build . if [ $? -eq 0 ]; then echo "cmake build successful." else echo "ERROR: cmake build failed" return $ARIA_ERROR_BUILD_FAIL fi # View the available ciphers with: echo "checking wolfsl client ssl version numbers SSLv3(0) - TLS1.3(4):" ./examples/client/client -V if [ $? -eq 0 ]; then echo "Confirmed ./examples/client/client operational." else echo "ERROR ./examples/client/client error = $?" return $ARIA_ERROR_CLIENT_FAIL fi # now see if we have ARIA ciphers if ./examples/client/client -e | awk '/ARIA/{found=1} END{exit !found}'; then if [ "$EXPECTED_ARIA" == "Y" ]; then echo "Found ARIA ciphers as expected." else echo "ERROR: Found ARIA ciphers when NOT expected." return $ARIA_ERROR_CIPHER_FAIL fi else if [ "$EXPECTED_ARIA" == "N" ]; then echo "No ARIA ciphers found as expected with ./examples/client/client -e" else echo "ERROR: No ARIA ciphers found, EXPECTED_ARIA parameter = \"$EXPECTED_ARIA\"; expected \"N\"." return $ARIA_ERROR_CONFIG_FAIL fi fi ./examples/client/client -e echo "Return to working directory." popd echo "********************************************************************" echo "Completed $BUILD_MESSAGE" echo "********************************************************************" echo "" } set -e # No ARIA Environment Variable export ARIA_DIR= export THIS_MESSAGE="No ARIA Environment Variable, ARIA not enabled." build_aria_test 0 N "$THIS_MESSAGE" "$ARIA_BUILD_DIR" export ARIA_DIR= export THIS_MESSAGE="No ARIA Environment Variable, ARIA Enabled" build_aria_test 0 Y "$THIS_MESSAGE" "$ARIA_BUILD_DIR" "-DWOLFSSL_ARIA=yes" # ARIA Environment Variable with MagicCrypto in local user directory export ARIA_DIR=~/MagicCrypto export THIS_MESSAGE="ARIA Environment Variable with MagicCrypto in local user directory, ARIA not enabled." build_aria_test 0 N "$THIS_MESSAGE" "$ARIA_BUILD_DIR" export ARIA_DIR=~/MagicCrypto export THIS_MESSAGE="ARIA Environment Variable with MagicCrypto in local user directory, ARIA Enabled" build_aria_test 0 Y "$THIS_MESSAGE" "$ARIA_BUILD_DIR" "-DWOLFSSL_ARIA=yes" # ARIA Environment Variable with MagicCrypto in wolfssl directory export ARIA_DIR=~/MagicCrypto export THIS_MESSAGE="ARIA Environment Variable with MagicCrypto in wolfssl directory, ARIA not enabled." build_aria_test 0 N "$THIS_MESSAGE" "$ARIA_BUILD_DIR" export ARIA_DIR=./MagicCrypto export THIS_MESSAGE="ARIA Environment Variable with MagicCrypto in wolfssl, ARIA Enabled" build_aria_test 0 Y "$THIS_MESSAGE" "$ARIA_BUILD_DIR" "-DWOLFSSL_ARIA=yes" # ARIA Environment Variable with bad directory, ARIA not enabled so bad directory ignored export ARIA_DIR=./UnknownDirectory export THIS_MESSAGE="ARIA Environment Variable with bad directory, ARIA not enabled." build_aria_test 0 N "$THIS_MESSAGE" "$ARIA_BUILD_DIR" # ARIA Environment Variable with bad directory, ARIA enabled so bad directory should fail set +e export ARIA_DIR=./UnknownDirectory export THIS_MESSAGE="ARIA Environment Variable with bad directory, ARIA Enabled" build_aria_test $ARIA_ERROR_CMAKE_FAIL N "$THIS_MESSAGE" "$ARIA_BUILD_DIR" "-DWOLFSSL_ARIA=yes" if [ $? -eq $ARIA_ERROR_CMAKE_FAIL ]; then echo "Properly detected bad directory and failed as expected." else echo "Error: expected failure not detected." exit 1 fi echo "Done. aria_cmake_build_test completed successfully!" exit 0