/**
  * Generazione di una chiave per il DES
  * NB: richiede la IAIK-JCE
  @author Enrico Denti
  @version 1.0, 2/3/99
*/

import java.security.Security;
import java.security.SecureRandom;
import java.security.NoSuchAlgorithmException;
import java.security.InvalidKeyException;
import java.security.NoSuchProviderException;
import java.security.Key;

import javax.crypto.*;
import iaik.security.provider.*;

class Esempio2 {

  public static void main(String args[]){

	System.out.print("Aggiunta del nuovo provider IAIK...");

	IAIK provider = new IAIK();
	Security.addProvider(provider);

	System.out.println(" aggiunta riuscita.");

	// -------- creazione generatore di chiavi------------------------

	System.out.print("Creazione del generatore di chiavi...");

	KeyGenerator gen = null;
	try {
	  gen = KeyGenerator.getInstance("DES","IAIK");
	  // qui occorre specificare l'algoritmo per cui si vuole
	  // la chiave, e quale provider va utilizzato
	}
	catch (NoSuchAlgorithmException e1) {
	  System.out.println("Algoritmo non supportato in KeyGenerator");
	  System.exit(1);
	}
	catch (NoSuchProviderException e1) {
	  System.out.println("Provider non supportato in KeyGenerator");
	  System.exit(1);
	}
	System.out.println(" generatore di chiavi creato.");

	// -------- generazione chiave ------------------------------------

	System.out.print("Generazione della chiave...");

	gen.init(new SecureRandom());
	// si potrebbe inizializzare il generatore con un seme specifico

	Key k = gen.generateKey();

	System.out.println(" chiave generata.");
	System.out.println("");
	for (int i=0; i<k.getEncoded().length; i++)
		System.out.print("" + k.getEncoded()[i] + "\t");
	System.out.println("");
   }
}
