Package org.opensaml.xmlsec.impl
Class BasicEncryptionParametersResolver
java.lang.Object
org.opensaml.xmlsec.impl.AbstractSecurityParametersResolver<EncryptionParameters>
org.opensaml.xmlsec.impl.BasicEncryptionParametersResolver
- All Implemented Interfaces:
Resolver<EncryptionParameters,,CriteriaSet> EncryptionParametersResolver
- Direct Known Subclasses:
SAMLMetadataEncryptionParametersResolver
public class BasicEncryptionParametersResolver
extends AbstractSecurityParametersResolver<EncryptionParameters>
implements EncryptionParametersResolver
Basic implementation of
EncryptionParametersResolver.
The following Criterion inputs are supported:
EncryptionConfigurationCriterion- requiredKeyInfoGenerationProfileCriterion- optionalEncryptionOptionalCriterion- optional
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate AlgorithmRegistryThe AlgorithmRegistry used when processing algorithm URIs.private booleanFlag indicating whether the resolver should auto-generate data encryption credentials.private org.slf4j.LoggerLogger. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected booleancheckAndProcessKeyAgreement(EncryptionParameters params, CriteriaSet criteria, Credential credential, List<String> dataEncryptionAlgorithms, List<String> keyTransportAlgorithms) Check for a credential type that implies a key agreement operation, and process if so indicated.protected booleancredentialSupportsAlgorithm(Credential credential, String algorithm) Evaluate whether the specified credential is supported for use with the specified algorithm URI.protected CredentialgenerateDataEncryptionCredential(String dataEncryptionAlgorithm) Generate a random data encryption symmetric key credential.Get theAlgorithmRegistryinstance used when resolving algorithm URIs.Get a predicate which evaluates whether a cryptographic algorithm is supported by the runtime environment.getEffectiveDataEncryptionAlgorithms(CriteriaSet criteria, Predicate<String> includeExcludePredicate) Get the effective list of data encryption algorithm URIs to consider, including application of include/exclude policy.protected List<Credential>Get the effective list of data encryption credentials to consider.protected KeyAgreementEncryptionConfigurationgetEffectiveKeyAgreementConfiguration(CriteriaSet criteria, Credential credential) Get the effectiveKeyAgreementEncryptionConfigurationto use with the specified credential.getEffectiveKeyTransportAlgorithms(CriteriaSet criteria, Predicate<String> includeExcludePredicate) Get the effective list of key transport algorithm URIs to consider, including application of include/exclude policy.protected List<Credential>Get the effective list of key transport credentials to consider.getIncludeExcludePredicate(CriteriaSet criteria) Get a predicate which implements the effective configured include/exclude policy.booleanGet whether an this resolver should auto-generate data encryption credentials.protected booleanisDataEncryptionAlgorithm(String algorithm) Evaluate whether the specified algorithm is a data encryption algorithm.protected booleanisKeyTransportAlgorithm(String algorithm) Evaluate whether the specified algorithm is a key transport algorithm.protected voidlogResult(EncryptionParameters params) Log the resolved parameters.protected voidpopulateRSAOAEPParams(RSAOAEPParameters rsaParams, CriteriaSet criteria, Predicate<String> includeExcludePredicate) Populate an instance ofRSAOAEPParametersbased on data from the supplied instances ofEncryptionConfiguration.protected voidAuto-generate and populate a data encryption credential, if configured and required conditions are met.resolve(CriteriaSet criteria) protected voidresolveAndPopulateCredentialsAndAlgorithms(EncryptionParameters params, CriteriaSet criteria, Predicate<String> includeExcludePredicate) Resolve and populate the data encryption and key transport credentials and algorithm URIs.protected voidresolveAndPopulateRSAOAEPParams(EncryptionParameters params, CriteriaSet criteria, Predicate<String> includeExcludePredicate) Resolve and populate an instance ofRSAOAEPParameters, if appropriate for the selected key transport encryption algorithm.protected StringresolveDataEncryptionAlgorithm(Credential dataEncryptionCredential, List<String> dataEncryptionAlgorithms) Determine the data encryption algorithm URI, considering the optionally specified data encryption credential.protected StringresolveDataEncryptionAlgorithm(Credential dataEncryptionCredential, CriteriaSet criteria, Predicate<String> includeExcludePredicate) Determine the data encryption algorithm URI to use with the specified data encryption credential.protected KeyInfoGeneratorresolveDataKeyInfoGenerator(CriteriaSet criteria, Credential dataEncryptionCredential) Resolve and return theKeyInfoGeneratorinstance to use with the specified data encryption credential.protected StringresolveKeyTransportAlgorithm(Credential keyTransportCredential, List<String> keyTransportAlgorithms, String dataEncryptionAlgorithm, KeyTransportAlgorithmPredicate keyTransportPredicate) Determine the key transport encryption algorithm URI to use with the specified key transport credential and optional data encryption algorithm URI.protected StringresolveKeyTransportAlgorithm(Credential keyTransportCredential, CriteriaSet criteria, Predicate<String> includeExcludePredicate, String dataEncryptionAlgorithm) Determine the key transport algorithm URI to use with the specified credential.protected KeyTransportAlgorithmPredicateResolve the optional effectively configured instance ofKeyTransportAlgorithmPredicateto use.protected KeyInfoGeneratorresolveKeyTransportKeyInfoGenerator(CriteriaSet criteria, Credential keyTransportEncryptionCredential) Resolve and return theKeyInfoGeneratorinstance to use with the specified key transport credential.resolveSingle(CriteriaSet criteria) voidsetAlgorithmRegistry(AlgorithmRegistry registry) Set theAlgorithmRegistryinstance used when resolving algorithm URIs.voidsetAutoGenerateDataEncryptionCredential(boolean flag) Set whether an this resolver should auto-generate data encryption credentials.protected booleanvalidate(EncryptionParameters params, boolean encryptionOptional) Validate that theEncryptionParametersinstance has all the required properties populated.Methods inherited from class org.opensaml.xmlsec.impl.AbstractSecurityParametersResolver
lookupKeyInfoGenerator, resolveAndPopulateIncludesExcludes, resolveEffectiveExcludes, resolveEffectiveIncludes, resolveIncludeExcludePrecedence, resolveIncludeExcludePredicate
-
Field Details
-
log
@Nonnull private org.slf4j.Logger logLogger. -
algorithmRegistry
The AlgorithmRegistry used when processing algorithm URIs. -
autoGenerateDataEncryptionCredential
private boolean autoGenerateDataEncryptionCredentialFlag indicating whether the resolver should auto-generate data encryption credentials.
-
-
Constructor Details
-
BasicEncryptionParametersResolver
public BasicEncryptionParametersResolver()Constructor.
-
-
Method Details
-
getAlgorithmRegistry
Get theAlgorithmRegistryinstance used when resolving algorithm URIs. Defaults to the registry resolved viaAlgorithmSupport.getGlobalAlgorithmRegistry().- Returns:
- the algorithm registry instance
-
setAlgorithmRegistry
Set theAlgorithmRegistryinstance used when resolving algorithm URIs. Defaults to the registry resolved viaAlgorithmSupport.getGlobalAlgorithmRegistry().- Parameters:
registry- the new algorithm registry instance
-
isAutoGenerateDataEncryptionCredential
public boolean isAutoGenerateDataEncryptionCredential()Get whether an this resolver should auto-generate data encryption credentials.- Returns:
- true if should auto-generate, false otherwise
-
setAutoGenerateDataEncryptionCredential
public void setAutoGenerateDataEncryptionCredential(boolean flag) Set whether an this resolver should auto-generate data encryption credentials.- Parameters:
flag- true if should auto-generate, false otherwise
-
logResult
Log the resolved parameters.- Parameters:
params- the resolved param
-
validate
Validate that theEncryptionParametersinstance has all the required properties populated.- Parameters:
params- the parameters instance to evaluateencryptionOptional- whether to consider invalid parameters to be a problem- Returns:
- true if parameters instance passes validation, false otherwise
- Since:
- 3.3.0
-
resolveKeyTransportAlgorithm
@Nullable protected String resolveKeyTransportAlgorithm(@Nonnull Credential keyTransportCredential, @Nonnull List<String> keyTransportAlgorithms, @Nullable String dataEncryptionAlgorithm, @Nullable KeyTransportAlgorithmPredicate keyTransportPredicate) Determine the key transport encryption algorithm URI to use with the specified key transport credential and optional data encryption algorithm URI.- Parameters:
keyTransportCredential- the key transport credential being evaluatedkeyTransportAlgorithms- the list of effective key transport algorithms to evaluatedataEncryptionAlgorithm- the optional data encryption algorithm URI to considerkeyTransportPredicate- the optional key transport algorithm predicate to evaluate- Returns:
- the resolved algorithm URI, may be null
-
resolveDataEncryptionAlgorithm
@Nullable protected String resolveDataEncryptionAlgorithm(@Nullable Credential dataEncryptionCredential, @Nonnull List<String> dataEncryptionAlgorithms) Determine the data encryption algorithm URI, considering the optionally specified data encryption credential.- Parameters:
dataEncryptionCredential- the data encryption credential being evaluated, may be nulldataEncryptionAlgorithms- the list of effective data encryption algorithms to evaluate- Returns:
- the resolved algorithm URI, may be null
-
getAlgorithmRuntimeSupportedPredicate
Get a predicate which evaluates whether a cryptographic algorithm is supported by the runtime environment.- Returns:
- the predicate
-
credentialSupportsAlgorithm
protected boolean credentialSupportsAlgorithm(@Nonnull Credential credential, @Nonnull @NotEmpty String algorithm) Evaluate whether the specified credential is supported for use with the specified algorithm URI.- Parameters:
credential- the credential to evaluatealgorithm- the algorithm URI to evaluate- Returns:
- true if credential may be used with the supplied algorithm URI, false otherwise
-
isKeyTransportAlgorithm
Evaluate whether the specified algorithm is a key transport algorithm.- Parameters:
algorithm- the algorithm URI to evaluate- Returns:
- true if is a key transport algorithm URI, false otherwise
-
isDataEncryptionAlgorithm
Evaluate whether the specified algorithm is a data encryption algorithm.- Parameters:
algorithm- the algorithm URI to evaluate- Returns:
- true if is a key transport algorithm URI, false otherwise
-
generateDataEncryptionCredential
@Nullable protected Credential generateDataEncryptionCredential(@Nonnull String dataEncryptionAlgorithm) Generate a random data encryption symmetric key credential.- Parameters:
dataEncryptionAlgorithm- the data encryption algorithm URI- Returns:
- the generated credential, or null if there was a problem generating a key from the algorithm URI
-
processDataEncryptionCredentialAutoGeneration
Auto-generate and populate a data encryption credential, if configured and required conditions are met.- Parameters:
params- the encryption parameters instance to process
-