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.LoggerClass logger.private PKIXValidationOptionsOptions influencing processing behavior.private X500DNHandlerResponsible for parsing and serializing X.500 names to/fromX500Principalinstances. -
Constructor Summary
ConstructorsConstructorDescriptionConstructor.CertPathPKIXTrustEvaluator(PKIXValidationOptions newOptions) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddCRLsToStoreMaterial(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 CertStorebuildCertStore(PKIXValidationInformation validationInfo, X509Credential untrustedCredential) Creates the certificate store that will be used during validation.protected TrustAnchorBuild a trust anchor from the given X509 certificate.protected IntegergetEffectiveVerificationDepth(PKIXValidationInformation validationInfo) Get the effective maximum path depth to use when constructing PKIX cert path builder parameters.protected PKIXBuilderParametersgetPKIXBuilderParameters(PKIXValidationInformation validationInfo, X509Credential untrustedCredential) Creates the set of PKIX builder parameters to use when building the cert path builder.Get thePKIXValidationOptionsinstance 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 voidlogCertPathDebug(PKIXCertPathBuilderResult buildResult, X509Certificate targetCert) Log information from the constructed cert path at level debug.voidsetPKIXValidationOptions(PKIXValidationOptions newOptions) Set the desired PKIX validation options set.voidsetX500DNHandler(X500DNHandler handler) Set the handler which process X.500 distinguished names.protected booleanstoreContainsCRLs(CertStore certStore) Determine whether there are any CRL's in theCertStorethat is to be used.booleanvalidate(PKIXValidationInformation validationInfo, X509Credential untrustedCredential) Validate the specified credential against the specified set of trusted validation information.
-
Field Details
-
log
@Nonnull private final org.slf4j.Logger logClass logger. -
x500DNHandler
Responsible for parsing and serializing X.500 names to/fromX500Principalinstances. -
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 thePKIXValidationOptionsinstance that is in use.- Specified by:
getPKIXValidationOptionsin 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:
validatein 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
@Nonnull 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 theCertStorethat 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
-