#!/bin/sh
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
#
# A Bourne shell script for running the NIST AES Algorithm Validation Suite
#
# Before you run the script, set your PATH, LD_LIBRARY_PATH, ... environment
# variables appropriately so that the fipstest command and the NSPR and NSS
# shared libraries/DLLs are on the search path.  Then run this script in the
# directory where the REQUEST (.req) files reside.  The script generates the
# RESPONSE (.rsp) files in the same directory.

BASEDIR=${1-.}
TESTDIR=${BASEDIR}/AES
COMMAND=${2-run}
REQDIR=${TESTDIR}/req
RSPDIR=${TESTDIR}/resp

cbc_kat_requests="
CBCGFSbox128.req
CBCGFSbox192.req
CBCGFSbox256.req
CBCKeySbox128.req
CBCKeySbox192.req
CBCKeySbox256.req
CBCVarKey128.req
CBCVarKey192.req
CBCVarKey256.req
CBCVarTxt128.req
CBCVarTxt192.req
CBCVarTxt256.req
"

cbc_mct_requests="
CBCMCT128.req
CBCMCT192.req
CBCMCT256.req
"

cbc_mmt_requests="
CBCMMT128.req
CBCMMT192.req
CBCMMT256.req
"

ecb_kat_requests="
ECBGFSbox128.req
ECBGFSbox192.req
ECBGFSbox256.req
ECBKeySbox128.req
ECBKeySbox192.req
ECBKeySbox256.req
ECBVarKey128.req
ECBVarKey192.req
ECBVarKey256.req
ECBVarTxt128.req
ECBVarTxt192.req
ECBVarTxt256.req
"

ecb_mct_requests="
ECBMCT128.req
ECBMCT192.req
ECBMCT256.req
"

ecb_mmt_requests="
ECBMMT128.req
ECBMMT192.req
ECBMMT256.req
"

if [ ${COMMAND} = "verify" ]; then
    for request in $cbc_kat_requests $cbc_mct_requests $cbc_mmt_requests $ecb_kat_requests $ecb_mct_requests $ecb_mmt_requests; do
	sh ./validate1.sh ${TESTDIR} $request
    done
    exit 0
fi

for request in $cbc_kat_requests; do
    response=`echo $request | sed -e "s/req/rsp/"`
    echo $request $response
    fipstest aes kat cbc ${REQDIR}/$request > ${RSPDIR}/$response
done
for request in $cbc_mct_requests; do
    response=`echo $request | sed -e "s/req/rsp/"`
    echo $request $response
    fipstest aes mct cbc ${REQDIR}/$request > ${RSPDIR}/$response
done
for request in $cbc_mmt_requests; do
    response=`echo $request | sed -e "s/req/rsp/"`
    echo $request $response
    fipstest aes mmt cbc ${REQDIR}/$request > ${RSPDIR}/$response
done
for request in $ecb_kat_requests; do
    response=`echo $request | sed -e "s/req/rsp/"`
    echo $request $response
    fipstest aes kat ecb ${REQDIR}/$request > ${RSPDIR}/$response
done
for request in $ecb_mct_requests; do
    response=`echo $request | sed -e "s/req/rsp/"`
    echo $request $response
    fipstest aes mct ecb ${REQDIR}/$request > ${RSPDIR}/$response
done
for request in $ecb_mmt_requests; do
    response=`echo $request | sed -e "s/req/rsp/"`
    echo $request $response
    fipstest aes mmt ecb ${REQDIR}/$request > ${RSPDIR}/$response
done
