001// SPDX-FileCopyrightText: 2020 Paul Schaub <vanitasvitae@fsfe.org> 002// 003// SPDX-License-Identifier: Apache-2.0 004 005package org.pgpainless.provider; 006 007import java.security.Provider; 008 009public abstract class ProviderFactory { 010 011 private static ProviderFactory FACTORY; 012 013 protected abstract Provider _getProvider(); 014 protected abstract String _getProviderName(); 015 016 public static void setFactory(ProviderFactory factory) { 017 ProviderFactory.FACTORY = factory; 018 } 019 020 public static ProviderFactory getFactory() { 021 if (FACTORY == null) { 022 FACTORY = new BouncyCastleProviderFactory(); 023 } 024 return FACTORY; 025 } 026 027 public static Provider getProvider() { 028 return ProviderFactory.getFactory()._getProvider(); 029 } 030 031 public static String getProviderName() { 032 return ProviderFactory.getFactory()._getProviderName(); 033 } 034 035}