Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package Client; import Useful.InfoCSR; import static Useful.InfoCSR.*; import static KerberosAPI.BuildKeyPair.generateKeyPair; import KerberosAPI.CSRManager; import static KerberosAPI.Certificate.getCertBytes; import static KerberosAPI.Cryptage.encrypt; import static KerberosAPI.DigestManager.digest; import static KerberosAPI.KeyManager.getPublicKeyInFile; import KerberosAPI.KeyStoreManager; import KerberosAPI.readAndWriteObject; import java.io.IOException; import java.net.Socket; import java.nio.channels.SocketChannel; import java.security.KeyPair; import java.security.PrivateKey; import java.security.PublicKey; import java.security.cert.X509Certificate; import org.bouncycastle.pkcs.PKCS10CertificationRequest; /** * * @author Aliou */ public class CSRRequest { String ip; public int port; private PrivateKey privKey; X509Certificate cert; SocketChannel client; Socket s; String login; String mdp; PublicKey pubKeySC; Client c; KeyStoreManager storeManager; public CSRRequest(int port, String login, String mdp) { this.port = port; this.login = login; this.mdp = mdp; } public void connect() throws IOException { try { s = new Socket(ip, 1010); } catch (Exception e) { System.out.println("CSRRequest => connect : " + e); } } public void run() { try { //Gnration de la paire de cls KeyPair keyPair = generateKeyPair(); //Rcupration de la cl priv privKey = keyPair.getPrivate(); //Cration du CSR a envoyer au Serveur de Certificat PKCS10CertificationRequest csr = CSRManager.generateCSR(login, keyPair); System.out.print("Cration de l'objet envoy : "); // HashMap hashMap = new HashMap(); // hashMap.put(login, c.getServInfo().getPort()); InfoCSR clientCSR = new InfoCSR(csr.getEncoded(), login, digest(mdp)); System.out.println("OK"); System.out.print("Transformation en tableau de bytes : "); byte[] bytesCSR = ObjectToByte(clientCSR); System.out.println("OK"); System.out.print("Rcupration de la cl publique du Serveur de Certificats : "); pubKeySC = getPublicKeyInFile(); System.out.println("OK"); System.out.print("Chiffrement de l'objet : "); byte[] encrypted = encrypt(pubKeySC, bytesCSR); System.out.println("OK"); System.out.print("Instanciation pour l'envoi et la rception : "); readAndWriteObject readWrite2 = new readAndWriteObject(s); System.out.println("OK"); System.out.print("Envoi de la demande de certification : "); readWrite2.writeObject2(encrypted); System.out.println("OK"); System.out.print("Rception de l'objet contenant le certificat : "); byte[] receive = readWrite2.readObject2(); if (receive == null) { System.out.println("Dmande de certification rfuse."); } else { System.out.println("OK"); System.out.print("Rconstruction du certificat : "); cert = getCertBytes(receive); System.out.println("OK"); storeManager = new KeyStoreManager(); System.out.print("Enregistrement du certificat dans le keystore : "); storeManager.saveOwnCert(login, cert); System.out.println("OK"); System.out.print("Enregistrement de la cl priv dans le keystore : "); storeManager.saveOwnKey(login, privKey, cert); System.out.println("OK"); } System.out.println("==========Liste des certificats========="); storeManager.listCertAliasses(login); close(); System.out.println("CSRRequest closed!"); } catch (Exception e) { System.out.println("CSRRequest : " + e); } } public PublicKey getPubKeySC() { return pubKeySC; } public void close() throws IOException { this.s.close(); } }