· 7 years ago · Jun 18, 2018, 12:30 PM
1public class CA {
2
3
4
5 public static void generaClaus(String CN, String alias, String univ, String pais, String contrasenyaP, int duracio) throws Exception {
6
7
8
9 if (CN!="TSA") { duracio=30; }
10
11 String OU, C, O, L, ST;
12
13 OU="univ"; C= pais; O=" "; L=" "; ST="";
14
15 //Es genera la parella de claus i el certificat X.509
16
17 CertAndKeyGen claus = new sun.security.x509.CertAndKeyGen("RSA", "MD5WithRSA" );
18
19 X500Name x500Name = new sun.security.x509.X500Name(CN,OU,O,L,ST,C);
20
21 claus.generate( 1024 );
22
23 X509Certificate[] cadena = new X509Certificate[1];
24
25 cadena[0] = claus.getSelfCertificate(x500Name, duracio*24*60*60);
26
27
28
29 // Es crea el KeyStore per guardar les claus. Si el fitxer no existeix s'en crea un de nou.
30
31 KeyStore ks = KeyStore.getInstance("JCEKS");
32
33 File fclaus = new File("fitxerclaus.jks");
34
35 if (fclaus.exists()) {
36
37 ks.load(new FileInputStream("fitxerclaus.jks"), null); }
38
39 else {
40
41 ks.load(null, null); }
42
43 ks.setKeyEntry(alias, claus.getPrivateKey(), contrasenyaP.toCharArray(), cadena);
44
45
46
47 //Es guarda el KeyStore a un fitxer amb extensió .jks
48
49 FileOutputStream fos = new FileOutputStream("fitxerclaus.jks");
50
51 ks.store(fos, "ContrasenyaFitxer".toCharArray());
52
53 fos.close();
54
55 }
56
57
58
59 public static SecretKey genClauXifrat(String alias, String contrassenya) throws Exception {
60
61
62
63 // Es crea el KeyStore per guardar la clau. Si el fitxer no existeix s'en crea un de nou.
64
65 KeyStore ks = KeyStore.getInstance("JCEKS");
66
67 File fclaus = new File("fitxerclaus.jks");
68
69 if (fclaus.exists()) {
70
71 ks.load(new FileInputStream("fitxerclaus.jks"), null); }
72
73 else {
74
75 ks.load(null, null);}
76
77 SecretKey key = KeyGenerator.getInstance("DES").generateKey();
78
79 ks.setKeyEntry(alias, key, contrassenya.toCharArray(), null);
80
81
82
83 //Es guarda el KeyStore amb la nova clau
84
85 FileOutputStream fos = new FileOutputStream("fitxerclaus.jks");
86
87 ks.store(fos, "ContrasenyaFitxer".toCharArray());
88
89 fos.close();
90
91 return key;
92
93
94
95 }
96
97
98
99}