#!/bin/bash

# default setting(set latest version)
SCRYPTO_MAJOR_VER=2; SCRYPTO_MINOR_VER=5

# Associative array : SUPPORT_SCRYPTO[$TA_TARGET_SOC]=scrypto_version
declare -A SUPPORT_SCRYPTO=([exynos7885]=2.2 [exynos9810]=2.2 \
                            [sdm845]=2.2 [sdm670]=2.2 \
                            [sm8150]=2.4 [sm6150]=2.4 [sm7150]=2.4 [sdm710]=2.4 \
                            [sm8350]=2.5 [sm7325]=2.5 [sm7225]=2.5 [sm7250]=2.5 [sm8250]=2.5 [sm6115]=2.5 [sm7125]=2.5 \
                            [mt6768]=2.5 \
                            [sm8450]=2.6 [sm6225]=2.6)

function LOG_SCRYPTO () { echo "[SCRYPTO] $@"; }

function CHECK_ENABLED_CHIPSET() {
		if [[ "${SUPPORT_SCRYPTO[$TA_TARGET_SOC]}" == "2.6" ]]; then
            SCRYPTO_MAJOR_VER=2; SCRYPTO_MINOR_VER=6
			return 0
		elif [[ "${SUPPORT_SCRYPTO[$TA_TARGET_SOC]}" == "2.5" ]]; then
            SCRYPTO_MAJOR_VER=2; SCRYPTO_MINOR_VER=5
			return 0
		elif [[ "${SUPPORT_SCRYPTO[$TA_TARGET_SOC]}" == "2.4" ]]; then
            SCRYPTO_MAJOR_VER=2; SCRYPTO_MINOR_VER=4
		 	return 0
		elif [[ "${SUPPORT_SCRYPTO[$TA_TARGET_SOC]}" == "2.2" ]]; then
            SCRYPTO_MAJOR_VER=2; SCRYPTO_MINOR_VER=2
			return 0
		fi
	return 1
}

function SETUP_SCRYPTO() {
    # common code
    TZ_SCRYPTO_SDK_PATH=$TA_BUILD_ROOT/sdk/scrypto
    TZ_SCRYPTO_TARGET_OS=`echo $TZ_PLATFORM | tr '[A-Z]' '[a-z]'`

    if ! CHECK_ENABLED_CHIPSET; then
        LOG_SCRYPTO "Build configuration does not exist, use default setting : $TA_TARGET_SOC"
    fi

    case "$TZ_PLATFORM" in
        QSEE)
            ;;
        KINIBI)
            if [[ $TA_TARGET_SOC == "exynos9810" ]] && [[ $PROJECT_NAME == *"r7"* ]]; then # target model : r7
                SCRYPTO_MAJOR_VER=2; SCRYPTO_MINOR_VER=5
            elif [[ $TA_TARGET_SOC == "mt6768" ]]; then
                TZ_SCRYPTO_TARGET_OS="mediatek"
            fi
            ;;
        # TEEGRIS)
        #     LOG_SCRYPTO "Use SCrypto libs in TEEGRIS SDK"
        #     return 1
        #     ;;
        *)
            echo "Invalid TZ_PLATFORM($TZ_PLATFORM) variable"
            return 1
            ;;
    esac

    # set imprint module
    if [[ $SCRYPTO_MAJOR_VER -eq 2 ]] && [[ $SCRYPTO_MINOR_VER -ge 5 ]]; then
        IMPRINT_MODULE=imprint256
    else
        IMPRINT_MODULE=imprint
    fi

    TZ_SCRYPTO_VERSION=${SCRYPTO_MAJOR_VER}.${SCRYPTO_MINOR_VER}

    export TZ_SCRYPTO_BASE_PATH=$TZ_SCRYPTO_SDK_PATH/scrypto_v$TZ_SCRYPTO_VERSION
    export TZ_SCRYPTO_HEADER_PATH=$TZ_SCRYPTO_BASE_PATH/include
    export TZ_SCRYPTO_TOOLS_PATH=$TZ_SCRYPTO_BASE_PATH/tools
    export TZ_SCRYPTO_TOOLS_IMPRINT=$TZ_SCRYPTO_TOOLS_PATH/$IMPRINT_MODULE
    export TZ_SCRYPTO_LIB32=$TZ_SCRYPTO_BASE_PATH/libs/scrypto_v${TZ_SCRYPTO_VERSION}_x32_${TZ_SCRYPTO_TARGET_OS}_release.a
    export TZ_SCRYPTO_LIB64=$TZ_SCRYPTO_BASE_PATH/libs/scrypto_v${TZ_SCRYPTO_VERSION}_x64_${TZ_SCRYPTO_TARGET_OS}_release.a
    export TZ_SCRYPTO_VERSION

    LOG_SCRYPTO "TZ_SCRYPTO_VERSION      : $TZ_SCRYPTO_VERSION"
    LOG_SCRYPTO "TZ_SCRYPTO_BASE_PATH    : $TZ_SCRYPTO_BASE_PATH"
    LOG_SCRYPTO "TZ_SCRYPTO_HEADER_PATH  : $TZ_SCRYPTO_HEADER_PATH"
    LOG_SCRYPTO "TZ_SCRYPTO_LIB32        : $TZ_SCRYPTO_LIB32"
    if [[ "$TZ_PLATFORM" == "QSEE" ]]; then
        LOG_SCRYPTO "TZ_SCRYPTO_LIB64        : $TZ_SCRYPTO_LIB64"
    fi
    LOG_SCRYPTO "TZ_SCRYPTO_TOOLS_IMPRINT: $TZ_SCRYPTO_TOOLS_IMPRINT"

    return 0
}

SETUP_SCRYPTO