summaryrefslogtreecommitdiff
path: root/bcprov/src/main/java/org/bouncycastle/jce/provider/BouncyCastleProvider.java
diff options
context:
space:
mode:
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.java41
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)
{