You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
package com.fr.third.org.bouncycastle.jcajce.util;
|
|
|
|
|
|
|
|
import java.security.Provider;
|
|
|
|
import java.security.Security;
|
|
|
|
|
|
|
|
import com.fr.third.org.bouncycastle.jce.provider.BouncyCastleProvider;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A JCA/JCE helper that refers to the BC provider for all it's needs.
|
|
|
|
*/
|
|
|
|
public class BCJcaJceHelper
|
|
|
|
extends ProviderJcaJceHelper
|
|
|
|
{
|
|
|
|
private static volatile Provider bcProvider;
|
|
|
|
|
|
|
|
private static synchronized Provider getBouncyCastleProvider()
|
|
|
|
{
|
|
|
|
// [BouncyCastle]
|
|
|
|
final Provider system = Security.getProvider("FR_BC");
|
|
|
|
// Avoid using the old, deprecated system BC provider on Android.
|
|
|
|
// See: https://android-developers.googleblog.com/2018/03/cryptography-changes-in-android-p.html
|
|
|
|
if (system instanceof BouncyCastleProvider)
|
|
|
|
{
|
|
|
|
return system;
|
|
|
|
}
|
|
|
|
else if (bcProvider != null)
|
|
|
|
{
|
|
|
|
return bcProvider;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
bcProvider = new BouncyCastleProvider();
|
|
|
|
|
|
|
|
return bcProvider;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public BCJcaJceHelper()
|
|
|
|
{
|
|
|
|
super(getBouncyCastleProvider());
|
|
|
|
}
|
|
|
|
}
|