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: Change primary ID from DSA to SHA1withDSA 31 // provider.addAlgorithm("Signature.DSA", PREFIX + "DSASigner$stdDSA"); 32 provider.addAlgorithm("Signature.SHA1withDSA", PREFIX + "DSASigner$stdDSA"); 33 provider.addAlgorithm("Alg.Alias.Signature.DSA", "SHA1withDSA"); 34 // END Android-changed: Change primary ID from DSA to SHA1withDSA 35 provider.addAlgorithm("Signature.NONEWITHDSA", PREFIX + "DSASigner$noneDSA"); 36 37 provider.addAlgorithm("Alg.Alias.Signature.RAWDSA", "NONEWITHDSA"); 38 39 // BEGIN Android-removed: Unsupported algorithms 40 /* 41 provider.addAlgorithm("Signature.DETDSA", PREFIX + "DSASigner$detDSA"); 42 provider.addAlgorithm("Signature.SHA1WITHDETDSA", PREFIX + "DSASigner$detDSA"); 43 provider.addAlgorithm("Signature.SHA224WITHDETDSA", PREFIX + "DSASigner$detDSA224"); 44 provider.addAlgorithm("Signature.SHA256WITHDETDSA", PREFIX + "DSASigner$detDSA256"); 45 provider.addAlgorithm("Signature.SHA384WITHDETDSA", PREFIX + "DSASigner$detDSA384"); 46 provider.addAlgorithm("Signature.SHA512WITHDETDSA", PREFIX + "DSASigner$detDSA512"); 47 48 provider.addAlgorithm("Signature.DDSA", PREFIX + "DSASigner$detDSA"); 49 provider.addAlgorithm("Signature.SHA1WITHDDSA", PREFIX + "DSASigner$detDSA"); 50 provider.addAlgorithm("Signature.SHA224WITHDDSA", PREFIX + "DSASigner$detDSA224"); 51 provider.addAlgorithm("Signature.SHA256WITHDDSA", PREFIX + "DSASigner$detDSA256"); 52 provider.addAlgorithm("Signature.SHA384WITHDDSA", PREFIX + "DSASigner$detDSA384"); 53 provider.addAlgorithm("Signature.SHA512WITHDDSA", PREFIX + "DSASigner$detDSA512"); 54 provider.addAlgorithm("Signature.SHA3-224WITHDDSA", PREFIX + "DSASigner$detDSASha3_224"); 55 provider.addAlgorithm("Signature.SHA3-256WITHDDSA", PREFIX + "DSASigner$detDSASha3_256"); 56 provider.addAlgorithm("Signature.SHA3-384WITHDDSA", PREFIX + "DSASigner$detDSASha3_384"); 57 provider.addAlgorithm("Signature.SHA3-512WITHDDSA", PREFIX + "DSASigner$detDSASha3_512"); 58 */ 59 // END Android-removed: Unsupported algorithms 60 61 addSignatureAlgorithm(provider, "SHA224", "DSA", PREFIX + "DSASigner$dsa224", NISTObjectIdentifiers.dsa_with_sha224); 62 addSignatureAlgorithm(provider, "SHA256", "DSA", PREFIX + "DSASigner$dsa256", NISTObjectIdentifiers.dsa_with_sha256); 63 // BEGIN Android-removed: Unsupported algorithms 64 /* 65 addSignatureAlgorithm(provider, "SHA384", "DSA", PREFIX + "DSASigner$dsa384", NISTObjectIdentifiers.dsa_with_sha384); 66 addSignatureAlgorithm(provider, "SHA512", "DSA", PREFIX + "DSASigner$dsa512", NISTObjectIdentifiers.dsa_with_sha512); 67 68 addSignatureAlgorithm(provider, "SHA3-224", "DSA", PREFIX + "DSASigner$dsaSha3_224", NISTObjectIdentifiers.id_dsa_with_sha3_224); 69 addSignatureAlgorithm(provider, "SHA3-256", "DSA", PREFIX + "DSASigner$dsaSha3_256", NISTObjectIdentifiers.id_dsa_with_sha3_256); 70 addSignatureAlgorithm(provider, "SHA3-384", "DSA", PREFIX + "DSASigner$dsaSha3_384", NISTObjectIdentifiers.id_dsa_with_sha3_384); 71 addSignatureAlgorithm(provider, "SHA3-512", "DSA", PREFIX + "DSASigner$dsaSha3_512", NISTObjectIdentifiers.id_dsa_with_sha3_512); 72 */ 73 // END Android-removed: Unsupported algorithms 74 75 // BEGIN Android-changed: Change primary ID from DSA to SHA1withDSA 76 provider.addAlgorithm("Alg.Alias.Signature.SHA/DSA", "SHA1withDSA"); 77 provider.addAlgorithm("Alg.Alias.Signature.SHA1withDSA", "SHA1withDSA"); 78 provider.addAlgorithm("Alg.Alias.Signature.SHA1WITHDSA", "SHA1withDSA"); 79 provider.addAlgorithm("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.1", "SHA1withDSA"); 80 provider.addAlgorithm("Alg.Alias.Signature.1.3.14.3.2.26with1.2.840.10040.4.3", "SHA1withDSA"); 81 provider.addAlgorithm("Alg.Alias.Signature.DSAwithSHA1", "SHA1withDSA"); 82 provider.addAlgorithm("Alg.Alias.Signature.DSAWITHSHA1", "SHA1withDSA"); 83 provider.addAlgorithm("Alg.Alias.Signature.SHA1WithDSA", "SHA1withDSA"); 84 provider.addAlgorithm("Alg.Alias.Signature.DSAWithSHA1", "SHA1withDSA"); 85 // END Android-changed: Change primary ID from DSA to SHA1withDSA 86 87 // BEGIN Android-removed: Unsupported algorithms 88 // provider.addAlgorithm("Alg.Alias.Signature.1.2.840.10040.4.3", "DSA"); 89 // END Android-removed: Unsupported algorithms 90 91 AsymmetricKeyInfoConverter keyFact = new KeyFactorySpi(); 92 93 for (int i = 0; i != DSAUtil.dsaOids.length; i++) 94 { 95 // BEGIN Android-changed: Change primary ID from DSA to SHA1withDSA 96 provider.addAlgorithm("Alg.Alias.Signature." + DSAUtil.dsaOids[i], "SHA1withDSA"); 97 // END Android-changed: Change primary ID from DSA to SHA1withDSA 98 99 registerOid(provider, DSAUtil.dsaOids[i], "DSA", keyFact); 100 registerOidAlgorithmParameterGenerator(provider, DSAUtil.dsaOids[i], "DSA"); 101 } 102 } 103 } 104} 105