diff --git a/pgpainless-core/src/main/java/org/pgpainless/provider/BouncyCastleProviderFactory.java b/pgpainless-core/src/main/java/org/pgpainless/provider/BouncyCastleProviderFactory.java new file mode 100644 index 00000000..32e7aaa2 --- /dev/null +++ b/pgpainless-core/src/main/java/org/pgpainless/provider/BouncyCastleProviderFactory.java @@ -0,0 +1,20 @@ +package org.pgpainless.provider; + +import java.security.Provider; + +import org.bouncycastle.jce.provider.BouncyCastleProvider; + +public final class BouncyCastleProviderFactory extends ProviderFactory { + + private static final Provider provider = new BouncyCastleProvider(); + + @Override + public Provider _getProvider() { + return provider; + } + + @Override + public String _getProviderName() { + return _getProvider().getName(); + } +} diff --git a/pgpainless-core/src/main/java/org/pgpainless/provider/ProviderFactory.java b/pgpainless-core/src/main/java/org/pgpainless/provider/ProviderFactory.java new file mode 100644 index 00000000..9030fe46 --- /dev/null +++ b/pgpainless-core/src/main/java/org/pgpainless/provider/ProviderFactory.java @@ -0,0 +1,24 @@ +package org.pgpainless.provider; + +import java.security.Provider; + +public abstract class ProviderFactory { + + private static ProviderFactory FACTORY = new BouncyCastleProviderFactory(); + + protected abstract Provider _getProvider(); + protected abstract String _getProviderName(); + + public static void setFactory(ProviderFactory factory) { + ProviderFactory.FACTORY = factory; + } + + public static Provider getProvider() { + return ProviderFactory.FACTORY._getProvider(); + } + + public static String getProviderName() { + return ProviderFactory.FACTORY._getProviderName(); + } + +} diff --git a/pgpainless-core/src/test/java/org/pgpainless/ProviderFactoryTest.java b/pgpainless-core/src/test/java/org/pgpainless/ProviderFactoryTest.java new file mode 100644 index 00000000..f694d131 --- /dev/null +++ b/pgpainless-core/src/test/java/org/pgpainless/ProviderFactoryTest.java @@ -0,0 +1,14 @@ +package org.pgpainless; + +import static junit.framework.TestCase.assertEquals; + +import org.junit.Test; +import org.pgpainless.provider.ProviderFactory; + +public class ProviderFactoryTest { + + @Test + public void providerFactoryDefaultIsBouncyCastleTest() { + assertEquals("BC", ProviderFactory.getProviderName()); + } +}