00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 package org.objectweb.proactive.ext.security.crypto;
00032
00033 import java.io.FileOutputStream;
00034 import java.io.ObjectOutputStream;
00035 import java.security.KeyPair;
00036 import java.security.PrivateKey;
00037 import java.security.PublicKey;
00038 import java.security.SecureRandom;
00039
00040 import org.bouncycastle.jce.provider.JDKKeyPairGenerator;
00041
00042
00043 public class CertificationAuthority {
00044 private static PrivateKey privateKey;
00045 private static PublicKey publicKey;
00046
00047 public CertificationAuthority() {
00048 generateKeyPair();
00049 }
00050
00051 public static PublicKey get_PublicKey() {
00052 return publicKey;
00053 }
00054
00055 public static PrivateKey get_PrivateKey() {
00056 return privateKey;
00057 }
00058
00059 public static void writeKeys() {
00060 try {
00061 System.out.println("Generating AC publicKey...");
00062
00063 FileOutputStream fout = new FileOutputStream("acPublicKey");
00064 ObjectOutputStream out = new ObjectOutputStream(fout);
00065 out.writeObject(publicKey);
00066 out.flush();
00067 out.close();
00068 System.out.println("Generating AC privateKey...");
00069 fout = new FileOutputStream("acPrivateKey");
00070 out = new ObjectOutputStream(fout);
00071 out.writeObject(privateKey);
00072 out.flush();
00073 out.close();
00074 System.out.println("The KeyPair has been correctly generated.");
00075 System.out.println("The AC publicKey is saved in : acPublicKey");
00076 System.out.println("The AC privateKey is saved in : acPrivateKey");
00077 } catch (Exception e) {
00078 System.out.println("Exception in AC key serialization :" + e);
00079 }
00080 }
00081
00082 public static void main(String[] args) {
00083 new CertificationAuthority();
00084 writeKeys();
00085 }
00086
00087 private static void generateKeyPair() {
00088
00089
00090
00091
00092 SecureRandom rand = new SecureRandom();
00093 JDKKeyPairGenerator.RSA keyPairGen = new JDKKeyPairGenerator.RSA();
00094 keyPairGen.initialize(512, rand);
00095
00096 KeyPair keyPair = keyPairGen.generateKeyPair();
00097 privateKey = keyPair.getPrivate();
00098 publicKey = keyPair.getPublic();
00099 }
00100 }