
import java.io.File;


/**
 * Clase que crea los objetos necesarios para invocar la desencriptacion de archivos usando el algoritmo AES
 * y llaves de tipo algoritmo RSA.
 * @ * @author José Antonio Silva, Mario Ungemach, Jorge Mellings
 */
public class MainFEdecrypt {
/**
 * objeto utilizado para almacenar el archivo de la llave AES que esta encriptada con llave publica RSA
 */
static File encryptedKeyFile;
/**
 * objeto utilizado para almacenar el archivo encriptado con AES
 */
static File encryptedFile;
/**
 * objeto utilizado para almacenar el archivo de la llave privada RSA
 */
static File privateKeyFile;
/**
 * objeto utilizado para almacenar el archivo desencriptado con AES
 */
static File unencryptedFile;
/**
 * objeto utilizado para invocar los metodos de desencriptacion.
 */
static FileEncryption secure;

/**
 * Constructor de la clase MainFEdecrypt, crea los objetos
 * para desencriptar e invoca a la clase FileEncryption para utilizar los
 * metodos para realizar la desencriptacion.
 * @param fTE archivo donde se guardara la información del archivo desencriptado
 */
    MainFEdecrypt (String fTE)
     {
                 // archivo que guarda llave AES encriptada con llave publica RSA
		  encryptedKeyFile = new File("encryptedKeyFile.txt"); //out
                 //archivo resultante de encriptar fileToEncypt con AES
                   encryptedFile    = new File("encryptedFile.txt");//out
		 //archivo con la llave privada RSA
                  privateKeyFile   = new File("private.der");//privateKeyFile

                  //archivo resultante al desencriptar con AES el archivo encryptedFile
                  unencryptedFile  = new File(fTE); //out

			try{
			//Creamos el objeto secure, con el cual invocaremos los metodos para
                        //decrypt y manejo de llaves
                            secure = new FileEncryption();

         		//Invocamos el metodo loadKey, con el archivo que tiene la llave AES encriptada con RSA
                        //y con la llave privada RSA para desencriptar el archivo
			secure.loadKey(encryptedKeyFile, privateKeyFile);

                        //Invocamos el metodo decrypt el cual desencripta el archivo encriptado con AES
                        //y el contenido desencriptado lo guarda en el archivo unencryptedFile
                        //Recordemos que la invocación del método loadKey, cargamos la llave privada de AES
                        //para poder luego desencriptar el archivo
                        secure.decrypt(encryptedFile, unencryptedFile);
		     }
			  catch
			  (Exception e)
        			{
            //Arroja la exepcion  en caso que ocurra un error al abrir o escribir en algun archivo
            //dentro del manejo con el objeto secure.
            e.printStackTrace();
			  }
    }



}