#!/bin/bash

# Program to test Signature generation for various parameters like
# Message Size
# Key Size
# Algorithm Used


# The usage is
# testDSA.sh <msgsize> <keysize> [msgsize|keysize|setup]

# The last parameter indicates that which out of the three factors the user
# wants to change.




FileOutDiffKeyTmp="log/FileOutDiffKey"
FileOutDiffMsgLenTmp="log/FileOutDiffMsgLen"

FileMessage="FileMessage.txt"
RSADSA="RSADSASignGen"
ALGO_NAME="DSA"
ALGO_PRNG="SHA1withDSA"

LINE_COMMENT="-------------------------------------------------------------------------------"

LINE_HEADER="template"

# In this function, different key sizes are used by keeping the message size
# fixed. Since the algorithm used is DSA, the key sizes are changed in 
#  64 bits starting from 512 to 1024
function ChangeKeySize()
{
	keyi=512
	MsgLen="$1"
	KeySize="$2"
	
	echo $LINE_COMMENT >> $FileOutDiffKeyTmp
	while test $keyi -le $KeySize
	do
		java $RSADSA $ALGO_NAME $ALGO_PRNG $FileMessage $MsgLen  $keyi >>$FileOutDiffKeyTmp

#		cat $FileLogDiffKeyTmp >> $FileOutDiffKeyTmp
		keyi=`expr $keyi + 64`
	done
}

function ChangeMsgLen()
{
        msgi=1
        MsgLen="$1"
        KeySize="$2"

        echo $LINE_COMMENT >> $FileOutDiffMsgLenTmp
        while test $msgi -le $MsgLen
        do
		java $RSADSA $ALGO_NAME $ALGO_PRNG $FileMessage $msgi $KeySize >>$FileOutDiffMsgLenTmp

#                cat $FileLogDiffMsgLenTmp >> $FileOutDiffMsgLenTmp
                msgi=`expr $msgi \* 2`
        done
}


function setup()
{
		if [ ! -d "log" ]
            	then
                        mkdir "log";
		else
			rm -Rf "log";
			mkdir "log";
                fi
                cat $LINE_HEADER > $FileOutDiffMsgLenTmp;
                cat $LINE_HEADER > $FileOutDiffKeyTmp;

}





if test $# -ne 3
then
	echo "Usage : testDSA.sh <msgsize> <keysize> <keysize|msgsize|setup>"
	exit 0
fi


if [ ! -e "log" ]
then
	setup;	
fi








case $3 in
keysize	)	ChangeKeySize $1 $2 ;;
msgsize)	ChangeMsgLen $1 $2 ;;
setup)		setup;
		exit 0;;

*)		echo -e "Usage : testRSA.sh <msgsize> <keysize> <keysize|msgsize|setup>\n";
		echo "Key Size : Min=512, Max=1024";
		exit 0;;

esac



exit 0


