michael@0: #! /bin/bash michael@0: # michael@0: # This Source Code Form is subject to the terms of the Mozilla Public michael@0: # License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: # file, You can obtain one at http://mozilla.org/MPL/2.0/. michael@0: michael@0: ######################################################################## michael@0: # michael@0: # mozilla/security/nss/tests/cipher/cipher.sh michael@0: # michael@0: # Script to test NSS ciphers michael@0: # michael@0: # needs to work on all Unix and Windows platforms michael@0: # michael@0: # special strings michael@0: # --------------- michael@0: # FIXME ... known problems, search for this string michael@0: # NOTE .... unexpected behavior michael@0: # michael@0: ######################################################################## michael@0: michael@0: ############################## cipher_init ############################# michael@0: # local shell function to initialize this script michael@0: ######################################################################## michael@0: cipher_init() michael@0: { michael@0: SCRIPTNAME="cipher.sh" michael@0: if [ -z "${CLEANUP}" ] ; then # if nobody else is responsible for michael@0: CLEANUP="${SCRIPTNAME}" # cleaning this script will do it michael@0: fi michael@0: if [ -z "${INIT_SOURCED}" ] ; then michael@0: cd ../common michael@0: . ./init.sh michael@0: fi michael@0: SCRIPTNAME="cipher.sh" michael@0: html_head "Cipher Tests" michael@0: michael@0: CIPHERDIR=${HOSTDIR}/cipher michael@0: CIPHERTESTDIR=${QADIR}/../cmd/bltest michael@0: GCMTESTDIR=${QADIR}/../cmd/pk11gcmtest michael@0: D_CIPHER="Cipher.$version" michael@0: michael@0: CIPHER_TXT=${QADIR}/cipher/cipher.txt michael@0: GCM_TXT=${QADIR}/cipher/gcm.txt michael@0: michael@0: mkdir -p ${CIPHERDIR} michael@0: michael@0: cd ${CIPHERDIR} michael@0: P_CIPHER=. michael@0: if [ -n "${MULTIACCESS_DBM}" ]; then michael@0: P_CIPHER="multiaccess:${D_CIPHER}" michael@0: fi michael@0: } michael@0: michael@0: ############################## cipher_main ############################# michael@0: # local shell function to test NSS ciphers michael@0: ######################################################################## michael@0: cipher_main() michael@0: { michael@0: while read EXP_RET PARAM TESTNAME michael@0: do michael@0: if [ -n "$EXP_RET" -a "$EXP_RET" != "#" ] ; then michael@0: PARAM=`echo $PARAM | sed -e "s/_-/ -/g"` michael@0: TESTNAME=`echo $TESTNAME | sed -e "s/_/ /g"` michael@0: echo "$SCRIPTNAME: $TESTNAME --------------------------------" michael@0: failedStr="" michael@0: inOff=0 michael@0: res=0 michael@0: while [ $inOff -lt 8 ] michael@0: do michael@0: outOff=0 michael@0: while [ $outOff -lt 8 ] michael@0: do michael@0: echo "bltest -T -m $PARAM -d $CIPHERTESTDIR -1 $inOff -2 $outOff" michael@0: ${PROFTOOL} ${BINDIR}/bltest${PROG_SUFFIX} -T -m $PARAM -d $CIPHERTESTDIR -1 $inOff -2 $outOff michael@0: if [ $? -ne 0 ]; then michael@0: failedStr="$failedStr[$inOff:$outOff]" michael@0: fi michael@0: outOff=`expr $outOff + 1` michael@0: done michael@0: inOff=`expr $inOff + 1` michael@0: done michael@0: if [ -n "$failedStr" ]; then michael@0: html_msg 1 $EXP_RET "$TESTNAME (Failed in/out offset pairs:" \ michael@0: " $failedStr)" michael@0: else michael@0: html_msg $res $EXP_RET "$TESTNAME" michael@0: fi michael@0: fi michael@0: done < ${CIPHER_TXT} michael@0: } michael@0: michael@0: ############################## cipher_gcm ############################# michael@0: # local shell function to test NSS AES GCM michael@0: ######################################################################## michael@0: cipher_gcm() michael@0: { michael@0: while read EXP_RET INPUT_FILE TESTNAME michael@0: do michael@0: if [ -n "$EXP_RET" -a "$EXP_RET" != "#" ] ; then michael@0: TESTNAME=`echo $TESTNAME | sed -e "s/_/ /g"` michael@0: echo "$SCRIPTNAME: $TESTNAME --------------------------------" michael@0: echo "pk11gcmtest aes kat gcm $GCMTESTDIR/tests/$INPUT_FILE" michael@0: ${PROFTOOL} ${BINDIR}/pk11gcmtest aes kat gcm $GCMTESTDIR/tests/$INPUT_FILE michael@0: html_msg $? $EXP_RET "$TESTNAME" michael@0: fi michael@0: done < ${GCM_TXT} michael@0: } michael@0: michael@0: ############################## cipher_cleanup ############################ michael@0: # local shell function to finish this script (no exit since it might be michael@0: # sourced) michael@0: ######################################################################## michael@0: cipher_cleanup() michael@0: { michael@0: html "
" michael@0: cd ${QADIR} michael@0: . common/cleanup.sh michael@0: } michael@0: michael@0: ################## main ################################################# michael@0: michael@0: # When building without softoken, bltest isn't built. It was already michael@0: # built and the cipher suite run as part of an nss-softoken build. michael@0: if [ ! -x ${DIST}/${OBJDIR}/bin/bltest${PROG_SUFFIX} ]; then michael@0: echo "bltest not built, skipping this test." >> ${LOGFILE} michael@0: res = 0 michael@0: html_msg $res $EXP_RET "$TESTNAME" michael@0: return 0 michael@0: fi michael@0: cipher_init michael@0: # Skip cipher_main if this an NSS without softoken build. michael@0: if [ "${NSS_BUILD_WITHOUT_SOFTOKEN}" != "1" ]; then michael@0: cipher_main michael@0: fi michael@0: # Skip cipher_gcm if this is a softoken only build. michael@0: if [ "${NSS_BUILD_SOFTOKEN_ONLY}" != "1" ]; then michael@0: cipher_gcm michael@0: fi michael@0: cipher_cleanup