1 package es.caib.signatura.impl;
2
3 import java.io.InputStream;
4 import java.security.Provider;
5 import java.security.Security;
6
7
8
9
10
11 public class CertificateProviderFactory {
12
13 private static ClassLoaderFactory factory;
14
15
16
17
18 public CertificateProviderFactory() {}
19
20
21
22
23
24
25 public static CertificateProvider getCertificateProvider(String classname) throws CertificateProviderException {
26
27 System.out.println("CertificateProviderFactory.getCertificateProvider()");
28
29 init();
30
31 CertificateProvider p = null;
32
33 try {
34
35 p = (CertificateProvider)factory.getFactory().getMasterClassLoader().loadClass(classname).newInstance();
36
37 } catch (Exception e) {
38
39 throw new CertificateProviderException(e);
40
41 }
42
43 System.out.println("FIN CertificateProviderFactory.getCertificateProvider()");
44
45 return p;
46
47 }
48
49
50
51
52
53 private static void init() {
54
55 System.out.println("CertificateProviderFactory.init()");
56
57 CAIBSecurityManager.register();
58
59 try {
60
61 if (factory == null) {
62 factory = ClassLoaderFactory.getFactory ();
63 }
64
65
66
67
68
69
70 if (Security.getProvider("BC") == null) {
71 ClassLoader c = factory.getFactory().getMasterClassLoader();
72 Provider p = (Provider) factory.getFactory().getMasterClassLoader().loadClass("org.bouncycastle.jce.provider.BouncyCastleProvider").newInstance();
73 Security.addProvider(p);
74 }
75
76
77
78 InputStream inputStream = factory.getMasterClassLoader().getResourceAsStream("es/caib/signatura/provider/impl/lunaPCI/LunaPCISigner.class");
79 if (inputStream != null) {
80
81 if (Security.getProvider("LunaJCE") == null) {
82 ClassLoader c = factory.getFactory().getMasterClassLoader();
83 Provider p = (Provider) factory.getFactory().getMasterClassLoader().loadClass("com.chrysalisits.cryptox.LunaJCEProvider").newInstance();
84 Security.addProvider(p);
85 }
86
87 if (Security.getProvider("LunaJCA") == null) {
88 ClassLoader c = factory.getFactory().getMasterClassLoader();
89 Provider p = (Provider) factory.getFactory().getMasterClassLoader().loadClass("com.chrysalisits.crypto.LunaJCAProvider").newInstance();
90 Security.addProvider(p);
91 }
92
93 }
94
95 } catch(Exception e) {
96
97 throw new RuntimeException (e);
98
99 }
100
101 System.out.println("FIN CertificateProviderFactory.init()");
102
103 }
104
105 }