116f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giropackage org.bouncycastle.jcajce.provider.asymmetric;
216f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro
316f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giroimport org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
416f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giroimport org.bouncycastle.jcajce.provider.asymmetric.dsa.DSAUtil;
516f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giroimport org.bouncycastle.jcajce.provider.asymmetric.dsa.KeyFactorySpi;
616f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giroimport org.bouncycastle.jcajce.provider.config.ConfigurableProvider;
716f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giroimport org.bouncycastle.jcajce.provider.util.AsymmetricAlgorithmProvider;
816f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giroimport org.bouncycastle.jcajce.provider.util.AsymmetricKeyInfoConverter;
916f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro
1016f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giropublic class DSA
1116f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro{
1216f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro    private static final String PREFIX = "org.bouncycastle.jcajce.provider.asymmetric" + ".dsa.";
1316f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro
1416f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro    public static class Mappings
1516f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro        extends AsymmetricAlgorithmProvider
1616f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro    {
1716f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro        public Mappings()
1816f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro        {
1916f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro        }
2016f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro
2116f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro        public void configure(ConfigurableProvider provider)
2216f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro        {
2316f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro            provider.addAlgorithm("AlgorithmParameters.DSA", PREFIX + "AlgorithmParametersSpi");
2416f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro
2516f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro            provider.addAlgorithm("AlgorithmParameterGenerator.DSA", PREFIX + "AlgorithmParameterGeneratorSpi");
2616f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro
2716f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro            provider.addAlgorithm("KeyPairGenerator.DSA", PREFIX + "KeyPairGeneratorSpi");
2816f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro            provider.addAlgorithm("KeyFactory.DSA", PREFIX + "KeyFactorySpi");
2916f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro
30c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // BEGIN android-changed
31c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            provider.addAlgorithm("Signature.SHA1withDSA", PREFIX + "DSASigner$stdDSA");
32c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // END android-changed
3316f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro            provider.addAlgorithm("Signature.NONEWITHDSA", PREFIX + "DSASigner$noneDSA");
3416f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro
3516f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro            provider.addAlgorithm("Alg.Alias.Signature.RAWDSA", "NONEWITHDSA");
3616f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro
37c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // BEGIN android-removed
38c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // provider.addAlgorithm("Signature.DETDSA", PREFIX + "DSASigner$detDSA");
39c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // provider.addAlgorithm("Signature.SHA1WITHDETDSA", PREFIX + "DSASigner$detDSA");
40c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // provider.addAlgorithm("Signature.SHA224WITHDETDSA", PREFIX + "DSASigner$detDSA224");
41c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // provider.addAlgorithm("Signature.SHA256WITHDETDSA", PREFIX + "DSASigner$detDSA256");
42c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // provider.addAlgorithm("Signature.SHA384WITHDETDSA", PREFIX + "DSASigner$detDSA384");
43c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // provider.addAlgorithm("Signature.SHA512WITHDETDSA", PREFIX + "DSASigner$detDSA512");
447dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro
457dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // provider.addAlgorithm("Signature.DDSA", PREFIX + "DSASigner$detDSA");
467dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // provider.addAlgorithm("Signature.SHA1WITHDDSA", PREFIX + "DSASigner$detDSA");
477dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // provider.addAlgorithm("Signature.SHA224WITHDDSA", PREFIX + "DSASigner$detDSA224");
487dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // provider.addAlgorithm("Signature.SHA256WITHDDSA", PREFIX + "DSASigner$detDSA256");
497dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // provider.addAlgorithm("Signature.SHA384WITHDDSA", PREFIX + "DSASigner$detDSA384");
507dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // provider.addAlgorithm("Signature.SHA512WITHDDSA", PREFIX + "DSASigner$detDSA512");
517dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // provider.addAlgorithm("Signature.SHA3-224WITHDDSA", PREFIX + "DSASigner$detDSASha3_224");
527dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // provider.addAlgorithm("Signature.SHA3-256WITHDDSA", PREFIX + "DSASigner$detDSASha3_256");
537dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // provider.addAlgorithm("Signature.SHA3-384WITHDDSA", PREFIX + "DSASigner$detDSASha3_384");
547dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // provider.addAlgorithm("Signature.SHA3-512WITHDDSA", PREFIX + "DSASigner$detDSASha3_512");
55c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // END android-removed
5680261dd2d1824bb3862e90e77a5412d56ad88b1fSergio Giro
5716f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro            addSignatureAlgorithm(provider, "SHA224", "DSA", PREFIX + "DSASigner$dsa224", NISTObjectIdentifiers.dsa_with_sha224);
5816f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro            addSignatureAlgorithm(provider, "SHA256", "DSA", PREFIX + "DSASigner$dsa256", NISTObjectIdentifiers.dsa_with_sha256);
59c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // BEGIN android-removed
60c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // addSignatureAlgorithm(provider, "SHA384", "DSA", PREFIX + "DSASigner$dsa384", NISTObjectIdentifiers.dsa_with_sha384);
61c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // addSignatureAlgorithm(provider, "SHA512", "DSA", PREFIX + "DSASigner$dsa512", NISTObjectIdentifiers.dsa_with_sha512);
62c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // END android-removed
6316f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro
64c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // BEGIN android-added
65c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            provider.addAlgorithm("Alg.Alias.Signature.DSA", "SHA1withDSA");
66c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // END android-added
677dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro
687dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // BEGIN android-removed
697dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // addSignatureAlgorithm(provider, "SHA3-224", "DSA", PREFIX + "DSASigner$dsaSha3_224", NISTObjectIdentifiers.id_dsa_with_sha3_224);
707dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // addSignatureAlgorithm(provider, "SHA3-256", "DSA", PREFIX + "DSASigner$dsaSha3_256", NISTObjectIdentifiers.id_dsa_with_sha3_256);
717dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // addSignatureAlgorithm(provider, "SHA3-384", "DSA", PREFIX + "DSASigner$dsaSha3_384", NISTObjectIdentifiers.id_dsa_with_sha3_384);
727dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // addSignatureAlgorithm(provider, "SHA3-512", "DSA", PREFIX + "DSASigner$dsaSha3_512", NISTObjectIdentifiers.id_dsa_with_sha3_512);
737dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro            // END android-removed
747dad97b63c47edea4e3afb374dcd00c7b7a1bdd4Sergio Giro
75c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // BEGIN android-changed
76c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            provider.addAlgorithm("Alg.Alias.Signature.SHA/DSA", "SHA1withDSA");
77c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            provider.addAlgorithm("Alg.Alias.Signature.SHA1withDSA", "SHA1withDSA");
78c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            provider.addAlgorithm("Alg.Alias.Signature.SHA1WITHDSA", "SHA1withDSA");
79c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            provider.addAlgorithm("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.1", "SHA1withDSA");
80c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            provider.addAlgorithm("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.3", "SHA1withDSA");
81c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            provider.addAlgorithm("Alg.Alias.Signature.DSAwithSHA1", "SHA1withDSA");
82c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            provider.addAlgorithm("Alg.Alias.Signature.DSAWITHSHA1", "SHA1withDSA");
83c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            provider.addAlgorithm("Alg.Alias.Signature.SHA1WithDSA", "SHA1withDSA");
84c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            provider.addAlgorithm("Alg.Alias.Signature.DSAWithSHA1", "SHA1withDSA");
85c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // END android-changed
8616f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro
87c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // BEGIN android-removed
88c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // provider.addAlgorithm("Alg.Alias.Signature.1.2.840.10040.4.3", "DSA");
89c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro            // END android-removed
9016f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro
9116f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro            AsymmetricKeyInfoConverter keyFact = new KeyFactorySpi();
9216f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro
9316f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro            for (int i = 0; i != DSAUtil.dsaOids.length; i++)
9416f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro            {
95c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro                // BEGIN android-changed
96c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro                provider.addAlgorithm("Alg.Alias.Signature." + DSAUtil.dsaOids[i], "SHA1withDSA");
97c1040cb5656c3299f1c2d0fe0bd7c44b10466aafSergio Giro                // END android-changed
9816f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro
9916f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro                registerOid(provider, DSAUtil.dsaOids[i], "DSA", keyFact);
100823ad5bac1616941ae772fe6b69560b49c89d7b3Adam Vartanian                registerOidAlgorithmParameterGenerator(provider, DSAUtil.dsaOids[i], "DSA");
10116f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro            }
10216f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro        }
10316f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro    }
10416f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro}
105