#!/bin/bash

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


# The usage is
# testRSA.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="stats/FileMessage.txt"
RSADSA="RSADSASignGen"
ALGO_NAME="RSA"
ALGO_PRNG="SHA1withRSA"

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

LINE_HEADER="template"

# In this function, different key sizes are used by keeping the message size
# fixed. Since the algorithm used is RSA, the key sizes are changed 
# starting from 512 to 2048
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

		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

                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 -e "Usage : testRSA.sh <msgsize> <keysize> <keysize|msgsize|setup>\n"
	echo "Key Size for RSA : Min=512, Max=2048"
	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 "Usage : testRSA.sh <msgsize> <keysize> <keysize|msgsize|setup>";
		exit 0;;

esac



exit 0


