#!/bin/bash

# Program to test the RSA for various parameters like
# Key Size
# Certainty factor for generating prime nos.
# Message Length


# The usage is
# testRSA.sh <keysize> <cetainty factor> <messageLength> [keysize|certainty|msgL# en |setup]

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



# Function ChangeKeySize() gives RSA program different keysizes by keeping 
# other parameters same.

FileLogDiffKeyTmp="log/FileLogDiffKeyTmp"
FileLogDiffCertTmp="log/FileLogDiffCertTmp"
FileLogDiffMsgLenTmp="log/FileLogDiffMsgLenTmp"

FileOutDiffKeyTmp="log/FileOutDiffKeyTmp"
FileOutDiffCertTmp="log/FileOutDiffCertTmp"
FileOutDiffMsgLenTmp="log/FileOutDiffMsgLenTmp"

FileMessage="FileMessage.txt"
RSA="RSA"
LINE_COMMENT="-------------------------------------------------------------------------------"

LINE_HEADER="template"
function ChangeKeySize()
{
	i=128
	KeySize=$1
	Certainty="$2"	
	MsgLen="$3"
	
	echo $LINE_COMMENT >> $FileOutDiffKeyTmp
	while test $i -le $KeySize
	do
		/usr/local/bin/java $RSA $i  $Certainty  $MsgLen $FileLogDiffKeyTmp $FileMessage
		
		cat $FileLogDiffKeyTmp >> $FileOutDiffKeyTmp
		i=`expr $i \* 2`
	done
}
function ChangeCertainty()
{
        i=2
        KeySize=$1
        Certainty="$2"
        MsgLen="$3"

        echo $LINE_COMMENT >> $FileOutDiffCertTmp
        while test $i -le $KeySize
        do
                /usr/local/bin/java $RSA $KeySize $i $MsgLen $FileLogDiffCertTmp $FileMessage

                cat $FileLogDiffCertTmp >> $FileOutDiffCertTmp
                i=`expr $i + 1`
        done
}

function ChangeMsgLen()
{
        i=2
        KeySize=$1
        Certainty="$2"
        MsgLen="$3"

        echo $LINE_COMMENT >> $FileOutDiffMsgLenTmp
        while test $i -le $MsgLen
        do
                /usr/local/bin/java $RSA $KeySize $Certainty $i $FileLogDiffMsgLenTmp $FileMessage

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


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




# Check the no. of parameters

if test $# -ne 4 
then
	echo "Usage : testRSA.sh <keysize> <cetainty factor> <messageLength> <keysize|certainty|msgLen|setup>"
	exit 0
fi


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








case $4 in
keysize	)	ChangeKeySize $1 $2 $3;;
certainty)	ChangeCertainty $1 $2 $3;;
msgLen)		ChangeMsgLen $1 $2 $3;;
setup)		setup;
		exit 0;;

*)		echo "Usage : testRSA.sh <keysize> <cetainty factor> <messageLength> <keysize|certainty|msgLen|setup>";
		exit 0;;

esac



exit 0


