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}