1 /* Gnu.java --- Gnu provider main class
2    Copyright (C) 1999, 2002, 2003, 2005 Free Software Foundation, Inc.
3 
4 This file is part of GNU Classpath.
5 
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10 
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 General Public License for more details.
15 
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING.  If not, write to the
18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 02110-1301 USA.
20 
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library.  Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
25 
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module.  An independent module is a module which is not derived from
33 or based on this library.  If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so.  If you do not wish to do so, delete this
36 exception statement from your version. */
37 
38 
39 package gnu.java.security.provider;
40 
41 import java.security.AccessController;
42 import java.security.PrivilegedAction;
43 import java.security.Provider;
44 
45 public final class Gnu
46     extends Provider
47 {
Gnu()48   public Gnu()
49   {
50     super("GNU", 1.0,
51           "GNU provider v1.0 implementing SHA-1, MD5, DSA, RSA, X.509 "
52           + "Certificates and CRLs, PKIX certificate path validators, "
53           + "Collection cert stores, Diffie-Hellman key agreement and "
54           + "key pair generator");
55     AccessController.doPrivileged (new PrivilegedAction()
56     {
57       public Object run()
58       {
59         // Note that all implementation class names are referenced by using
60         // Class.getName(). That way when we staticly link the Gnu provider
61         // we automatically get all the implementation classes.
62 
63         // Signature
64         put("Signature.SHA160withDSS",
65             gnu.java.security.jce.sig.SHA160withDSS.class.getName());
66         put("Alg.Alias.Signature.SHA1withDSA", "SHA160withDSS");
67         put("Alg.Alias.Signature.DSS", "SHA160withDSS");
68         put("Alg.Alias.Signature.DSA", "SHA160withDSS");
69         put("Alg.Alias.Signature.SHAwithDSA", "SHA160withDSS");
70         put("Alg.Alias.Signature.DSAwithSHA", "SHA160withDSS");
71         put("Alg.Alias.Signature.DSAwithSHA1", "SHA160withDSS");
72         put("Alg.Alias.Signature.SHA/DSA", "SHA160withDSS");
73         put("Alg.Alias.Signature.SHA-1/DSA", "SHA160withDSS");
74         put("Alg.Alias.Signature.SHA1/DSA", "SHA160withDSS");
75         put("Alg.Alias.Signature.OID.1.2.840.10040.4.3", "SHA160withDSS");
76         put("Alg.Alias.Signature.1.2.840.10040.4.3", "SHA160withDSS");
77         put("Alg.Alias.Signature.1.3.14.3.2.13", "SHA160withDSS");
78         put("Alg.Alias.Signature.1.3.14.3.2.27", "SHA160withDSS");
79 
80         put("Signature.MD2withRSA",
81             gnu.java.security.jce.sig.MD2withRSA.class.getName());
82         put("Signature.MD2withRSA ImplementedIn", "Software");
83         put("Alg.Alias.Signature.md2WithRSAEncryption", "MD2withRSA");
84         put("Alg.Alias.Signature.OID.1.2.840.113549.1.1.2", "MD2withRSA");
85         put("Alg.Alias.Signature.1.2.840.113549.1.1.2", "MD2withRSA");
86 
87         put("Signature.MD5withRSA",
88             gnu.java.security.jce.sig.MD5withRSA.class.getName());
89         put("Signature.MD5withRSA ImplementedIn", "Software");
90         put("Alg.Alias.Signature.md5WithRSAEncryption", "MD5withRSA");
91         put("Alg.Alias.Signature.OID.1.2.840.113549.1.1.4", "MD5withRSA");
92         put("Alg.Alias.Signature.1.2.840.113549.1.1.4", "MD5withRSA");
93         put("Alg.Alias.Signature.RSA", "MD5withRSA");
94 
95         put("Signature.SHA160withRSA",
96             gnu.java.security.jce.sig.SHA160withRSA.class.getName());
97         put("Signature.SHA160withRSA ImplementedIn", "Software");
98         put("Alg.Alias.Signature.sha-1WithRSAEncryption", "SHA160withRSA");
99         put("Alg.Alias.Signature.sha-160WithRSAEncryption", "SHA160withRSA");
100         put("Alg.Alias.Signature.sha1WithRSAEncryption", "SHA160withRSA");
101         put("Alg.Alias.Signature.OID.1.2.840.113549.1.1.5", "SHA160withRSA");
102         put("Alg.Alias.Signature.1.2.840.113549.1.1.5", "SHA160withRSA");
103         put("Alg.Alias.Signature.SHA1withRSA", "SHA160withRSA");
104 
105         put("Signature.SHA256withRSA",
106             gnu.java.security.jce.sig.SHA256withRSA.class.getName());
107         put("Signature.SHA160withRSA ImplementedIn", "Software");
108         put("Alg.Alias.Signature.sha256WithRSAEncryption", "SHA256withRSA");
109         put("Alg.Alias.Signature.OID.1.2.840.113549.1.1.11", "SHA256withRSA");
110         put("Alg.Alias.Signature.1.2.840.113549.1.1.11", "SHA256withRSA");
111 
112         put("Signature.SHA384withRSA",
113             gnu.java.security.jce.sig.SHA384withRSA.class.getName());
114         put("Signature.SHA160withRSA ImplementedIn", "Software");
115         put("Alg.Alias.Signature.sha384WithRSAEncryption", "SHA384withRSA");
116         put("Alg.Alias.Signature.OID.1.2.840.113549.1.1.12", "SHA384withRSA");
117         put("Alg.Alias.Signature.1.2.840.113549.1.1.12", "SHA384withRSA");
118 
119         put("Signature.SHA512withRSA",
120             gnu.java.security.jce.sig.SHA512withRSA.class.getName());
121         put("Signature.SHA160withRSA ImplementedIn", "Software");
122         put("Alg.Alias.Signature.sha512WithRSAEncryption", "SHA512withRSA");
123         put("Alg.Alias.Signature.OID.1.2.840.113549.1.1.13", "SHA512withRSA");
124         put("Alg.Alias.Signature.1.2.840.113549.1.1.13", "SHA512withRSA");
125 
126         put("Signature.DSS/RAW",
127             gnu.java.security.jce.sig.DSSRawSignatureSpi.class.getName());
128         put("Signature.DSS/RAW KeySize", "1024");
129         put("Signature.DSS/RAW ImplementedIn", "Software");
130 
131         put("Signature.RSA-PSS/RAW",
132             gnu.java.security.jce.sig.RSAPSSRawSignatureSpi.class.getName());
133         put("Signature.RSA-PSS/RAW KeySize", "1024");
134         put("Signature.RSA-PSS/RAW ImplementedIn", "Software");
135 
136         // Key Pair Generator
137         put("KeyPairGenerator.DSS",
138             gnu.java.security.jce.sig.DSSKeyPairGeneratorSpi.class.getName());
139         put("KeyPairGenerator.DSS KeySize", "1024");
140         put("KeyPairGenerator.DSS ImplementedIn", "Software");
141         put("Alg.Alias.KeyPairGenerator.DSA", "DSS");
142         put("Alg.Alias.KeyPairGenerator.OID.1.2.840.10040.4.1", "DSS");
143         put("Alg.Alias.KeyPairGenerator.1.2.840.10040.4.1", "DSS");
144         put("Alg.Alias.KeyPairGenerator.1.3.14.3.2.12", "DSS");
145 
146         put("KeyPairGenerator.RSA",
147             gnu.java.security.jce.sig.RSAKeyPairGeneratorSpi.class.getName());
148         put("KeyPairGenerator.RSA KeySize", "1024");
149         put("KeyPairGenerator.RSA ImplementedIn", "Software");
150 
151         // Key Factory
152         put("KeyFactory.DSS",
153             gnu.java.security.jce.sig.DSSKeyFactory.class.getName());
154         put("Alg.Alias.KeyFactory.DSA", "DSS");
155         put("Alg.Alias.KeyFactory.OID.1.2.840.10040.4.1", "DSS");
156         put("Alg.Alias.KeyFactory.1.2.840.10040.4.1", "DSS");
157         put("Alg.Alias.KeyFactory.1.3.14.3.2.12", "DSS");
158 
159         put("KeyFactory.RSA",
160             gnu.java.security.jce.sig.RSAKeyFactory.class.getName());
161 
162         put("KeyFactory.Encoded",
163             gnu.java.security.jce.sig.EncodedKeyFactory.class.getName());
164         put("KeyFactory.Encoded ImplementedIn", "Software");
165         put("Alg.Alias.KeyFactory.X.509", "Encoded");
166         put("Alg.Alias.KeyFactory.X509", "Encoded");
167         put("Alg.Alias.KeyFactory.PKCS#8", "Encoded");
168         put("Alg.Alias.KeyFactory.PKCS8", "Encoded");
169 
170         put("MessageDigest.HAVAL",
171             gnu.java.security.jce.hash.HavalSpi.class.getName());
172         put("MessageDigest.HAVAL ImplementedIn", "Software");
173         put("MessageDigest.MD2",
174             gnu.java.security.jce.hash.MD2Spi.class.getName());
175         put("MessageDigest.MD2 ImplementedIn", "Software");
176         put("MessageDigest.MD4",
177             gnu.java.security.jce.hash.MD4Spi.class.getName());
178         put("MessageDigest.MD4 ImplementedIn", "Software");
179         put("MessageDigest.MD5",
180             gnu.java.security.jce.hash.MD5Spi.class.getName());
181         put("MessageDigest.MD5 ImplementedIn", "Software");
182         put("MessageDigest.RIPEMD128",
183             gnu.java.security.jce.hash.RipeMD128Spi.class.getName());
184         put("MessageDigest.RIPEMD128 ImplementedIn", "Software");
185         put("MessageDigest.RIPEMD160",
186             gnu.java.security.jce.hash.RipeMD160Spi.class.getName());
187         put("MessageDigest.RIPEMD160 ImplementedIn", "Software");
188         put("MessageDigest.SHA-160",
189             gnu.java.security.jce.hash.Sha160Spi.class.getName());
190         put("MessageDigest.SHA-160 ImplementedIn", "Software");
191         put("MessageDigest.SHA-256",
192             gnu.java.security.jce.hash.Sha256Spi.class.getName());
193         put("MessageDigest.SHA-256 ImplementedIn", "Software");
194         put("MessageDigest.SHA-384",
195             gnu.java.security.jce.hash.Sha384Spi.class.getName());
196         put("MessageDigest.SHA-384 ImplementedIn", "Software");
197         put("MessageDigest.SHA-512",
198             gnu.java.security.jce.hash.Sha512Spi.class.getName());
199         put("MessageDigest.SHA-512 ImplementedIn", "Software");
200         put("MessageDigest.TIGER",
201             gnu.java.security.jce.hash.TigerSpi.class.getName());
202         put("MessageDigest.TIGER ImplementedIn", "Software");
203         put("MessageDigest.WHIRLPOOL",
204             gnu.java.security.jce.hash.WhirlpoolSpi.class.getName());
205         put("MessageDigest.WHIRLPOOL ImplementedIn", "Software");
206 
207         put("Alg.Alias.MessageDigest.SHS", "SHA-160");
208         put("Alg.Alias.MessageDigest.SHA", "SHA-160");
209         put("Alg.Alias.MessageDigest.SHA1", "SHA-160");
210         put("Alg.Alias.MessageDigest.SHA-1", "SHA-160");
211         put("Alg.Alias.MessageDigest.SHA2-256", "SHA-256");
212         put("Alg.Alias.MessageDigest.SHA2-384", "SHA-384");
213         put("Alg.Alias.MessageDigest.SHA2-512", "SHA-512");
214         put("Alg.Alias.MessageDigest.SHA256", "SHA-256");
215         put("Alg.Alias.MessageDigest.SHA384", "SHA-384");
216         put("Alg.Alias.MessageDigest.SHA512", "SHA-512");
217         put("Alg.Alias.MessageDigest.RIPEMD-160", "RIPEMD160");
218         put("Alg.Alias.MessageDigest.RIPEMD-128", "RIPEMD128");
219         put("Alg.Alias.MessageDigest.OID.1.2.840.11359.2.2", "MD2");
220         put("Alg.Alias.MessageDigest.1.2.840.11359.2.2", "MD2");
221         put("Alg.Alias.MessageDigest.OID.1.2.840.11359.2.5", "MD5");
222         put("Alg.Alias.MessageDigest.1.2.840.11359.2.5", "MD5");
223         put("Alg.Alias.MessageDigest.OID.1.3.14.3.2.26", "SHA1");
224         put("Alg.Alias.MessageDigest.1.3.14.3.2.26", "SHA1");
225 
226         // Algorithm Parameters
227         put("AlgorithmParameters.DSS",
228             gnu.java.security.jce.sig.DSSParameters.class.getName());
229         put("Alg.Alias.AlgorithmParameters.DSA", "DSS");
230         put("Alg.Alias.AlgorithmParameters.SHAwithDSA", "DSS");
231         put("Alg.Alias.AlgorithmParameters.OID.1.2.840.10040.4.3", "DSS");
232         put("Alg.Alias.AlgorithmParameters.1.2.840.10040.4.3", "DSS");
233 
234         // Algorithm Parameter Generator
235         put("AlgorithmParameterGenerator.DSA",
236             gnu.java.security.jce.sig.DSSParametersGenerator.class.getName());
237         put("Alg.Alias.AlgorithmParameterGenerator.DSA", "DSS");
238 
239         // SecureRandom
240         put("SecureRandom.SHA1PRNG",
241             gnu.java.security.jce.prng.Sha160RandomSpi.class.getName());
242 
243         put("SecureRandom.MD2PRNG",
244             gnu.java.security.jce.prng.MD2RandomSpi.class.getName());
245         put("SecureRandom.MD2PRNG ImplementedIn", "Software");
246         put("SecureRandom.MD4PRNG",
247             gnu.java.security.jce.prng.MD4RandomSpi.class.getName());
248         put("SecureRandom.MD4PRNG ImplementedIn", "Software");
249         put("SecureRandom.MD5PRNG",
250             gnu.java.security.jce.prng.MD5RandomSpi.class.getName());
251         put("SecureRandom.MD5PRNG ImplementedIn", "Software");
252         put("SecureRandom.RIPEMD128PRNG",
253             gnu.java.security.jce.prng.RipeMD128RandomSpi.class.getName());
254         put("SecureRandom.RIPEMD128PRNG ImplementedIn", "Software");
255         put("SecureRandom.RIPEMD160PRNG",
256             gnu.java.security.jce.prng.RipeMD160RandomSpi.class.getName());
257         put("SecureRandom.RIPEMD160PRNG ImplementedIn", "Software");
258         put("SecureRandom.SHA-160PRNG",
259             gnu.java.security.jce.prng.Sha160RandomSpi.class.getName());
260         put("SecureRandom.SHA-160PRNG ImplementedIn", "Software");
261         put("SecureRandom.SHA-256PRNG",
262             gnu.java.security.jce.prng.Sha256RandomSpi.class.getName());
263         put("SecureRandom.SHA-256PRNG ImplementedIn", "Software");
264         put("SecureRandom.SHA-384PRNG",
265             gnu.java.security.jce.prng.Sha384RandomSpi.class.getName());
266         put("SecureRandom.SHA-384PRNG ImplementedIn", "Software");
267         put("SecureRandom.SHA-512PRNG",
268             gnu.java.security.jce.prng.Sha512RandomSpi.class.getName());
269         put("SecureRandom.SHA-512PRNG ImplementedIn", "Software");
270         put("SecureRandom.TIGERPRNG",
271             gnu.java.security.jce.prng.TigerRandomSpi.class.getName());
272         put("SecureRandom.TIGERPRNG ImplementedIn", "Software");
273         put("SecureRandom.HAVALPRNG",
274             gnu.java.security.jce.prng.HavalRandomSpi.class.getName());
275         put("SecureRandom.HAVALPRNG ImplementedIn", "Software");
276         put("SecureRandom.WHIRLPOOLPRNG",
277             gnu.java.security.jce.prng.WhirlpoolRandomSpi.class.getName());
278         put("SecureRandom.WHIRLPOOLPRNG ImplementedIn", "Software");
279 
280         put("Alg.Alias.SecureRandom.SHA-1PRNG", "SHA-160PRNG");
281         put("Alg.Alias.SecureRandom.SHA1PRNG", "SHA-160PRNG");
282         put("Alg.Alias.SecureRandom.SHAPRNG", "SHA-160PRNG");
283         put("Alg.Alias.SecureRandom.SHA-256PRNG", "SHA-256PRNG");
284         put("Alg.Alias.SecureRandom.SHA-2-1PRNG", "SHA-256PRNG");
285         put("Alg.Alias.SecureRandom.SHA-384PRNG", "SHA-384PRNG");
286         put("Alg.Alias.SecureRandom.SHA-2-2PRNG", "SHA-384PRNG");
287         put("Alg.Alias.SecureRandom.SHA-512PRNG", "SHA-512PRNG");
288         put("Alg.Alias.SecureRandom.SHA-2-3PRNG", "SHA-512PRNG");
289 
290         // CertificateFactory
291         put("CertificateFactory.X509", X509CertificateFactory.class.getName());
292         put("CertificateFactory.X509 ImplementedIn", "Software");
293         put("Alg.Alias.CertificateFactory.X.509", "X509");
294 
295         // CertPathValidator
296         put("CertPathValidator.PKIX", PKIXCertPathValidatorImpl.class.getName());
297         put("CertPathValidator.PKIX ImplementedIn", "Software");
298 
299         // CertStore
300         put("CertStore.Collection", CollectionCertStoreImpl.class.getName());
301 
302         return null;
303       }
304     });
305   }
306 }
307