diff options
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/jce/provider/BouncyCastleProvider.java')
-rw-r--r-- | bcprov/src/main/java/org/bouncycastle/jce/provider/BouncyCastleProvider.java | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/jce/provider/BouncyCastleProvider.java b/bcprov/src/main/java/org/bouncycastle/jce/provider/BouncyCastleProvider.java index 00f23e8d..6a7c9e62 100644 --- a/bcprov/src/main/java/org/bouncycastle/jce/provider/BouncyCastleProvider.java +++ b/bcprov/src/main/java/org/bouncycastle/jce/provider/BouncyCastleProvider.java @@ -44,7 +44,7 @@ import org.bouncycastle.jcajce.provider.util.AsymmetricKeyInfoConverter; public final class BouncyCastleProvider extends Provider implements ConfigurableProvider { - private static String info = "BouncyCastle Security Provider v1.54"; + private static String info = "BouncyCastle Security Provider v1.56"; public static final String PROVIDER_NAME = "BC"; @@ -59,13 +59,15 @@ public final class BouncyCastleProvider extends Provider private static final String[] SYMMETRIC_GENERIC = { - "PBEPBKDF2", "PBEPKCS12" + // BEGIN android-changed + // Was: "PBEPBKDF2", "TLSKDF" + "PBEPBKDF2", "PBEPKCS12", "PBES2AlgorithmParameters" }; private static final String[] SYMMETRIC_MACS = { // BEGIN android-removed - // "SipHash" + // "SipHash", "Poly1305" // END android-removed }; @@ -130,9 +132,19 @@ public final class BouncyCastleProvider extends Provider private static final String KEYSTORE_PACKAGE = "org.bouncycastle.jcajce.provider.keystore."; private static final String[] KEYSTORES = { - "BC", "PKCS12" + "BC", "BCFKS", "PKCS12" }; + // BEGIN android-removed + // /* + // * Configurable secure random + // */ + // private static final String SECURE_RANDOM_PACKAGE = "org.bouncycastle.jcajce.provider.drbg."; + // private static final String[] SECURE_RANDOMS = + // { + // "DRBG" + // }; + /** * Construct a new provider. This should only be required when * using runtime registration of the provider using the @@ -140,7 +152,7 @@ public final class BouncyCastleProvider extends Provider */ public BouncyCastleProvider() { - super(PROVIDER_NAME, 1.54, info); + super(PROVIDER_NAME, 1.56, info); AccessController.doPrivileged(new PrivilegedAction() { @@ -169,6 +181,8 @@ public final class BouncyCastleProvider extends Provider loadAlgorithms(KEYSTORE_PACKAGE, KEYSTORES); // BEGIN android-removed + // loadAlgorithms(SECURE_RANDOM_PACKAGE, SECURE_RANDOMS); + // // // // // X509Store // // @@ -285,13 +299,24 @@ public final class BouncyCastleProvider extends Provider public void addKeyInfoConverter(ASN1ObjectIdentifier oid, AsymmetricKeyInfoConverter keyInfoConverter) { - keyInfoConverters.put(oid, keyInfoConverter); + synchronized (keyInfoConverters) + { + keyInfoConverters.put(oid, keyInfoConverter); + } + } + + private static AsymmetricKeyInfoConverter getAsymmetricKeyInfoConverter(ASN1ObjectIdentifier algorithm) + { + synchronized (keyInfoConverters) + { + return (AsymmetricKeyInfoConverter)keyInfoConverters.get(algorithm); + } } public static PublicKey getPublicKey(SubjectPublicKeyInfo publicKeyInfo) throws IOException { - AsymmetricKeyInfoConverter converter = (AsymmetricKeyInfoConverter)keyInfoConverters.get(publicKeyInfo.getAlgorithm().getAlgorithm()); + AsymmetricKeyInfoConverter converter = getAsymmetricKeyInfoConverter(publicKeyInfo.getAlgorithm().getAlgorithm()); if (converter == null) { @@ -304,7 +329,7 @@ public final class BouncyCastleProvider extends Provider public static PrivateKey getPrivateKey(PrivateKeyInfo privateKeyInfo) throws IOException { - AsymmetricKeyInfoConverter converter = (AsymmetricKeyInfoConverter)keyInfoConverters.get(privateKeyInfo.getPrivateKeyAlgorithm().getAlgorithm()); + AsymmetricKeyInfoConverter converter = getAsymmetricKeyInfoConverter(privateKeyInfo.getPrivateKeyAlgorithm().getAlgorithm()); if (converter == null) { |