TrustValidatorDecorator.java
- /*
- * Java Trust Project.
- * Copyright (C) 2011 FedICT.
- * Copyright (C) 2014-2023 e-Contract.be BV.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License version
- * 3.0 as published by the Free Software Foundation.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, see
- * http://www.gnu.org/licenses/.
- */
- package be.fedict.trust;
- import be.fedict.trust.crl.CachedCrlRepository;
- import be.fedict.trust.crl.CrlRepository;
- import be.fedict.trust.crl.CrlTrustLinker;
- import be.fedict.trust.crl.OnlineCrlRepository;
- import be.fedict.trust.ext.CriticalExtensionTrustLinker;
- import be.fedict.trust.linker.AlwaysTrustTrustLinker;
- import be.fedict.trust.linker.FallbackTrustLinker;
- import be.fedict.trust.linker.PublicKeyTrustLinker;
- import be.fedict.trust.linker.TrustLinker;
- import be.fedict.trust.ocsp.OcspTrustLinker;
- import be.fedict.trust.ocsp.OnlineOcspRepository;
- /**
- * Trust Validator Decorator. This class helps to configure trust validators.
- *
- * @author Frank Cornelis
- *
- */
- public class TrustValidatorDecorator {
- private final NetworkConfig networkConfig;
- /**
- * Main constructor.
- *
- * @param networkConfig the network configuration to be used. Can be
- * <code>null</code> .
- */
- public TrustValidatorDecorator(NetworkConfig networkConfig) {
- this.networkConfig = networkConfig;
- }
- /**
- * Convenience constructor.
- */
- public TrustValidatorDecorator() {
- this(null);
- }
- /**
- * Adds a default trust linker configuration to a given trust validator.
- *
- * @param trustValidator the trust validator to be configured.
- * @param externalTrustLinker optional additional trust linker.
- */
- public void addDefaultTrustLinkerConfig(TrustValidator trustValidator, TrustLinker externalTrustLinker) {
- addDefaultTrustLinkerConfig(trustValidator, externalTrustLinker, false);
- }
- /**
- * Adds a default trust linker configuration to a given trust validator.
- *
- * @param trustValidator the trust validator to be configured.
- * @param externalTrustLinker optional additional trust linker.
- * @param noOcsp set to <code>true</code> to avoid OCSP validation.
- */
- public void addDefaultTrustLinkerConfig(TrustValidator trustValidator, TrustLinker externalTrustLinker,
- boolean noOcsp) {
- addDefaultTrustLinkerConfig(trustValidator, externalTrustLinker, noOcsp, null);
- }
- /**
- * Adds a default trust linker configuration to a given trust validator.
- *
- * @param trustValidator the trust validator to be configured.
- * @param externalTrustLinker optional additional trust linker.
- * @param noOcsp set to <code>true</code> to avoid OCSP validation.
- * @param crlRepository the optional CRL repository to use.
- */
- public void addDefaultTrustLinkerConfig(TrustValidator trustValidator, TrustLinker externalTrustLinker,
- boolean noOcsp, CrlRepository crlRepository) {
- trustValidator.addTrustLinker(new PublicKeyTrustLinker());
- trustValidator.addTrustLinker(new CriticalExtensionTrustLinker());
- OnlineOcspRepository ocspRepository = new OnlineOcspRepository(this.networkConfig);
- if (null == crlRepository) {
- OnlineCrlRepository onlineCrlRepository = new OnlineCrlRepository(this.networkConfig);
- crlRepository = new CachedCrlRepository(onlineCrlRepository);
- }
- FallbackTrustLinker fallbackTrustLinker = new FallbackTrustLinker();
- if (null != externalTrustLinker) {
- fallbackTrustLinker.addTrustLinker(externalTrustLinker);
- }
- if (false == noOcsp) {
- fallbackTrustLinker.addTrustLinker(new OcspTrustLinker(ocspRepository));
- }
- fallbackTrustLinker.addTrustLinker(new CrlTrustLinker(crlRepository));
- trustValidator.addTrustLinker(fallbackTrustLinker);
- }
- /**
- * Adds a default trust linker configuration to a given trust validator.
- *
- * @param trustValidator the trust validator to be configured.
- */
- public void addDefaultTrustLinkerConfig(TrustValidator trustValidator) {
- addDefaultTrustLinkerConfig(trustValidator, null);
- }
- /**
- * Adds a trust linker configuration to be used to validate already expired
- * certificates. Please notice that this configuration will not perform any
- * verification on the revocation status of the certificates.
- *
- * @param trustValidator the trust validator to be configured.
- */
- public void addTrustLinkerConfigWithoutRevocationStatus(TrustValidator trustValidator) {
- trustValidator.addTrustLinker(new PublicKeyTrustLinker(true));
- trustValidator.addTrustLinker(new AlwaysTrustTrustLinker());
- trustValidator.addTrustLinker(new CriticalExtensionTrustLinker());
- }
- }