Package org.opensaml.security.x509.impl
Class CertPathPKIXTrustEvaluator
java.lang.Object
org.opensaml.security.x509.impl.CertPathPKIXTrustEvaluator
- All Implemented Interfaces:
PKIXTrustEvaluator
An implementation of
PKIXTrustEvaluator
that is based on the Java CertPath API.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final org.slf4j.Logger
Class logger.private PKIXValidationOptions
Options influencing processing behavior.private X500DNHandler
Responsible for parsing and serializing X.500 names to/fromX500Principal
instances. -
Constructor Summary
ConstructorsConstructorDescriptionConstructor.CertPathPKIXTrustEvaluator
(PKIXValidationOptions newOptions) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
addCRLsToStoreMaterial
(List<Object> storeMaterial, Collection<X509CRL> crls, Date now) Add CRLs from the specified collection to the list of certs and CRLs being collected for the CertStore.protected CertStore
buildCertStore
(PKIXValidationInformation validationInfo, X509Credential untrustedCredential) Creates the certificate store that will be used during validation.protected TrustAnchor
Build a trust anchor from the given X509 certificate.protected Integer
getEffectiveVerificationDepth
(PKIXValidationInformation validationInfo) Get the effective maximum path depth to use when constructing PKIX cert path builder parameters.protected PKIXBuilderParameters
getPKIXBuilderParameters
(PKIXValidationInformation validationInfo, X509Credential untrustedCredential) Creates the set of PKIX builder parameters to use when building the cert path builder.Get thePKIXValidationOptions
instance that is in use.protected Set<TrustAnchor>
getTrustAnchors
(PKIXValidationInformation validationInfo) Creates the collection of trust anchors to use during validation.Get the handler which process X.500 distinguished names.private void
logCertPathDebug
(PKIXCertPathBuilderResult buildResult, X509Certificate targetCert) Log information from the constructed cert path at level debug.void
setPKIXValidationOptions
(PKIXValidationOptions newOptions) Set the desired PKIX validation options set.void
setX500DNHandler
(X500DNHandler handler) Set the handler which process X.500 distinguished names.protected boolean
storeContainsCRLs
(CertStore certStore) Determine whether there are any CRL's in theCertStore
that is to be used.boolean
validate
(PKIXValidationInformation validationInfo, X509Credential untrustedCredential) Validate the specified credential against the specified set of trusted validation information.
-
Field Details
-
log
private final org.slf4j.Logger logClass logger. -
x500DNHandler
Responsible for parsing and serializing X.500 names to/fromX500Principal
instances. -
options
Options influencing processing behavior.
-
-
Constructor Details
-
CertPathPKIXTrustEvaluator
public CertPathPKIXTrustEvaluator()Constructor. -
CertPathPKIXTrustEvaluator
public CertPathPKIXTrustEvaluator(@Nonnull @ParameterName(name="newOptions") PKIXValidationOptions newOptions) Constructor.- Parameters:
newOptions
- PKIX validation options
-
-
Method Details
-
getPKIXValidationOptions
Get thePKIXValidationOptions
instance that is in use.- Specified by:
getPKIXValidationOptions
in interfacePKIXTrustEvaluator
- Returns:
- the PKIXValidationOptions instance
-
setPKIXValidationOptions
Set the desired PKIX validation options set.- Parameters:
newOptions
- the new set of options
-
getX500DNHandler
Get the handler which process X.500 distinguished names. Defaults toInternalX500DNHandler
.- Returns:
- returns the X500DNHandler instance
-
setX500DNHandler
Set the handler which process X.500 distinguished names. Defaults toInternalX500DNHandler
.- Parameters:
handler
- the new X500DNHandler instance
-
validate
public boolean validate(@Nonnull PKIXValidationInformation validationInfo, @Nonnull X509Credential untrustedCredential) throws SecurityException Validate the specified credential against the specified set of trusted validation information.- Specified by:
validate
in interfacePKIXTrustEvaluator
- Parameters:
validationInfo
- the set of trusted validation informationuntrustedCredential
- the credential being evaluated- Returns:
- true if the credential can be successfully evaluated, false otherwise
- Throws:
SecurityException
- thrown if there is an error evaluating the credential
-
getPKIXBuilderParameters
protected PKIXBuilderParameters getPKIXBuilderParameters(@Nonnull PKIXValidationInformation validationInfo, @Nonnull X509Credential untrustedCredential) throws GeneralSecurityException Creates the set of PKIX builder parameters to use when building the cert path builder.- Parameters:
validationInfo
- PKIX validation informationuntrustedCredential
- credential to be validated- Returns:
- PKIX builder params
- Throws:
GeneralSecurityException
- thrown if the parameters can not be created
-
storeContainsCRLs
Determine whether there are any CRL's in theCertStore
that is to be used.- Parameters:
certStore
- the cert store that will be used for validation- Returns:
- true iff the store contains at least 1 CRL instance
-
getEffectiveVerificationDepth
@Nonnull protected Integer getEffectiveVerificationDepth(@Nonnull PKIXValidationInformation validationInfo) Get the effective maximum path depth to use when constructing PKIX cert path builder parameters.- Parameters:
validationInfo
- PKIX validation information- Returns:
- the effective max verification depth to use
-
getTrustAnchors
@Nullable protected Set<TrustAnchor> getTrustAnchors(@Nonnull PKIXValidationInformation validationInfo) Creates the collection of trust anchors to use during validation.- Parameters:
validationInfo
- PKIX validation information- Returns:
- trust anchors to use during validation
-
buildTrustAnchor
Build a trust anchor from the given X509 certificate. This could for example be extended by subclasses to add custom name constraints, if desired.- Parameters:
cert
- the certificate which serves as the trust anchor- Returns:
- the newly constructed TrustAnchor
-
buildCertStore
@Nonnull protected CertStore buildCertStore(@Nonnull PKIXValidationInformation validationInfo, @Nonnull X509Credential untrustedCredential) throws GeneralSecurityException Creates the certificate store that will be used during validation.- Parameters:
validationInfo
- PKIX validation informationuntrustedCredential
- credential to be validated- Returns:
- certificate store used during validation
- Throws:
GeneralSecurityException
- thrown if the certificate store can not be created from the cert and CRL material
-
addCRLsToStoreMaterial
protected void addCRLsToStoreMaterial(@Nonnull List<Object> storeMaterial, @Nonnull Collection<X509CRL> crls, @Nonnull Date now) Add CRLs from the specified collection to the list of certs and CRLs being collected for the CertStore.- Parameters:
storeMaterial
- list of certs and CRLs to be updated.crls
- collection of CRLs to be processednow
- current date/time
-
logCertPathDebug
private void logCertPathDebug(@Nonnull PKIXCertPathBuilderResult buildResult, @Nonnull X509Certificate targetCert) Log information from the constructed cert path at level debug.- Parameters:
buildResult
- the PKIX cert path builder result containing the cert path and trust anchortargetCert
- the cert untrusted certificate that was being evaluated
-