DSA.java revision b7130ea4e4acaafb59cba3a5a1cadb08ed9c4853
1package org.bouncycastle.jcajce.provider.asymmetric;
2
3import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
4import org.bouncycastle.jcajce.provider.asymmetric.dsa.DSAUtil;
5import org.bouncycastle.jcajce.provider.asymmetric.dsa.KeyFactorySpi;
6import org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
7import org.bouncycastle.jcajce.provider.util.AsymmetricAlgorithmProvider;
8import org.bouncycastle.jcajce.provider.util.AsymmetricKeyInfoConverter;
9
10public class DSA
11{
12    private static final String PREFIX = "org.bouncycastle.jcajce.provider.asymmetric" + ".dsa.";
13
14    public static class Mappings
15        extends AsymmetricAlgorithmProvider
16    {
17        public Mappings()
18        {
19        }
20
21        public void configure(ConfigurableProvider provider)
22        {
23            provider.addAlgorithm("AlgorithmParameters.DSA", PREFIX + "AlgorithmParametersSpi");
24
25            provider.addAlgorithm("AlgorithmParameterGenerator.DSA", PREFIX + "AlgorithmParameterGeneratorSpi");
26
27            provider.addAlgorithm("KeyPairGenerator.DSA", PREFIX + "KeyPairGeneratorSpi");
28            provider.addAlgorithm("KeyFactory.DSA", PREFIX + "KeyFactorySpi");
29
30            // BEGIN android-changed
31            provider.addAlgorithm("Signature.SHA1withDSA", PREFIX + "DSASigner$stdDSA");
32            // END android-changed
33            provider.addAlgorithm("Signature.NONEWITHDSA", PREFIX + "DSASigner$noneDSA");
34
35            provider.addAlgorithm("Alg.Alias.Signature.RAWDSA", "NONEWITHDSA");
36
37            // BEGIN android-removed
38            // provider.addAlgorithm("Signature.DETDSA", PREFIX + "DSASigner$detDSA");
39            // provider.addAlgorithm("Signature.SHA1WITHDETDSA", PREFIX + "DSASigner$detDSA");
40            // provider.addAlgorithm("Signature.SHA224WITHDETDSA", PREFIX + "DSASigner$detDSA224");
41            // provider.addAlgorithm("Signature.SHA256WITHDETDSA", PREFIX + "DSASigner$detDSA256");
42            // provider.addAlgorithm("Signature.SHA384WITHDETDSA", PREFIX + "DSASigner$detDSA384");
43            // provider.addAlgorithm("Signature.SHA512WITHDETDSA", PREFIX + "DSASigner$detDSA512");
44            // END android-removed
45
46            addSignatureAlgorithm(provider, "SHA224", "DSA", PREFIX + "DSASigner$dsa224", NISTObjectIdentifiers.dsa_with_sha224);
47            addSignatureAlgorithm(provider, "SHA256", "DSA", PREFIX + "DSASigner$dsa256", NISTObjectIdentifiers.dsa_with_sha256);
48            // BEGIN android-removed
49            // addSignatureAlgorithm(provider, "SHA384", "DSA", PREFIX + "DSASigner$dsa384", NISTObjectIdentifiers.dsa_with_sha384);
50            // addSignatureAlgorithm(provider, "SHA512", "DSA", PREFIX + "DSASigner$dsa512", NISTObjectIdentifiers.dsa_with_sha512);
51            // END android-removed
52
53            // BEGIN android-added
54            provider.addAlgorithm("Alg.Alias.Signature.DSA", "SHA1withDSA");
55            // END android-added
56            // BEGIN android-changed
57            provider.addAlgorithm("Alg.Alias.Signature.SHA/DSA", "SHA1withDSA");
58            provider.addAlgorithm("Alg.Alias.Signature.SHA1withDSA", "SHA1withDSA");
59            provider.addAlgorithm("Alg.Alias.Signature.SHA1WITHDSA", "SHA1withDSA");
60            provider.addAlgorithm("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.1", "SHA1withDSA");
61            provider.addAlgorithm("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.3", "SHA1withDSA");
62            provider.addAlgorithm("Alg.Alias.Signature.DSAwithSHA1", "SHA1withDSA");
63            provider.addAlgorithm("Alg.Alias.Signature.DSAWITHSHA1", "SHA1withDSA");
64            provider.addAlgorithm("Alg.Alias.Signature.SHA1WithDSA", "SHA1withDSA");
65            provider.addAlgorithm("Alg.Alias.Signature.DSAWithSHA1", "SHA1withDSA");
66
67            provider.addAlgorithm("Alg.Alias.Signature.1.2.840.10040.4.3", "SHA1withDSA");
68            // END android-changed
69
70            AsymmetricKeyInfoConverter keyFact = new KeyFactorySpi();
71
72            for (int i = 0; i != DSAUtil.dsaOids.length; i++)
73            {
74                // BEGIN android-changed
75                provider.addAlgorithm("Alg.Alias.Signature." + DSAUtil.dsaOids[i], "SHA1withDSA");
76                // END android-changed
77
78                registerOid(provider, DSAUtil.dsaOids[i], "DSA", keyFact);
79                registerOidAlgorithmParameters(provider, DSAUtil.dsaOids[i], "DSA");
80            }
81        }
82    }
83}
84