/*
* XAdES4j - A Java library for generation and verification of XAdES signatures.
* Copyright (C) 2010 Luis Goncalves.
*
* XAdES4j is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 3 of the License, or any later version.
*
* XAdES4j 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 XAdES4j. If not, see <http://www.gnu.org/licenses/>.
*/
package xades4j.providers;
import java.security.cert.X509CertSelector;
import java.security.cert.X509Certificate;
import java.util.Collection;
import java.util.Date;
import xades4j.verification.UnexpectedJCAException;
/**
* Provides validation of certificates.
* @see xades4j.providers.impl.PKIXCertificateValidationProvider
* @see xades4j.verification.XadesVerificationProfile
* @author Luís
*/
public interface CertificateValidationProvider
{
/**
*
* @param certSelector the selector of the leaf certificate, created using information
* from a {@code X509Data} element within {@code KeyInfo}
* data on {@code KeyInfo}
* @param validationDate the time for which the validity of the certification path should be determined
* @param otherCerts a set of certificates that can be used to validate the leaf
* certificate, collected from {@code KeyInfo}. May include the certificate
* that will be selected with {@code certSelector}. May be {@code null}
* @return the validation data that validates the certificate selected by {@code certSelector}
* @throws CertificateValidationException if the certificate cannot be validated (see subclasses of the exception)
*/
ValidationData validate(
X509CertSelector certSelector,
Date validationDate,
Collection<X509Certificate> otherCerts) throws CertificateValidationException, UnexpectedJCAException;
}